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