РеквизитФормыВЗначение / ЗначениеВРеквизитФормы

Всем привет! В период майских праздников решил выделить немного времени на новую заметку и сегодня мы разберем 2 часто используемых метода формы клиентского приложения ‘РеквизитФормыВЗначение’ и ‘ЗначениеВРеквизитФормы’.

Два данных метода доступны только на сервере с контекстом формы – следовательно исполняются только под директивой ‘&НаСервере’ :

  • РеквизитФормыВЗначение – преобразовывает реквизит формы (УФ) в объект прикладного типа.
  • ЗначениеВРеквизитФормы – наоборот, преобразовывает объект прикладного типа в реквизит формы (УФ).

Если прочитать определения этих методов, то все равно не понятно, а как и для чего их использовать на практике. Но сейчас мы с этим разберемся на примерах.

Итак, один из самых частых примеров использования метода ‘РеквизитФормыВЗначение’ это когда нам из формы объекта (к примеру документа) необходимо произвести заполнение данных объекта (к примеру табличной части) с помощью процедуры, которая находится в модуле нашего объекта:

В самой процедуре ‘ЗаполнитьУсловияЗакупокПоУмолчанию’ (в модуле объекта) произойдет заполнение нашего объекта, а затем мы уже отображаем их на форме с помощью метода ‘ЗначениеВРеквизитФормы(ДокументЗакупки, “Объект”)’:

Изменили объект и отобразили это на форме.
Изменили объект и отобразили это на форме.

Если мы на форме изменили значения реквизитов, а затем преобразовали реквизит формы ‘Объект’ в значение, то он будет содержать уже новые значения, которые мы изменили на форме (при этом объект базы данных (наш документ) – будет содержать еще старые значения):

  • ЗначениеВРеквизитФормы – получает объект, значения которого по сути взяты с формы (заполнены данными формы);
  • ПолучитьОбъект() – получает объект из базы данных.

Допустим мы можем сам программно вызвать проверку заполнения объекта (с данными формы):

В результате чего для нашего объекта будет вызвана процедура из модуля объекта ОбработкаПроверкиЗаполнения:

ОбработкаПроверкиЗаполнения.
ОбработкаПроверкиЗаполнения.

Допустим у нас есть реквизит формы ‘ТаблицаЗначенийПроекты’, которая отображается на форме. Мы можем на сервере получить таблицу с такими же колонками и заполнить её данными, а затем преобразовать её в этот реквизит:

реквизит формы типа таблица значений.
Реквизит формы типа таблица значений.

Важный нюанс: К примеру реквизиты с типом ‘Строка’/’Число’/’Булево’ и т.д. не удастся преобразовать в прикладной объект:

Не все реквизиты можно преобразовать в объект.
Не все реквизиты можно преобразовать в объект.

Если вы все же попробуете это сделать, то получите ошибку ‘Недопустимое значение параметра (параметр номер ‘1’).’:

Недопустимое значение параметра (параметр номер '1').
Недопустимое значение параметра (параметр номер ‘1’).

В общем что бы разобраться полностью с этим вопросом, можете поискать в своей конфигурации все места, где используются данные методы. И вы увидите как разработчики типовых конфигураций их применяют в своих решениях.

Так стоит обратить и еще на один важный момент:

РеквизитФормыВЗначение тип значения.
РеквизитФормыВЗначение тип значения.

Так же данный метод ‘РеквизитФормыВЗначение’ часто используют что бы получить макет внешней обработки:

Многие также могут столкнуться с двумя похожими методами: ‘ДанныеФормыВЗначение’ и ‘ЗначениеВДанныеФормы’. Это в принципе аналогичные методы (как говорит нам 1с эти методы взаимозаменяемы) – вот что по этому поводу говорит 1с (статья на сайте 1с):

Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение.
Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение.

Единственно существенно отличие ДанныеФормыВЗначение от РеквизитФормыВЗначение ‘это то, что первый метод может использоваться на сервере без контекста формы, именно поэтому важно указывать тип данных. Очень часто этот метод используют в общих модулях:

В принципе все не так уж и сложно. Особенно если пару раз использовать эти методы в своих решения. Практикуйтесь и вы все поймете!

2+

Оставить комментарий

Ваш адрес email не будет опубликован.