Работа с обычными формами в 1С:Предприятие 8 (например, в таких конфигурациях, как «Управление торговлей» редакции 10.3) существенно отличается от работы с управляемым интерфейсом. Если в управляемых формах нам достаточно добавить реквизит и перетащить его в дерево элементов, то в обычных формах механизм разделен на создание данных и создание визуального представления. Разберем этот процесс подробно, чтобы избежать ситуации, когда элемент добавлен в конфигураторе, но «не виден» в отладчике или не сохраняет значения.
Проанализируем сначала фундаментальное различие, которое часто путает начинающих разработчиков. В обычных формах мы имеем дело с двумя разными сущностями:
Если мы просто воспользуемся командой Форма — Вставить элемент управления или нажмем на кнопку с изображением листика и плюсика, мы создадим только визуальную оболочку. Она будет пустой и ни к чему не привязанной. Чтобы данные начали отображаться и сохраняться, нам нужно «связать» элемент управления с реквизитом.
Выясним, где должны храниться данные. Если нам нужно, чтобы введенное значение сохранялось в базе данных навсегда (например, новый реквизит «Комментарий менеджера» в документе «Реализация»), мы должны сначала добавить этот реквизит в дерево метаданных самого объекта. Рассмотрим ситуацию, когда реквизит создается непосредственно в объекте:
РеализацияТоваровУслуг).Реквизиты добавим новый элемент, зададим ему имя и тип данных (например, Строка или Число).Если же данные нужны только временно для расчетов внутри формы, перейдем в редактор формы, выберем закладку Реквизиты (она находится в правой нижней части окна редактора формы) и добавим реквизит там.
Рассмотрим два способа вывода данных на форму. Первый — автоматический, который минимизирует риск ошибок, и второй — ручной.
Способ А: Диалог «Размещение данных» (рекомендуемый)
Этот метод позволяет системе автоматически создать нужный элемент управления и правильно связать его с данными. Выполним следующие действия:
Поле ввода).Способ Б: Ручное добавление через панель инструментов
Если мы решили рисовать форму вручную, разберем, как не допустить потерю связи с данными:
Поле ввода.Проанализируем ситуацию, возникшую у автора темы: почему элемент не виден в отладчике? В обычных формах все визуальные элементы хранятся в специальной коллекции ЭлементыФормы. Рассмотрим пример кода для работы с ними:
// Обращение к значению реквизита (данным)
ЗначениеРеквизита = ЭтотОбъект.ИмяНовогоРеквизита;
// Обращение к визуальному свойству поля (например, цвету фона)
ЭлементыФормы.ИмяНовогоПоля.ЦветФона = ЦветаСтиля.ПолеВыделения;
// Проверка видимости
ЭлементыФормы.ИмяНовогоПоля.Видимость = Истина;
Если в отладчике вы не видите поле в коллекции ЭлементыФормы, проверьте следующие моменты:
F7 в конфигураторе. Пока синий цилиндр в нижней панели не исчезнет, изменения не вступят в силу в режиме «Предприятие».В обычных формах 1С 8.3 автоматическое масштабирование работает иначе, чем в управляемых. Если мы просто бросим поле на форму, при развертывании окна на весь экран оно может остаться на месте или «схлопнуться». Разберем, как настроить привязки:
Посмотрим на типичную ошибку: если добавить элемент программно через ЭлементыФормы.Добавить(), но не инициализировать его свойства, он может иметь нулевой размер и быть невидимым, хотя технически в коллекции он будет присутствовать.
Если после всех действий данные всё равно не отображаются, проанализируем модуль формы. В конфигурации «Управление торговлей 10.3» часто используется логика динамической настройки интерфейса. Проверьте процедуры ПриОткрытии() или ОбновитьИнтерфейс(). Возможно, там жестко прописано управление видимостью элементов, которое скрывает ваше новое поле при выполнении определенных условий (например, в зависимости от прав пользователя или вида операции документа).
Таким образом, для успешного добавления реквизита на обычную форму мы должны пройти путь от создания Данных в объекте до размещения Элемента управления на форме, обязательной настройки их связи через свойство Данные и финального обновления базы через F7.