Как правильно добавить и отобразить реквизит на обычной форме в 1С 8.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей
← На главную

Работа с обычными формами в 1С:Предприятие 8 (например, в таких конфигурациях, как «Управление торговлей» редакции 10.3) существенно отличается от работы с управляемым интерфейсом. Если в управляемых формах нам достаточно добавить реквизит и перетащить его в дерево элементов, то в обычных формах механизм разделен на создание данных и создание визуального представления. Разберем этот процесс подробно, чтобы избежать ситуации, когда элемент добавлен в конфигураторе, но «не виден» в отладчике или не сохраняет значения.

Различие между реквизитом и элементом управления

Проанализируем сначала фундаментальное различие, которое часто путает начинающих разработчиков. В обычных формах мы имеем дело с двумя разными сущностями:

  1. Реквизит — это «контейнер» для данных. Он может быть реквизитом самого объекта (например, справочника или документа) или реквизитом конкретной формы (переменная, существующая только пока форма открыта).
  2. Элемент управления — это визуальный объект (поле ввода, флажок, список), который пользователь видит на экране.

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

Шаг 1: Создание реквизита объекта или формы

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

  1. Откроем дерево метаданных конфигурации.
  2. Найдем нужный объект (например, документ РеализацияТоваровУслуг).
  3. В ветке Реквизиты добавим новый элемент, зададим ему имя и тип данных (например, Строка или Число).

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

Шаг 2: Размещение элемента управления на форме

Рассмотрим два способа вывода данных на форму. Первый — автоматический, который минимизирует риск ошибок, и второй — ручной.

Способ А: Диалог «Размещение данных» (рекомендуемый)

Этот метод позволяет системе автоматически создать нужный элемент управления и правильно связать его с данными. Выполним следующие действия:

  1. Откроем нужную форму в конфигураторе.
  2. В главном меню выберем пункт Форма — Размещение данных....
  3. В появившемся списке найдем наш новый реквизит и установим напротив него галочку.
  4. Убедимся, что в колонке «Тип элемента управления» выбрано подходящее значение (например, Поле ввода).
  5. Нажмем «ОК». Система предложит указать место на форме и автоматически создаст поле ввода вместе с текстовой надписью.

Способ Б: Ручное добавление через панель инструментов

Если мы решили рисовать форму вручную, разберем, как не допустить потерю связи с данными:

  1. Нажмем кнопку Вставить элемент управления (тот самый «листик с плюсиком») и выберем Поле ввода.
  2. Нарисуем прямоугольник на форме.
  3. Нажмем правой кнопкой мыши на созданном поле и выберем Свойства.
  4. Найдем свойство Данные (DataPath). Это самый критичный момент. Нажмем на кнопку выбора и выберем из списка наш реквизит. Без этого действия поле будет «мертвым».
  5. На закладке «Другие» в свойствах обязательно проверим поле Имя. Именно по этому имени мы будем обращаться к элементу из программного кода.

Шаг 3: Программный доступ и отладка

Проанализируем ситуацию, возникшую у автора темы: почему элемент не виден в отладчике? В обычных формах все визуальные элементы хранятся в специальной коллекции ЭлементыФормы. Рассмотрим пример кода для работы с ними:


// Обращение к значению реквизита (данным)
ЗначениеРеквизита = ЭтотОбъект.ИмяНовогоРеквизита;

// Обращение к визуальному свойству поля (например, цвету фона)
ЭлементыФормы.ИмяНовогоПоля.ЦветФона = ЦветаСтиля.ПолеВыделения;

// Проверка видимости
ЭлементыФормы.ИмяНовогоПоля.Видимость = Истина;

Если в отладчике вы не видите поле в коллекции ЭлементыФормы, проверьте следующие моменты:

Шаг 4: Настройка привязок (Anchors)

В обычных формах 1С 8.3 автоматическое масштабирование работает иначе, чем в управляемых. Если мы просто бросим поле на форму, при развертывании окна на весь экран оно может остаться на месте или «схлопнуться». Разберем, как настроить привязки:

  1. Нажмем правой кнопкой на поле ввода и выберем Установка привязок....
  2. Настроим линии привязки: например, привяжем правую границу поля к правой границе формы.
  3. Проверим, чтобы поле «растягивалось» корректно при изменении размеров окна.

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

Выясним причины отсутствия данных в отладчике

Если после всех действий данные всё равно не отображаются, проанализируем модуль формы. В конфигурации «Управление торговлей 10.3» часто используется логика динамической настройки интерфейса. Проверьте процедуры ПриОткрытии() или ОбновитьИнтерфейс(). Возможно, там жестко прописано управление видимостью элементов, которое скрывает ваше новое поле при выполнении определенных условий (например, в зависимости от прав пользователя или вида операции документа).

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

← На главную