Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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;
все заработало, спасибо! |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|