Продолжу
Еще один вопрос по глобальным переменным (Надеюсь, в это раз подобрал более корректную формулировку)
Решил я выяснить, запускается ли при каждом серверном вызове код "основной программы".
Вот такой листинг подтверждает, что да.
&НаСервере
Перем ТЗ;
&НаСервере
Процедура ЗапуститьНаСервере()
Строка = ТЗ.Добавить();
Строка.Первая = "ААА";
Строка.Вторая = "БББ";
Сообщить("ЗапуститьНаСервере");
Для Каждого СтрокаТЗ Из ТЗ Цикл
Сообщить(Строка.Первая+" "+Строка.Вторая);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗапуститьНаСервере2()
Строка = ТЗ.Добавить();
Строка.Первая = "ААА2";
Строка.Вторая = "БББ2";
Сообщить("ЗапуститьНаСервере2");
Для Каждого СтрокаТЗ Из ТЗ Цикл
Сообщить(Строка.Первая+" "+Строка.Вторая);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Запустить(Команда)
ЗапуститьНаСервере();
ЗапуститьНаСервере2();
КонецПроцедуры
#Если Сервер Тогда
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Первая");
ТЗ.Колонки.Добавить("Вторая");
#КонецЕсли
------Выводит----------
ЗапуститьНаСервере
ААА БББ
ЗапуститьНаСервере2
ААА2 БББ2
Все ок. Все отлично.
Но если в коде основного модуля вставить:
#Если Сервер Тогда
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Первая");
ТЗ.Колонки.Добавить("Вторая");
Строка = ТЗ.Добавить();
Строка.Первая = "ААА0";
Строка.Вторая = "БББ0";
Сообщить("Основной код");
Для Каждого СтрокаТЗ Из ТЗ Цикл
Сообщить(Строка.Первая+" "+Строка.Вторая);
КонецЦикла;
#КонецЕсли
------Выводит----------
Основной код
ААА0 БББ0
ЗапуститьНаСервере
ААА БББ
ААА БББ
Основной код
ААА0 БББ0
ЗапуститьНаСервере2
ААА2 БББ2
ААА2 БББ2
Почему задваивает строки в серверных вызовах?
Я думал, будет так:
Основной код
ААА0 БББ0
ЗапуститьНаСервере
ААА БББ
Основной код
ААА0 БББ0
ЗапуститьНаСервере2
ААА2 БББ2