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