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

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

Как сделать обработку в 1С: пошаговое руководство

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

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

Создание обработки доступно любому специалисту, знакомому с конфигуратором и встроенным языком 1С. Минимальный сценарий занимает 15–20 минут: создать файл, добавить форму, написать процедуру и проверить запуск в пользовательском режиме. Сложность растёт, когда обработку нужно встроить в подсистему «Дополнительные отчеты и обработки» (БСП) или сделать управляемую форму с динамическими списками.

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

Какие бывают обработки и что выбрать

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

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

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

Внешняя обработка (.epf)

Форма с параметрами и кнопкой выполнения; подходит для интерактивных действий над данными. Не требует изменения конфигурации.

Внешний отчёт (.erf)

Только вывод данных через СКД или табличный документ; не подходит для записи изменений в базу.

Обработка внутри конфигурации

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

Расширение конфигурации

Подходит, когда обработку нужно встроить в интерфейс типовой базы без снятия с поддержки; сложнее в разработке.

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

Откройте конфигуратор любой базы (для разработки подойдёт пустая файловая база). В меню выберите Файл → Новый → Внешняя обработка. Задайте имя латиницей без пробелов, например ГрупповоеИзменениеРеквизитов — именно имя используется в коде при обращении к объекту. Синоним укажите на русском: он отображается пользователю.

Сохраните файл через Файл → Сохранить как в рабочую папку проекта. Файл получит расширение .epf. Дальнейшая структура обработки видна в дереве метаданных: формы, макеты, реквизиты, модуль объекта.

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

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

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

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

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

Написание кода: модуль формы и модуль объекта

Логика обработки размещается в двух местах. Модуль формы содержит обработчики команд и работу с элементами интерфейса. Модуль объекта — процедуры, которые выполняются на сервере и работают с данными напрямую; он же используется при вызове обработки без формы.

Типовой шаблон обработчика кнопки в модуле формы выглядит так:

&НаКлиенте

Процедура ВыполнитьОбработку(Команда)

Если Не ПроверитьЗаполнение() Тогда

Возврат;

КонецЕсли;

ВыполнитьОбработкуНаСервере();

ПоказатьПредупреждение(, "Обработка завершена");

КонецПроцедуры

&НаСервере

Процедура ВыполнитьОбработкуНаСервере()

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Номенклатура.Ссылка КАК Ссылка

|ИЗ

| Справочник.Номенклатура КАК Номенклатура

|ГДЕ

| НЕ Номенклатура.ПометкаУдаления";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

// действия с объектом

КонецЦикла;

КонецПроцедуры

Обратите внимание на директивы компиляции: &НаКлиенте не имеет доступа к запросам и прямой записи объектов, &НаСервере не имеет доступа к элементам формы и диалогам. Нарушение этого правила — самая частая причина ошибки «Процедура или функция с указанным именем не определена» при запуске.

Регистрация обработки в базе через БСП

В конфигурациях на базе Библиотеки стандартных подсистем (УТ, ERP, БП, ЗУП) внешние обработки подключаются через раздел «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Чтобы база приняла файл, в модуле объекта нужно реализовать экспортную функцию СведенияОВнешнейОбработке(), возвращающую структуру с видом, версией и командами.

Минимальный пример для глобальной обработки с открытием формы:

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;

ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");

ПараметрыРегистрации.Вставить("Наименование", "Групповое изменение реквизитов");

ПараметрыРегистрации.Вставить("Версия", "1.0");

ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);

ПараметрыРегистрации.Вставить("Информация", "Обработка для группового изменения данных");

Команды = Новый ТаблицаЗначений;

Команды.Колонки.Добавить("Представление");

Команды.Колонки.Добавить("Идентификатор");

Команды.Колонки.Добавить("Использование");

Команды.Колонки.Добавить("ПоказыватьОповещение");

Команда = Команды.Добавить();

Команда.Представление = "Открыть обработку";

Команда.Идентификатор = "ОткрытьОбработку";

Команда.Использование = "ОткрытиеФормы";

Команда.ПоказыватьОповещение = Ложь;

ПараметрыРегистрации.Вставить("Команды", Команды);

Возврат ПараметрыРегистрации;

КонецФункции

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

Проверка работы и типичные ошибки

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

Для отладки используйте конфигуратор: установите точку останова в модуле и запустите отладку (Отладка → Начать отладку). Внешняя обработка, открытая в отлаживаемом сеансе, остановится на точке, и вы увидите значения переменных.

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

Ограничения и безопасный режим

При регистрации через БСП обработка по умолчанию выполняется в безопасном режиме: запрещены операции с файловой системой, COM-объекты, внешние компоненты и привилегированный режим. Если обработке нужно читать файлы с диска или писать без проверки прав, параметр «БезопасныйРежим» в сведениях ставится в Ложь — но делать это стоит только для доверенного кода.

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

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

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

Запуск файла через Файл → Открыть
Норма

Форма открывается, ошибок компиляции нет

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

Сообщение о синтаксической ошибке или пустое окно

Регистрация в дополнительных обработках
Норма

Обработка появилась в списке и открывается из интерфейса

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

Ошибка «не соответствует формату» — нет функции сведений

Результат в данных
Норма

Изменено ожидаемое число объектов, данные корректны

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

Изменений нет или затронуты лишние объекты

Часто задаваемые вопросы

Чем внешняя обработка отличается от расширения конфигурации?

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

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

Да. Разработку ведут в любой другой базе той же версии платформы (подойдёт пустая файловая), а готовый .epf переносят в рабочую базу и открывают в режиме предприятия. Конфигуратор рабочей базы не нужен, если обработка не встраивается внутрь конфигурации.

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

Чаще всего в модуле объекта отсутствует экспортная функция СведенияОВнешнейОбработке() или она возвращает структуру без обязательных полей (Вид, Команды). Проверьте также, что вид указан из допустимого списка: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта и другие.

Как сделать, чтобы обработка выполнялась автоматически по расписанию?

В БСП для команд с использованием «ВызовСерверногоМетода» можно настроить регламентное задание в карточке дополнительной обработки. Команда должна иметь идентификатор и обработчик ВыполнитьКоманду в модуле объекта, работающий без открытия формы.

Откроется ли обработка, созданная в 8.3, в более новой версии платформы?

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

Как передать в обработку параметры при открытии из другого кода?

Используйте структуру параметров в методе ОткрытьФорму("ВнешняяОбработка.Имя.Форма", ПараметрыФормы). В модуле формы значения доступны через объект Параметры в обработчике ПриСозданииНаСервере. Для вызова без формы применяйте ВнешниеОбработки.Создать(ПутьКФайлу) и обращение к экспортным процедурам модуля объекта.

Итог

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

Обработка создаётся в конфигураторе как внешняя обработка с формой и кодом; серверная логика отделяется от клиентской директивами. Для встраивания в типовую базу нужна функция СведенияОВнешнейОбработке. Массовые изменения данных тестируйте на копии и выполняйте в транзакции.