Имя: Пароль:
1C
1С v8
Переменные в модуле формы
0 6u6uroH4uK
 
06.07.17
09:39
Добрый день! Подскажите в чем беда, а то уже в полном ступоре. Есть переменные
Перем ДокМенееНормы Экспорт;
Перем ДокВышеНормы Экспорт;

Заполняю их в процедуре
&НаСервере
Процедура ЗаполнитьОценки()
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЦелиПремийОценки.Ссылка КАК Ссылка,
        |    ЦелиПремийОценки.Оценка КАК Оценка,
        |    ЦелиПремийОценки.Значение КАК Значение
        |ИЗ
        |    Справочник.ЦелиПремий.Оценки КАК ЦелиПремийОценки";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        Если Выборка.Ссылка = Справочники.ЦелиПремий.КачествоВеденияДокументооборота И Выборка.Оценка = Перечисления.Оценки.ВышеНормы Тогда
            ДокВышеНормы = Выборка.Значение;    
        ИначеЕсли Выборка.Ссылка = Справочники.ЦелиПремий.КачествоВеденияДокументооборота И Выборка.Оценка = Перечисления.Оценки.НижеНормы Тогда
            ДокМенееНормы = Выборка.Значение;
        КонецЕсли;

    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры

при отладке переменные заполняются и все хорошо, после конца процедуры переменные сбрасываются в неопределено.
1 Timon1405
 
06.07.17
09:41
(0) для этих целей используйте реквизиты формы или ключевые параметры формы
2 Cyberhawk
 
06.07.17
09:41
"после конца процедуры" // Наверное, потому что ты переходишь на клиент
3 butterbean
 
06.07.17
09:42
(0) твои переменные на клиенте, а ты на сервере с ними играешься
4 FIXXXL
 
06.07.17
09:42
(0) в управлялках переменные формы живут только на клиенте
5 Любопытная
 
06.07.17
09:45
(3) переменные как раз на сервере, т.к. у них директивы не указаны.
6 6u6uroH4uK
 
06.07.17
09:45
(1) (2) (3) (4) Ок, спасибо огромное, буду использовать реквизиты формы.
7 FIXXXL
 
06.07.17
10:49
для ясности (6)
Можно пытаться в одной серверной процедуре устанавливать значение этой переменной и читать ее в другой. Но так получится только в том случае, если все эти процедуры выполняются в одном серверном вызове. Если серверные вызовы разные, переменная будет инициализироваться каждый раз заново.
В то же время на клиенте можно использовать переменные модуля для хранения значений на все время жизни формы, но для этого при объявлении таких переменных обязательно должна быть указана директива компиляции &НаКлиенте.
Передавать значения с клиента на сервер с помощью переменных модуля формы нельзя. Хранить значения на сервере в переменных модуля также не получится. Для этого нужно использовать либо реквизиты формы (и выполнять контекстные серверные вызовы), либо передавать значения в параметрах вызываемой процедуры/функции.
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=562822