Имя: Пароль:
1C
1С v8
Опять и опять про видимость переменных в управляемом приложении...
0 Eastert
 
07.10.18
11:16
Есть обработка, в модуле объекта обработки хочу, чтобы была переменная, которую будут видеть все процедуры и функции этого модуля. То есть разные процедуры модуля объекта вызываются из обработчиков нажатия разных кнопок формы обработки. Делаю, например, так (Начать() вызывается из процедуры ПриОткрытии формы, а Продолжить() по кнопке на форме):

    Перем МойМассив Экспорт;
    
    Процедура Начать() Экспорт
        МойМассив = Новый Массив();
    КонецПроцедуры
    
    Процедура Продолжить() Экспорт
        МойМассив.Добавить(1); // вот здесь отладка говорит, что МойМассив - Неопределено!
    КонецПроцедуры
1 palsergeich
 
07.10.18
12:04
Потому что надо директивы компиляции указывать!!
Без директивы - по умолчанию - на сервере
&НаКлиенте  Перем МойМассив Экспорт;

&НаКлиенте    
Процедура Начать() Экспорт
КонецПроцедуры

&НаКлиенте
Процедура Продолжить() Экспорт
        МойМассив.Добавить(1);
КонецПроцедуры

И все будет работать
2 Eastert
 
07.10.18
13:10
(1) И как же из модуля формы вызвать, допустим, процедуру Начать(), которая на клиенте
3 Сияющий в темноте
 
07.10.18
13:17
Я этот вопрос разбирал,модуль обработки существует только на сервере и при каждом клиентском вызове он заново компиляется,чтобы это увидеть в конец модуля можно вписать крб записи в журнал или текстовый файл.
когда мы выполняем РеквизитФормыВЗначение с обработкаобьект,модуль заново компиляется.
если из обработки открыты две формы,то каждая будет видеть свой модуль,т.к.их серверные вызовы идут независимо.
4 Eastert
 
07.10.18
13:18
(3) понятно
5 palsergeich
 
07.10.18
13:25
(2) В данной трактовке вопроса - никак.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.