Разработка и Конфигурация · 11 мин
Как создать элементы формы в 1С
Как создать элементы формы в 1С: добавление полей, кнопок и таблиц в конфигураторе, программное создание элементов, типы данных, настройка свойств и типичные ошибки.
Элементы формы в 1С — это визуальные компоненты, через которые пользователь видит и редактирует данные: поля ввода, кнопки, таблицы, надписи, флажки, переключатели. Создать их можно двумя способами: визуально в конструкторе формы конфигуратора или программно через встроенный язык. Первый способ подходит для статичных форм, второй — когда состав элементов должен меняться в зависимости от условий.
Работа ведётся в конфигураторе: нужно открыть объект (справочник, документ, обработку), перейти на вкладку «Формы» и открыть существующую форму либо создать новую. Редактор формы показывает дерево элементов слева, предпросмотр в центре и палитру свойств справа. Понимание этой структуры — обязательное условие, без него легко «потерять» добавленный элемент или привязать его не к тем данным.
Материал ориентирован на управляемые формы, которые используются в современных конфигурациях (БП, УТ, ERP, ЗУП) и в тонком, и в веб-клиенте. Обычные формы встречаются только в старых решениях и устроены иначе.
Где создаются формы и как открыть редактор
Форма привязана к объекту конфигурации: у справочника есть форма элемента и формы списка, у документа — форма документа, у обработки — произвольные формы. Чтобы начать работу, откройте конфигуратор, найдите нужный объект в дереве конфигурации и перейдите на вкладку «Формы». Если формы ещё нет, нажмите «Добавить» — запустится конструктор, который предложит тип формы и набор реквизитов для вывода.
Редактор управляемой формы состоит из нескольких областей. В левой верхней части — окно «Элементы», где показано иерархическое дерево: группы, поля, кнопки, таблицы. Справа от него — окно «Реквизиты», содержащее данные формы. Внизу — предпросмотр формы. Палитра свойств открывается по правому клику на элементе, пункт «Свойства».
Перед изменением типовой формы проверьте, включена ли возможность изменения конфигурации, и зафиксируйте исходное состояние. Для типовых конфигураций на поддержке правильнее использовать расширения — так доработка не сломается при обновлении.
Какие типы элементов формы существуют
В управляемой форме доступен ограниченный набор типов элементов, и каждый решает свою задачу. Выбор неправильного типа — частая причина того, что форма «не работает»: например, поле ввода без привязки к данным не сохранит введённое значение.
| Тип элемента | Назначение | Типичное применение |
|---|---|---|
| Поле | Ввод и отображение данных | Реквизиты объекта: наименование, дата, сумма |
| Кнопка | Выполнение команды | «Записать», «Печать», пользовательские действия |
| Таблица | Редактирование списков | Табличные части документа, динамические списки |
| Группа | Объединение и компоновка элементов | Страницы, колонки, горизонтальные блоки |
| Декорация | Статичные надписи и картинки | Подсказки, заголовки, разделители |
Поле — самый востребованный тип. Его поведение определяется видом, который платформа подбирает автоматически по типу связанных данных: для строки — поле ввода, для булево — флажок, для перечисления — поле выбора. Вид можно изменить вручную в свойствах, если стандартный не подходит.
Как добавить поле ввода, кнопку и таблицу в редакторе
Базовый приём одинаков для всех элементов: в дереве элементов выберите родительский узел (форму или группу), щёлкните правой кнопкой и нажмите «Добавить» → нужный тип. После этого элемент появится в предпросмотре, и можно настраивать свойства.
Поле ввода
Самый быстрый способ добавить поле — перетащить реквизит из окна «Реквизиты» в дерево элементов. Платформа сама создаст поле нужного вида и привяжет его к данным. Если добавляете поле через меню, не забудьте вручную заполнить свойство «ПутьКДанным» — без него поле останется пустым.
Кнопка
Кнопка требует привязки к команде. Сначала создайте команду формы на вкладке «Команды» и задайте её обработчик (действие) — процедуру в модуле формы. Затем добавьте кнопку и в свойстве «ИмяКоманды» укажите созданную команду. Кнопку можно перетащить в командную панель формы или разместить в любом месте.
Таблица
Таблица создаётся перетаскиванием реквизита типа «ТаблицаЗначений» или табличной части объекта в дерево элементов. Колонки добавляются так же — перетаскиванием реквизитов таблицы внутрь элемента-таблицы. Для таблицы настраивают свойства «ИзменятьСоставСтрок», «ИзменятьПорядокСтрок» и командную панель.
- 1Откройте форму объекта в конфигураторе
- 2Убедитесь, что нужный реквизит есть в окне «Реквизиты»; если нет — добавьте его
- 3Перетащите реквизит в дерево элементов в нужную группу
- 4Проверьте автоматически выбранный вид поля и при необходимости измените его в свойствах
- 5Настройте заголовок, подсказку и доступность
- 6Сохраните форму и проверьте результат в режиме «Предприятие»
Настройка свойств элементов
После добавления элемент настраивается через палитру свойств. Ключевые свойства, которые стоит проверить всегда: «ПутьКДанным» (откуда берётся значение), «Заголовок» (что видит пользователь), «Доступность» и «Видимость» (можно ли редактировать и видно ли поле), «ТолькоПросмотр» (запрет изменения).
Для полей ввода полезны свойства «КнопкаВыпадающегоСписка», «БыстрыйВыбор» и «СвязиПараметровВыбора» — они управляют тем, как пользователь подбирает значение из связанных данных. Для групп важны «Группировка» (вертикальная или горизонтальная) и «Отображение».
Условное оформление формы позволяет менять внешний вид элемента по условию без программирования: например, подсветить красным поле с отрицательной суммой. Настраивается через кнопку «Условное оформление» в редакторе формы — указываются условие, оформление и список полей, к которым оно применяется.
Программное создание элементов формы
Когда состав элементов зависит от условий — например, для разных видов документов нужны разные поля — элементы создают программно в модуле формы, обычно в обработчике «ПриСозданииНаСервере». Сначала добавляется реквизит формы, затем элемент, который его отображает.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Добавляем реквизит формы
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(
Новый РеквизитФормы("КомментарийДинамический",
Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200))));
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
// Создаём элемент и привязываем к реквизиту
НовыйЭлемент = Элементы.Добавить("ПолеКомментарий", Тип("ПолеФормы"));
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "КомментарийДинамический";
НовыйЭлемент.Заголовок = "Комментарий";
КонецПроцедуры
Обратите внимание на порядок: сначала ИзменитьРеквизиты(), потом Элементы.Добавить(). Если создать элемент до реквизита, привязка «ПутьКДанным» будет невозможна. Программно созданные элементы не видны в редакторе формы — искать их нужно только в коде модуля.
Программный способ требует аккуратности: метод ИзменитьРеквизиты() нельзя вызывать в клиентском контексте, а при повторном создании формы нужно следить, чтобы не добавить реквизит с уже существующим именем — это вызовет ошибку.
Проверка результата и отладка
После изменений форму проверяют в режиме «Предприятие»: запустите отладку (F5), откройте объект и убедитесь, что элементы отображаются в нужных местах, поля редактируются, кнопки выполняют команды. Тонкий клиент и веб-клиент могут отрисовывать форму с отличиями — если решение используется в браузере, проверяйте оба варианта.
Если элемент не виден, проверьте цепочку: видимость самого элемента, видимость всех родительских групп, функциональные опции, права доступа к реквизиту. Чаще всего «пропавшее» поле скрыто именно на уровне родительской группы или функциональной опции, а не своим свойством.
Как проверить результат
Поле видно в ожидаемом месте, заголовок корректен
Поля нет — проверить видимость групп и функциональные опции
Введённое значение сохраняется после записи объекта
Значение пропадает — не заполнен «ПутьКДанным» или реквизит не связан с объектом
Нажатие выполняет команду, обработчик отрабатывает
Кнопка неактивна или ничего не делает — не привязана команда или нет обработчика
Форма выглядит так же, как в тонком клиенте
Элементы смещены или скрыты — пересмотреть группировку и растягивание
Частые вопросы
Чем управляемая форма отличается от обычной?
Управляемая форма описывается декларативно — разработчик задаёт состав элементов и данные, а платформа сама строит интерфейс под клиента (тонкий, веб). Обычная форма рисуется пиксельно и работает только в толстом клиенте. Все современные конфигурации используют управляемые формы.
Почему перетащенный реквизит не появился на форме?
Проверьте, в какой узел дерева элементов он попал — возможно, в скрытую группу или страницу. Также убедитесь, что у реквизита включено использование (флажок в колонке слева от имени реквизита в окне «Реквизиты») и не сработала функциональная опция, скрывающая элемент.
Можно ли изменить форму, не снимая конфигурацию с поддержки?
Да, через расширение конфигурации. Создайте расширение, добавьте в него заимствованную форму и изменяйте её — типовая форма останется нетронутой, а обновление конфигурации пройдёт штатно. Это рекомендуемый способ для всех типовых решений.
Как сделать поле обязательным для заполнения?
Установите у поля свойство «АвтоОтметкаНезаполненного» или «ОтметкаНезаполненного». Для реальной проверки при записи используйте обработчик «ОбработкаПроверкиЗаполнения» в модуле объекта — визуальная отметка сама по себе запись не блокирует.
Как программно изменить видимость элемента в процессе работы?
Обратитесь к элементу через коллекцию: Элементы.ИмяЭлемента.Видимость = Ложь;. Для серверных обработчиков это работает напрямую, для клиентских — тоже доступно, поскольку изменение свойств элементов не требует вызова сервера.
Почему в веб-клиенте форма выглядит иначе, чем в тонком?
Платформа сама компонует управляемую форму под ширину окна и тип клиента. Жёсткие размеры элементов и сложные многоуровневые группировки дают разный результат. Решение — использовать стандартные группы с вертикальной и горизонтальной группировкой и не задавать фиксированную ширину без необходимости.
Что важно запомнить
Элемент формы создаётся в редакторе формы перетаскиванием реквизита или через меню «Добавить», обязательно с привязкой к данным. Для динамических сценариев используется программное создание: сначала ИзменитьРеквизиты(), затем Элементы.Добавить(). Типовые формы изменяйте через расширения, а результат всегда проверяйте в режиме «Предприятие».