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