CftClub.ru
Клуб специалистов ЦФТ-Банк

Проблема с автоматическим созданием платежек

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеВт Авг 19, 2008 09:23   Проблема с автоматическим созданием платежек Ответить с цитатой
Полезность: Нет оценки
Первая операция, которая читает данные из файлика и формирует переменные для операции ::[MAIN_DOCUM].NEW#DOC, потом записывает их значения в справочник.

Вторая операция читает данные из этого справочника и вызывает саму функцию ::[MAIN_DOCUM].NEW#DOC.

Проблема в следующем:
При вызове второй операции под пользователем IBS платежное поручение создается корректно.
При вызове второй операции под некоторым пользователем, в платежку попадает неверное название плательщика (клиента банка).

Как я понимаю, дело в доступе... Доступ к каким объектам необходимо предоставить пользователю?


Последний раз редактировалось: Kozyrev (Вт Авг 19, 2008 12:17), всего редактировалось 1 раз
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Авг 19, 2008 12:05    Ответить с цитатой
Полезность: Нет оценки
Не очень понятно. Наверно, доступ к клиентам или счетам?
Можно привести текст операций?
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеВт Авг 19, 2008 12:16    Ответить с цитатой
Полезность: Нет оценки
Как выяснилось, дело не в доступе....


При вызове функции ::[MAIN_DOCUM].NEW#DOC из моей операции, в платежку попадают реквизиты того клиента, платежку которого вводил операционист вручную чуть ранее. То есть не очищаются какие-то переменные...


Подскажите, что нужно делать при вызове одной операции из другой, чтобы исключить попадание в платежку "старых" значений реквизитов?
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Авг 19, 2008 12:27    Ответить с цитатой
Полезность: Нет оценки
Скорее всего, это отрабатывает хук ::[HOOK].[VARS].ref_hook.[MD_NEW#DOC]. Посмотрите в нем следующие строки, может быть это оно:

Код:
      P#CL_DT_2.[PART] := ::[MAIN_DOCUM].[SBRF_LIB].get_part(null, stdlib.UserId);
      P#CL_KT_2.[PART] := ::[MAIN_DOCUM].[SBRF_LIB].get_part(null, stdlib.UserId);


Операция NEW#DOC вызывается через call?
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеВт Авг 19, 2008 13:39    Ответить с цитатой
Полезность: Нет оценки
Операцию вызываю так
Код:

v_ttt:=::[MAIN_DOCUM].NEW#DOC( ... );


То есть нужно переопредели свой хук...

А что нужно в нем поменять? Интересны причины появления глюка.


Реквизиты отправителя, если он является клиентом банка, это переменная P#CL_DT_1...

P.S. Кстати, поточный ввод в некоторых случаях тоже вставляет не те реквизиты. В ЦФТ зафиксировали несоотвествие и обещали поправить.
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Авг 19, 2008 13:45    Ответить с цитатой
Полезность: Нет оценки
Kozyrev пишет:
Операцию вызываю так
Код:

v_ttt:=::[MAIN_DOCUM].NEW#DOC( ... );


Т.е. документ просто создается? Я то думал, что вызывается форма операции "Новый безналичный документ". Для программного создания документа лучше пользоваться NEW#AUTO или бизнес-операции.
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеВт Авг 19, 2008 14:07    Ответить с цитатой
Полезность: Нет оценки
Документ создается программно.

Если перед вызовом операции пользователь перезаходит в Навигатор, то платежка создается верно.

Может перед вызовом функции в операции нужно что-то очищать?
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Авг 19, 2008 14:43    Ответить с цитатой
Полезность: 2
Попробуйте вместо [MAIN_DOCUM]::[NEW#DOC] использовать [MAIN_DOCUM]::[NEW#AUTO]
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеВт Авг 19, 2008 15:41    Ответить с цитатой
Полезность: Нет оценки
А еще варианты есть?

P.S. Не факт что глюк пропадет... Неизвестна причина...
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеСр Авг 20, 2008 06:35    Ответить с цитатой
Полезность: Нет оценки
Возможно, при использовании NEW#DOC используется сохранение/восстановление каких-либо параметров из контекста пользователя. Обзор дистрибутивных функций показал, что для программного создания документов везде используется NEW#AUTO.
Чего и вам советую.
Kozyrev
Участник - экстремал


Вступление в Клуб: 03.09.2007
СообщениеЧт Авг 21, 2008 17:28    Ответить с цитатой
Полезность: Нет оценки
Цитата:
Для программного создания документа лучше пользоваться NEW#AUTO...

dnk_dz, помогло, спасибо!
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru