|
Переменные в модуле формы |
☑ |
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)
Можно пытаться в одной серверной процедуре устанавливать значение этой переменной и читать ее в другой. Но так получится только в том случае, если все эти процедуры выполняются в одном серверном вызове. Если серверные вызовы разные, переменная будет инициализироваться каждый раз заново.
В то же время на клиенте можно использовать переменные модуля для хранения значений на все время жизни формы, но для этого при объявлении таких переменных обязательно должна быть указана директива компиляции &НаКлиенте.
Передавать значения с клиента на сервер с помощью переменных модуля формы нельзя. Хранить значения на сервере в переменных модуля также не получится. Для этого нужно использовать либо реквизиты формы (и выполнять контекстные серверные вызовы), либо передавать значения в параметрах вызываемой процедуры/функции.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший