Имя: Пароль:
1C
1С v8
Использование &НаКлиенте в 1С
0 gugolovski
 
09.09.21
05:31
Почему при использовании &НаКлиенте

код 1 верный:
&НаКлиенте
Процедура Команда1(Команда)     
    ДополнительнаяПроцедура();
КонецПроцедуры
ПРоцедура ДополнительнаяПроцедура()
    Сообщить(1234);
КонецПроцедуры

//*********************************
код 2 ошибочный:
&НаКлиенте
ПРоцедура ДополнительнаяПроцедура()
    Сообщить(123);
КонецПроцедуры  

Процедура Команда1(Команда)     
    ДополнительнаяПроцедура();
КонецПроцедуры

&НаКлиенте - это метка для конкретной процедуры?
1 hhhh
 
09.09.21
05:35
потому что с сервера нельзя вызывать клиент. напиши

&НаКлиенте
ПРоцедура ДополнительнаяПроцедура()
    Сообщить(123);
КонецПроцедуры  

&НаКлиенте
Процедура Команда1(Команда)    
    ДополнительнаяПроцедура();
КонецПроцедуры
2 MyNick
 
09.09.21
06:18
(0) если модуль формы или клиент северный, нужно писать для каждого метода
3 chelentano
 
09.09.21
06:54
Если нет никакой "метки" - по умолчанию считается, что выполняется на сервере. А с сервера нельзя вызывать клиент
4 RomaH
 
naïve
09.09.21
06:56
(0) если параметр не указан - по умолчанию &НаСервере
&НаКлиенте
Процедура Команда1(Команда)    
    ДополнительнаяПроцедура();
КонецПроцедуры
ПРоцедура ДополнительнаяПроцедура()
    Сообщить(1234);
КонецПроцедуры

то же самое что:
&НаКлиенте
Процедура Команда1(Команда)    
    ДополнительнаяПроцедура();
КонецПроцедуры
&НаСервере
ПРоцедура ДополнительнаяПроцедура()
    Сообщить(1234);
КонецПроцедуры

во втором случае у тебя:
&НаКлиенте
ПРоцедура ДополнительнаяПроцедура()
    Сообщить(123);
КонецПроцедуры  
&НаСервере
Процедура Команда1(Команда)    
    ДополнительнаяПроцедура();
КонецПроцедуры

поэтому хороший тон всегда писать где выполняется процедура
5 fisher
 
09.09.21
09:13
(0) > &НаКлиенте - это метка для конкретной процедуры?
Да. Цитата из справки:
"&НаКлиенте (&AtClient) — определяет клиентскую процедуру (функцию)"