Базовые понятия 1С. Использование методов РеквизитФормыВЗначение и ЗначениеВРеквизитФормы

31.10.25

Разработка - Механизмы платформы 1С

В данной статье мы рассмотрим методы преобразования реквизитов и объектов в 1С.

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

Зачем нужны эти преобразования?  

 

Формы в корпоративной системе 1С

 

Что же из себя представляет форма?

Самый простой ответ будет – это окно, в котором пользователь вводит свои данные и получает ответы. Формы бывают простые и управляемые.

Название «управляемые формы» тоже является малоинформативным и даже обманчивым и часто вводит пользователей в заблуждение.

Возможно, создатели названием хотели подчеркнуть, что в отличие от простых форм, управляемыми можно только «управлять», взаимодействовать с ними не совсем напрямую, а как бы косвенно, «направляя» и «корректируя».

Возможно, хотели показать, что управляемая форма – это как вэб-страница в Интернете, которая «управляется» с сервера.

Да, к удивлению некоторых пользователей, даже опытных, форма (управляемая) создается и заполняется большинством данных на сервере, а вовсе не на клиентском компьютере.

«Форма — это программный объект, который создается на сервере согласно настройкам, сделанными в конфигураторе (если формы нет в конфигураторе, то она генерируется автоматически платформой).»

В этом можно убедиться, просто посмотрев список возможных с формой действий, или, говоря иначе, обработчиков у формы. Самый первый и самый основной так и называется «При создании на сервере».

А как же тогда пользователь может вводить свои данные?

Кстати, к вводимым данным относятся и просто нажатия на определенные кнопки.
Ведь очевидно, что пользователь может взаимодействовать только со своим собственным, клиентским, компьютером.

Управляемая форма в 1С 8.3 на клиенте представляет собой лишь изображение интерфейса взаимодействия пользователя с программой. (именно поэтому возможна работа с ней в режиме тонкого клиента, тогда как с простыми формами – только в толстом клиенте).


 
Список основных обработчиков управляемой формы   

  

Таким образом, форма как бы одновременно существует и на сервере и немного на клиенте, и, как следствие, у формы есть и серверный и клиентский контекст выполнения кода. Но при этом «настоящая», «подлинная» форма существует на сервере, а на клиенте – только её копия, изображение, которое служит только для взаимодействия пользователя с программой.

 

Реквизиты и элементы в учетной программе 1С
 

А еще у Формы есть реквизиты и элементы.

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

Википедия поясняет (в общем смысле): 

«Реквизитом часто называют как подлинные, так и бутафорские предметы, однако термин реквизит корректно употреблять только по отношению к подлинным вещам, а не к искусственным.»

Из вышенаписанного уже можно догадаться, что же на форме является подлинным, а что искусственным.

На представленных снимках экрана слева написано – «элементы», а справа – «реквизиты» (и внизу – графическое представление формы).

При этом легким движением мышки можно перенести реквизиты справа налево, и вот уже реквизит становится элементом. Или не становится?

Как видно, можно создать 3 элемента формы, которые будут очень похожи, отличаясь только свойством «ПутьКДанным». Оно и отвечает за взаимосвязь элементов и реквизитов.

При этом элемент может быть не связан с реквизитом вообще, может быть связан с реквизитом формы, а может быть связан с реквизитом основного реквизита.

 

Элемент формы (Банк) не связан с реквизитом. Но тоже может использоваться

 

Элемент формы связан с простым реквизитом формы

 

Элемент формы связан с внутренним реквизитом Основного реквизита (Отчет).

 

Обратите внимание, что сам Прикладной Объект, с которым мы работаем, например, Отчет, Справочник, Документ, Регистр и т.д. хоть и отражается в столбце Реквизиты, и даже выделен жирным шрифтом, что говорит о том, что он Основной, не отражается напрямую на форме, то есть не имеет какого-то связанного с собой напрямую элемента формы.

Он проявляется на форме только через свои внутренние реквизиты, которые при этом, автоматически тоже становятся реквизитами формы (неосновными).

Очевидно, что сумма реквизитов объекта вовсе не заменяют весь объект в целом.

Эти внутренние реквизиты отличаются от других, тоже неосновных реквизитов тем, что обращение к ним возможно только через Объект.

Сравните реквизиты Отчет.Банк и просто Банк.

 

Реквизиты Отчет.Банк и Банк

 

То есть действительно, реквизиты, особенно внутренние реквизиты Прикладного Объекта - основного Реквизита, являются «подлинными», записанными в Базу Данных, а элементы – лишь их отражение, с которым можно взаимодействовать на Форме, у клиента.

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

Как это происходит?   

 

НаКлиенте и НаСервере


В управляемых формах происходит четкое разделение действий, которые происходят на НаСервере и НаКлиенте. То есть все процедуры (или модули в целом) имеют специальные директивы для компилятора, определяющую среду исполнения процедур.

Различие в этих директивах в том, какие данные являются доступными в данный момент. Очевидно, что крайне выгодно передавать на клиент самый минимум нужных пользователю данных, чтобы ускорить работу по сети.

Для этих целей есть уточнения директив (безКонтекста), которые еще более обрезают данные, но в данной статье эти уточнения не рассматриваем.

Имея урезанную копию объекта, можно увидеть только часть реквизитов объекта, которые «сцеплены» с элементами формы, но нельзя напрямую обратиться ко всем свойствам объекта (и уж почти наверняка к методам, макетам, другим формам).

Отсюда возникает необходимость метода «ЗначениеВРеквизитФормы()».

Как вы уже поняли, «значение» – это Прикладной объект в целом, то есть не каждый отдельный реквизит, и даже не все реквизиты в целом, а именно цельное его представление, которое является полной копией Объекта, и содержит все взаимосвязи и свойства.

Выгрузив Прикладной объект в Реквизит нашего окна, мы получаем возможность обращаться к тем данным, которые ранее были недоступны.

В отличие от других реквизитов, которые жестко связаны элементами формы, здесь мы не имеем возможности поменять что-то на форме и тут же изменить и на сервере.

Для обратной записи нужен метод «РеквизитФормыВЗначение», то есть с «экрана в прикладной объект сервера».

Последовательность взаимодействия сервера и клиента примерно такая: на сервере создается форма, связанная с прикладным объектом.

Этот прикладной объект назначается основным реквизитом формы, но, разумеется, целиком на форму не передается.

На форме создаются и заполняются элементы, которые могут быть связаны как с реквизитами Основного реквизита формы, так и не связаны с ним.

Свойства Формы передаются с сервера клиенту и рисуются на клиентском мониторе.
Элементы формы выводятся на экран в полях ввода.

Оператор заполняет/меняет на клиенте поля ввода, связанные с элементом.

А далее неявно, а иногда и явно, с помощью метода Записать(), данные поступают на сервер и заносятся в базу данных.

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    21798    TitanLuchs    106    

138

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    12405    bayselonarrend    127    

65

Механизмы платформы 1С WEB-интеграция Программист 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    21380    dsdred    77    

134

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    21343    bayselonarrend    22    

169

Механизмы платформы 1С Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    11997    dsdred    22    

84

Механизмы платформы 1С Программист Стажер 1С v8.3 Бесплатно (free)

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

24.01.2024    43662    YA_418728146    35    

75
Для отправки сообщения требуется регистрация/авторизация