Встроенный язык содержит целый ряд объектов, предназначенных для чтения и модификации объектных данных, хранящихся в базе данных. Это такие типы, как СправочникОбъект.<имя>, ДокументОбъект.<имя> и т. д. Однако работа с этими типами данных возможна только в контексте сервера. Форма же и на клиенте, и на сервере для отображения таких объектных данных использует специальные универсальные типы.
Поэтому при открытии форм объектов платформа выполняет автоматическое преобразование данных из типов объектов в типы, поддерживаемые формой. При записи данных объектов из формы происходит обратное преобразование. Рассмотрим эти процессы подробнее.
Когда открывается форма существующего объекта, платформа читает его данные из базы данных и создает в памяти соответствующий этим данным объект встроенного языка (рис. 3.15). Например, СправочникОбъект.<имя>.

Рис. 3.15. Чтение данных существующего объекта
После этого данные объекта преобразуются в данные основного реквизита формы. Как правило, основной реквизит формы имеет имя Объект (рис. 3.16).

Рис. 3.16. Преобразование данных объекта в данные формы
После того как форма полностью подготовлена, она передается с сервера на клиент (рис. 3.17).

Рис. 3.17. Передача формы на клиент
Обратное преобразование выполняется аналогичным образом. Сначала форма передается с клиента на сервер (рис. 3.18).

Рис. 3.18. Передача формы на сервер
После этого основной реквизит формы преобразуется в соответствующий объект встроенного языка, позволяющий модифицировать данные в базе данных. Например, СправочникОбъект.<имя> (рис. 3.19).

Рис. 3.19. Преобразование данных формы в прикладной объект
Затем данные объекта записываются в базу данных (рис. 3.20).

Рис. 3.20. Запись данных прикладного объекта в базу данных
Существуют четыре типа универсальных данных формы, в которые преобразуются типы, доступные только на сервере:
Это «простые» типы данных – в том смысле, что они по сути представляют собой определенным образом организованные структуры данных и не содержат никакого специфического поведения, зависящего от данных.
В какой именно тип будут преобразованы серверные данные – зависит от самих этих данных. Преобразование выполняется в те универсальные типы, которые наиболее хорошо подходят для описания исходного типа данных.
Например, данные типа СправочникОбъект.Товары будут преобразованы в тип ДанныеФормыСтруктура (рис. 3.21).

Рис. 3.21. Преобразование данных элемента справочника в «ДанныеФормыСтруктура»
Элементы этой структуры будут содержать значения реквизитов справочника Товары. Реквизиты примитивных типов в форме будут иметь тот же тип, что и у серверного объекта. Например, Код и Наименование будут иметь тип Строка.
Никаких специфических методов ДанныеФормыСтруктура иметь не будет. Это касается и стандартных методов объекта справочника (например, Записать()), и методов, описанных разработчиком в модуле объекта (например, экспортируемая процедура ПересчитатьЦены()).
Реквизиты ссылочного типа, например СсылкаНаПоставщика типа СправочникСсылка.Поставщики, будут иметь такой же тип, как и на сервере – СправочникСсылка.<имя>. Однако программный объект ссылки в форме в контексте клиента очень сильно ограничен в своих возможностях. Практически единственное, что можно сделать со ссылкой на клиенте, – это получить ее значение. Ну, и еще проверить, является ли эта ссылка пустой. Создание объектов от ссылки, получение значений через точку от ссылки на клиенте недоступны. Это возможно только на сервере.
Как уже говорилось выше, для системных процессов, таких как запись, проведение объекта из формы, подобное преобразование выполняется платформой автоматически. Однако встроенный язык при необходимости позволяет разработчику выполнять такие преобразования самостоятельно. Для этого используются процедуры глобального контекста ДанныеФормыВЗначение() и ЗначениеВДанныеФормы().
Аналогичные методы существуют и у формы: РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы(). Подробнее они будут рассмотрены в и в разделах и .