К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как добавить элемент на форму в 1С

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

Форма в 1С — это визуальное представление объекта: документа, справочника, обработки или отчёта. Добавление нового элемента на форму — одна из самых частых задач при доработке конфигурации: нужно вывести дополнительный реквизит, кнопку, группу полей или таблицу. Сделать это можно двумя способами — визуально в конфигураторе и программно в модуле формы.

Выбор способа зависит от задачи. Если элемент должен присутствовать на форме всегда, проще добавить его через редактор формы в конфигураторе. Если элемент появляется по условию — например, только для определённого вида документа или при определённых правах пользователя — потребуется программное создание в обработчике ПриСозданииНаСервере.

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

Подготовка: где редактируется форма

Работа ведётся в конфигураторе 1С. Откройте нужный объект конфигурации — например, документ или справочник — и перейдите на закладку «Формы». Если основная форма объекта ещё не создана, платформа предложит сгенерировать её автоматически конструктором. Если форма уже существует, откройте её двойным щелчком.

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

Перед любыми изменениями типовой конфигурации убедитесь, что объект доступен для редактирования: снимите его с поддержки или включите возможность изменения через меню «Конфигурация — Поддержка — Настройка поддержки». Учтите, что прямая доработка типовых форм усложнит будущие обновления — для минимизации рисков рассмотрите механизм расширений конфигурации.

Добавление реквизита формы

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

Для строковых реквизитов укажите длину строки: неограниченная строка (длина 0) неудобна для полей ввода и может ограничивать возможности сортировки и поиска. Для ссылочных типов выберите конкретный тип — например, СправочникСсылка.Контрагенты. Составной тип допустим, но усложняет отображение и обработку.

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

Добавление элемента на форму визуально

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

Альтернатива — добавить элемент вручную. Щёлкните правой кнопкой по тому месту в дереве элементов, куда нужно вставить новый элемент, выберите «Добавить» и укажите тип: поле, кнопка, группа, таблица, надпись, декорация. Затем в палитре свойств задайте путь к данным — привязку к реквизиту формы или объекта.

Порядок действий в конфигураторе
  1. 1
    Откройте форму объекта в конфигураторе на закладке «Формы»
  2. 2
    Добавьте реквизит формы через панель реквизитов, укажите имя и тип
  3. 3
    Перетащите реквизит в дерево элементов в нужное место или добавьте элемент вручную
  4. 4
    В палитре свойств настройте заголовок, видимость, доступность и положение
  5. 5
    Сохраните конфигурацию и проверьте форму в режиме предприятия

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

Настройка свойств элемента

После добавления выделите элемент и откройте палитру свойств (правый клик — «Свойства»). Ключевые свойства для большинства элементов: Заголовок — текст рядом с полем, ПутьКДанным — привязка к реквизиту, Видимость и Доступность — управление отображением, ТолькоПросмотр — запрет редактирования.

Для полей ввода полезны свойства КнопкаВыбора, КнопкаОчистки, Маска и ПодсказкаВвода. Для надписей и декораций настраиваются шрифт, цвет текста и фона. Для кнопок обязательно укажите имя команды — либо существующей команды формы, либо новой, которую нужно создать на закладке «Команды» и наполнить обработчиком в модуле формы.

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

Программное добавление элемента

Программное создание выполняется в модуле формы, обычно в обработчике ПриСозданииНаСервере — на этом этапе можно изменять и реквизиты, и элементы формы. Сначала добавьте реквизит через метод ИзменитьРеквизиты(), затем создайте элемент через Элементы.Добавить().

Типовой фрагмент кода выглядит так. Сначала формируется массив добавляемых реквизитов с объектами Новый РеквизитФормы, затем вызывается ИзменитьРеквизиты. После этого создаётся элемент: НовыйЭлемент = Элементы.Добавить("КомментарийМенеджера", Тип("ПолеФормы"), Родитель), задаётся ПутьКДанным и вид поля.

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Добавляемые = Новый Массив;
    Добавляемые.Добавить(Новый РеквизитФормы("КомментарийМенеджера", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200))));
    ИзменитьРеквизиты(Добавляемые);
    Поле = Элементы.Добавить("КомментарийМенеджера", Тип("ПолеФормы"), Элементы.ГруппаШапка);
    Поле.ПутьКДанным = "КомментарийМенеджера";
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.Заголовок = "Комментарий менеджера";
КонецПроцедуры

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

Добавление элемента через расширение конфигурации

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

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

Способы добавления элемента

Визуально в конфигураторе

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

Программно в модуле формы

Подходит, когда состав элементов зависит от условий: вида документа, прав, настроек. Гибко, но сложнее в отладке и поддержке.

Через расширение

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

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Отображение элемента
Норма

Элемент виден в ожидаемом месте формы, заголовок корректен

Тревожный признак

Элемент отсутствует, дублируется или перекрывает другие поля

Привязка к данным
Норма

Значение вводится и сохраняется после записи объекта

Тревожный признак

Поле очищается после записи — вероятно, это реквизит формы вместо реквизита объекта

Поведение формы
Норма

Форма открывается без ошибок у всех пользователей

Тревожный признак

Ошибка при открытии — проверьте модуль формы и имена элементов

Частая ошибка — добавление реквизита формы вместо реквизита объекта: поле вводится, но после записи и закрытия данные пропадают. Вторая типичная проблема — обращение к элементу по имени, которое не совпадает с фактическим: платформа сообщит «Поле объекта не обнаружено». Имена чувствительны к точному написанию, хотя и не к регистру.

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

Типичные ошибки
01
Реквизит добавлен в форму, а не в объект — данные не сохраняются после закрытия формы
02
Элемент создан без указания ПутьКДанным — поле отображается, но не связано с данными
03
Код добавления размещён в клиентском обработчике — платформа выдаёт ошибку о недопустимости изменения формы
04
Доработана типовая форма вместо расширения — при обновлении конфигурации изменения конфликтуют или теряются

Ответы на частые вопросы

Как добавить кнопку на форму и назначить ей действие?

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

Можно ли добавить элемент на форму без изменения конфигурации?

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

Почему добавленный элемент не виден на форме?

Проверьте три вещи: свойство «Видимость» элемента и всех родительских групп, расположение элемента внутри свёрнутой группы или неактивной вкладки, а также функциональные опции — если реквизит объекта связан с функциональной опцией, элемент скрывается при отключённой опции. Дополнительно убедитесь, что изменения сохранены и конфигурация базы данных обновлена.

Как добавить таблицу со списком данных на форму?

Создайте реквизит формы типа «ТаблицаЗначений» и добавьте в него колонки через кнопку добавления в панели реквизитов. Затем перетащите таблицу в дерево элементов — платформа создаст элемент «Таблица» с колонками. Заполнение данными выполняется программно, обычно в ПриСозданииНаСервере.

Чем отличается обычная форма от управляемой при добавлении элементов?

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

Как программно скрыть элемент по условию?

В серверном обработчике или в клиентском коде установите Элементы.ИмяЭлемента.Видимость = Ложь;. Изменение свойств видимости и доступности разрешено на клиенте, в отличие от создания и удаления элементов. Если условие известно при открытии формы, устанавливайте видимость в ПриСозданииНаСервере — это избавит от мерцания интерфейса.

Итог

Что важно запомнить

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