Имя: Пароль:
1C
1С v8
Почему не сохраняется значение переменной модуля формы?
,
0 ЭЦ
 
13.10.22
18:52
Господа.

Имеется форма документа.
В модуле формы объявлена переменная

&НаСервере
Перем мНоменклатура

Эта переменная определяется как Массив и заполняется в процедуре

&НаСервере
ПриСозданииНаСервере()

Далее имеется функция которая должна возвращать заполненный массив

&НаСервере
Функция ПолучимМассивНоменклатуры()
Возврат мНоменклатура
КонецФункции

Эта функция вызываетсмя из процедуры ПриОткрытии()

иммем следующее
массив создается и заполняется
а пр попытке получить его получаем Неопределено.

С чем это может быть связано
Прошу подсказать
1 ЭЦ
 
13.10.22
19:03
Проверил нет ли опечаток в наименовании переменной.

Их нет
2 Мультук
 
гуру
13.10.22
19:31
(0)

Реквизит формы с типом "Список значений" -- не подойдёт ?

P.S.
Тяжко после толстого клиента?
3 Мультук
 
гуру
13.10.22
19:37
(1)

Можно, конечно сделать реквизит формы "Адрес" с типом строка и потом (см код)
Но скорее всего, то что вы хотите в тонком клиенте решается "несколько по другому"



&НаСервере
Процедура ЛяляНаСервере()
    мНоменклатура = Новый массив;
    мНоменклатура.Добавить("ляля");
    
    
    аДрес = ПоместитьВоВременноеХранилище(мНоменклатура);
КонецПроцедуры


&НаСервере
Процедура ТополяНаСервере()
    мНоменклатура = ПолучитьИзВременногоХранилища(Адрес);
    
    Для каждого строка из мНоменклатура Цикл
        Сообщить(строка);
    КонецЦикла;    
КонецПроцедуры
4 FIXXXL
 
13.10.22
19:58
(2) +1
5 TormozIT
 
гуру
13.10.22
20:28
Модуль управляемой формы на сервере не имеет состояния. Поэтому он инициализируется при каждом контекстном серверном вызове заново, включая все переменные.
6 SilentMan
 
13.10.22
21:05
(0) Серверная переменная имеет значение только во время серверного вызова
7 rudnitskij
 
13.10.22
22:01
(0) Делаем реквизит формы
заполняем его "ПриСозданииНаСервере"
всё, он и так доступен везде, без всяких доп функций и переменных
8 СергейК
 
13.10.22
22:06
(7) ...и это никак не влияет на скорость открытия формы на клиенте?
9 Сергиус
 
13.10.22
22:16
(8)Смотря что ты туда положишь)
10 rudnitskij
 
13.10.22
22:41
(8) Это в любом случае быстрее, чем после "ПриСозданииНаСервере" выполнять еще серверный вызов из клиентской процедуры "ПриОткрытии"