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

Засада с клиент-скриптом

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


Вступление в Клуб: 06.12.2011
СообщениеЧт Янв 31, 2013 15:43   Засада с клиент-скриптом Ответить с цитатой
Полезность: Нет оценки
Не могу что-то справиться с клиент-скриптом. Прошу помощи уважаемого сообщества...
Есть дистрибутивная операция печати депозита, в расширении оной определяется текущий юзер для подстановки его в первую подпись от банка, и шаблон договора , который надо выдать в зависимости от типа договора депозита и других параметров.
В клиент скрипте подсунула серверную валидацию
CALL Runtime.ServerValidate(nothing, "%VAR%.V_CASTA_1B")
CALL Runtime.ServerValidate(nothing, "%VAR%.V_FILE_NAME")
чтобы перечитались переменные в операции, которую расширяем. Все работает
Call Form1.ScriptServerValidate(Object4, "%VAR%.V_CASTA_1B")
Call Form1.ScriptServerValidate(Object5, "%VAR%.V_FILE_NAME")
тоже срабатывает.

Однако есть дистрибутивная операция EDIT#AUTO Добавить депозитный договор, в которую эта самая Печать депозитного договора подцепляется через PLPCALL
stdio.put_line_buf('<% PLPCALL %THIS%.[PRINT_WRD](P_PRN_OPER => '''||PrnOper||''')%>');
И здесь уже не срабатывает. Отладка показывает, что переменные в расширении пересчитываютсмя, как надо, но в операцию Печать они не попадают. Видимо, не срабатывает вадидация из клиент-скрипта.
Как я понимаю, проблема в том, что подряд вызваны две операции с формами, имя у форм к сожалению, одинаковое (так в дистрибутиве). Можно ли клиент-скрипту как-то указать, что нужно брать форму от конкретной операции, может текущую форму как-то указать подобно this? Можно ли в такой ситуации заставить сработать серверную валидацию операции, вызванной из другой операции?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Янв 31, 2013 16:08    Ответить с цитатой
Полезность: 1
попробовать в проверке расширения ловить
if p_info = '%PLPCALL%' then

и там через [CSMD].Command(V_DEST_STR,
дергать ваш клиент скрипт

чтобы работало,
в расширении в клиент скрипте должен быть запуск исполнения

Public Function Main(LastControl)
Execute V_DEST_STR.TEXT
V_DEST_STR.TEXT = ""

Main = True
End Function


может через клиент скрипт как то проще можно сделать или вообще из расширения напрямую писать в переменные операции [PRINT_WRD].V_FILE_NAME := V_FILE_NAME
bvo
Участник со стажем


Вступление в Клуб: 06.12.2011
СообщениеЧт Янв 31, 2013 16:19    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
попробовать в проверке расширения ловить
if p_info = '%PLPCALL%' then
и там через [CSMD].Command(V_DEST_STR,
дергать ваш клиент скрипт

Спасибо, попробую

vtar пишет:

может вообще из расширения напрямую писать в переменные операции [PRINT_WRD].V_FILE_NAME := V_FILE_NAME

Вот этого не хватает, к сожалению, там от них еще другие переменные зависят , и они опять определяются на те, которые подставляются в дистрибутивной функции, если не подсунуть эмуляцию нажатия клавиши и отправить на валидацию дистрибутивную операцию.
bvo
Участник со стажем


Вступление в Клуб: 06.12.2011
СообщениеПт Фев 01, 2013 09:13    Ответить с цитатой
Полезность: Нет оценки
Проблема оказалась вовсе не в клиент-скрипте. Он работает во всех вариантах, но дистрибутив после отрабатывания расширения и замены переменных идет по ветке
if p_info = '%PLPCALL%'
и все мои изменения опять забивает своими.
bvo
Участник со стажем


Вступление в Клуб: 06.12.2011
СообщениеПт Фев 01, 2013 09:41    Ответить с цитатой
Полезность: Нет оценки
После того, как вставила в ветку
if p_message = 'VALIDATE' and p_info = '%PLPCALL%'
повтор переопределения переменнных
и
p_info := null;
все заработало, спасибо!
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

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