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

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

1С: как создать форму обработки

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

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

Процесс зависит от режима работы конфигурации: в обычном приложении используются обычные формы, в управляемом — управляемые. Современные конфигурации (УТ 11, ERP, БП 3.0, ЗУП 3.1) работают в режиме управляемого приложения, и формы для них создаются по другим принципам, чем в старых версиях платформы.

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

Создание внешней обработки в конфигураторе

Откройте конфигуратор 1С и выберите в меню «Файл → Новый». В списке типов объектов найдите «Внешняя обработка» и подтвердите создание. Платформа откроет окно нового объекта с деревом метаданных: формы, макеты, реквизиты, табличные части.

Сразу задайте обработке осмысленное имя — оно используется в коде при обращении к объекту, а синоним увидит пользователь. Файл сохраняется с расширением .epf через «Файл → Сохранить как». Имя файла желательно делать латиницей без пробелов: так проще передавать обработку коллегам и подключать её через механизм дополнительных отчётов и обработок.

Если обработка нужна внутри конфигурации, а не как внешний файл, объект «Обработка» добавляется в дерево конфигурации через ветку «Общие → Обработки». Принципы работы с формой при этом идентичны.

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

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

Платформа предложит выбрать тип формы. Для конфигураций в режиме управляемого приложения по умолчанию создаётся управляемая форма. Если конфигурация работает в обычном режиме, можно создать обычную форму. Чтобы форма открывалась при запуске обработки из меню «Файл → Открыть», установите флажок «Назначить форму основной» (или свойство «Основная форма» в палитре свойств формы).

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

Реквизиты формы и элементы управления

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

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

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

Группировка элементов выполняется через элемент «Группа» с вариантами отображения: обычная группа, страницы, командная панель. Для сложных форм с несколькими вкладками используйте группу с видом «Страницы», а внутрь добавляйте группы-страницы.

Команды формы и обработчики событий

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

В управляемой форме обработчики разделяются директивами компиляции. Код с директивой &НаКлиенте выполняется на компьютере пользователя, &НаСервере — на сервере 1С. Любая работа с базой данных (запросы, запись объектов) возможна только на сервере, поэтому типовая схема такова: клиентский обработчик кнопки вызывает серверную процедуру, которая выполняет операцию и возвращает результат.

bsl
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
	ВыполнитьОбработкуНаСервере();
	ПоказатьОповещениеПользователя("Обработка завершена");
КонецПроцедуры

&НаСервере
Процедура ВыполнитьОбработкуНаСервере()
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10 Ссылка ИЗ Справочник.Номенклатура";
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();
КонецПроцедуры

Кроме команд, у формы есть события жизненного цикла: ПриСозданииНаСервере (заполнение начальных данных), ПриОткрытии (клиентская инициализация), ПередЗакрытием. Чаще всего используется ПриСозданииНаСервере — в нём устанавливают значения реквизитов по умолчанию, например текущую дату или организацию пользователя.

Программное открытие формы обработки

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

bsl
// Форма обработки в составе конфигурации
ОткрытьФорму("Обработка.МояОбработка.Форма.ОсновнаяФорма");

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

Параметры, переданные в структуре, доступны в обработчике ПриСозданииНаСервере через объект Параметры. Так реализуется типовой сценарий: пользователь нажимает кнопку в документе, а обработка открывается уже с заполненным контекстом.

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

Обычная и управляемая форма: что выбрать

Сравнение вариантов

Управляемая форма

Стандарт для всех современных конфигураций (УТ 11, ERP, БП 3.0). Работает в тонком и веб-клиенте, но требует разделения кода на клиент и сервер.

Обычная форма

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

Обработка без формы

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

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

Проверка результата, ошибки и ограничения

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

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

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

Запуск обработки
Норма

Форма открывается, элементы видны и доступны

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

Ошибка «Форма не найдена» или пустое окно — не назначена основная форма

Кнопка выполнения
Норма

Операция выполняется, пользователь получает сообщение о результате

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

Ошибка «Вызов сервера» — серверная процедура вызвана без директивы &НаСервере

Сохранение данных
Норма

Результат записывается в базу или отображается в таблице

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

Данные теряются — логика написана только на клиенте

Типичные ошибки
01
Работа с базой данных в клиентском обработчике — в управляемой форме это вызывает ошибку компиляции или выполнения
02
Реквизит добавлен, но не перенесён в дерево элементов — пользователь не видит поле на форме
03
Использование модальных вызовов (Вопрос, ОткрытьЗначение) — в управляемом приложении они заблокированы, нужны асинхронные аналоги с описанием оповещения
04
Хранение промежуточных данных в переменных модуля вместо реквизитов формы — при серверном вызове данные теряются

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

Итог

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

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

Частые вопросы

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

Назначьте форму основной в свойствах формы (флажок при создании или свойство «Использовать как основную»). Тогда при открытии файла .epf через «Файл → Открыть» платформа автоматически откроет именно эту форму.

Почему в модуле формы недоступны запросы и запись в базу?

Код выполняется в клиентском контексте. В управляемой форме оберните логику работы с данными в процедуру с директивой &НаСервере и вызывайте её из клиентского обработчика команды.

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

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

Как передать данные между двумя формами одной обработки?

Передайте данные через структуру параметров при вызове ОткрытьФорму или ПолучитьФорму. Второй вариант — вернуть результат через ОписаниеОповещения: первая форма указывает процедуру, которая получит значение при закрытии второй.

Чем обработка отличается от отчёта при создании формы?

Технически формы создаются одинаково. Отличие в назначении: у отчёта основной механизм — построение результата на СКД, а обработка ориентирована на действия с данными. Если нужен только вывод таблицы по настройкам пользователя, часто проще сделать отчёт.