РеквизитФормыВЗначение () и ДанныеФормыВзначение ().

Общая идея - данные формы могут быть не записаны в базу на момент обработки. Вот именно для этой ситуации и предназначены процедуры РеквизитФормыВЗначение() и ДанныеФормыВЗначение(), чтобы была возможность получить эти "промежуточные" данные, что-то с ними потом сделать и вернуть обратными методами (ЗанчениеВРеквизитФормы(), ЗначениеВДанныеФормы()) в форму.

 

РеквизитФормыВЗначение() является методом управляемой формы, компилируется только &НаСервере.

Метод РеквизитФормыВЗначение() используется, если требуется из модуля формы вызвать стандартный метод объекта или метод из модуля объекта, из общего модуля, который будет отрабатывать с данными, взятыми из формы, т.е. еще не записанными в базу.

ЗначениеВРеквизитФормы() используется , чтобы измененные данные вернуть в форму.

Вторым параметром метода РеквизитФормыВЗначение является тип значения. Это необязательный параметр. Если обрабатываемый реквизит не является составным типом, то тип будет автоматически получен из реквизита формы. Иначе генерируется исключение времени выполнения.

Примеры:
1)

&НаСервере
Процедура ЗаполнитьТЧПоДаннымПоследнегоДокумента_(Контрагент)

            ДокОбъект = РеквизитФормыВЗначение("Объект");
            ДокОбъект.ЗаполнитьТЧПоДаннымПоследнегоДокумента(Контрагент);
            ЗначениеВРеквизитФормы(ДокОбъект, "Объект");

КонецПроцедуры

2)

&НаСервере
Процедура ОчиститьСтрокиСПустойЦенойНаСервере_()

         ДокОбъект = РеквизитФормыВЗначение("Объект");
         ДокОбъект.ОчиститьСтрокиСПустойЦеной();
         ЗначениеВРеквизитФормы(ДокОбъект, "Объект");

КонецПроцедуры

3)

&НаСервере
Функция ОбъектЗаполнен()
         Возврат РеквизитФормыВЗначение("Объект").ПроверитьЗаполнение();
КонецФункции

 

ДанныеФормыВзначение()

ДанныеФормыВЗначение() может работать без контекста формы, ей необходимо указывать тип конвертируемых данных, то есть выполняться &НаСервереБезКонтекста. Обычно процедуры РеквизитФормыВЗначение() и ДанныеФормыВЗначение() взаимозаменяемы, но только ДанныеФормыВЗначение() может выполняться без контекста формы

ЗначениеВДанныеФормы() - процедура, обратная по отношению к ДанныеФормыВЗначение().

   &НаСервере

       // Инициализация набора констант
       НаборКонстантОбъект = ДанныеФормыВЗначение(НаборКонстант, Тип("КонстантыНабор"));
       НаборКонстантОбъект.Прочитать();
       ЗначениеВДанныеФормы(НаборКонстантОбъект, НаборКонстант);