![]() |
|
Объясните по последовательности выполнения кода модуля | ☑ | ||
---|---|---|---|---|
0
never_sleep
11.04.17
✎
15:01
|
Продолжу Еще один вопрос по глобальным переменным (Надеюсь, в это раз подобрал более корректную формулировку)
Решил я выяснить, запускается ли при каждом серверном вызове код "основной программы". Вот такой листинг подтверждает, что да. &НаСервере Перем ТЗ; &НаСервере Процедура ЗапуститьНаСервере() Строка = ТЗ.Добавить(); Строка.Первая = "ААА"; Строка.Вторая = "БББ"; Сообщить("ЗапуститьНаСервере"); Для Каждого СтрокаТЗ Из ТЗ Цикл Сообщить(Строка.Первая+" "+Строка.Вторая); КонецЦикла; КонецПроцедуры &НаСервере Процедура ЗапуститьНаСервере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 |
|||
1
НЕА123
11.04.17
✎
15:12
|
что хотел то и получил.
|
|||
2
НЕА123
11.04.17
✎
15:12
|
Для Каждого СтрокаТЗ Из ТЗ Цикл
Сообщить(Строка.Первая+" "+Строка.Вторая); КонецЦикла; |
|||
3
dezss
11.04.17
✎
15:22
|
(0) чувак, тупишь...
ты добавил 2 строки (одну в основном коде, вторую в процедуре), но выводишь не то, что объявил в "для каждого СтрокаТЗ", а просто "строка". |
|||
4
dezss
11.04.17
✎
15:22
|
(3) в процедурах замени
Сообщить(Строка.Первая+" "+Строка.Вторая); на Сообщить(СтрокаТЗ.Первая+" "+СтрокаТЗ.Вторая); и все поймешь) |
|||
5
never_sleep
12.04.17
✎
07:01
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |