Разработка и Конфигурация · 14 мин
Внешняя обработка 1С: как создать с нуля
Как создать внешнюю обработку 1С в конфигураторе: форма, модуль, команды, подключение через дополнительные отчеты и обработки. Примеры кода и типичные ошибки.
Внешняя обработка — это файл с расширением .epf, который выполняется внутри информационной базы 1С, но не входит в состав конфигурации. Такой механизм позволяет добавлять печатные формы, групповые операции над документами, загрузку данных и сервисные функции без изменения типовой конфигурации и без снятия её с поддержки. Это главный способ расширять типовые решения, когда возможностей расширения конфигурации недостаточно или нужна быстрая разработка «на коленке» для конкретной задачи.
Создать внешнюю обработку может любой разработчик, у которого есть доступ к конфигуратору. Не требуется ни режим предприятия с особыми правами, ни изменение структуры метаданных — обработка живёт отдельным файлом и подключается к базе через типовой механизм «Дополнительные отчеты и обработки» или открывается напрямую через меню «Файл → Открыть».
Ниже разобран полный цикл: от создания пустого файла в конфигураторе до регистрации обработки в базе и проверки её работы. Материал ориентирован на управляемые формы (такси), поскольку именно этот режим используется во всех современных конфигурациях.
Что такое внешняя обработка и когда она нужна
Внешняя обработка — самостоятельный объект платформы, который хранится вне конфигурации, но при запуске получает доступ ко всем её данным: справочникам, документам, регистрам, запросам. Платформа загружает файл в память, компилирует модули и выполняет код в контексте текущей базы. С точки зрения пользователя обработка выглядит как обычное окно программы.
Типичные сценарии применения: печатные формы, которых нет в типовой поставке; групповая обработка документов (перепроведение, изменение реквизитов); загрузка данных из Excel и CSV; сервисные утилиты для администраторов; тестовые инструменты разработчика. Обработки также используются как «песочница» — в них удобно отлаживать запросы и алгоритмы перед переносом в конфигурацию или расширение.
Важно понимать ограничение: обработка не может добавлять новые объекты метаданных — справочники, документы, регистры. Если задача требует расширения структуры данных, нужна доработка конфигурации или расширение. Обработка работает только с тем, что уже есть в базе.
Создание файла обработки в конфигураторе
Откройте конфигуратор той базы, для которой разрабатывается обработка — это удобно, потому что при написании кода будет работать контекстная подсказка по объектам конфигурации. Далее выполните последовательность действий.
- 1В конфигураторе откройте меню «Файл → Новый» (Ctrl+N) и выберите «Внешняя обработка»
- 2В появившемся окне задайте имя обработки — оно станет именем объекта, синоним используется в интерфейсе
- 3Нажмите кнопку «Открыть форму» или в дереве обработки добавьте новую форму через контекстное меню
- 4В конструкторе формы выберите тип «Форма обработки» и перетащите нужные реквизиты и команды
- 5Сохраните файл через «Файл → Сохранить как» — получится файл с расширением .epf
После создания в дереве обработки доступны стандартные разделы: «Формы», «Макеты», «Модуль объекта». Макеты нужны для печатных форм (табличные документы) и шаблонов, модуль объекта — для кода, который выполняется на сервере и не привязан к интерфейсу, формы — для интерактивной части.
Сразу задайте осмысленное имя обработки латиницей без пробелов, например ЗагрузкаПрайсаПоставщика. Имя используется при программном обращении к обработке, а синоним увидят пользователи. Сохраняйте файл в отдельную папку проекта, а не во временный каталог — конфигуратор по умолчанию предлагает временную директорию, и файл легко потерять.
Форма обработки: реквизиты, команды, элементы
Форма — это интерфейс обработки. В редакторе формы слева находится дерево элементов, справа — список реквизитов и команд. Минимальный рабочий набор для большинства задач: реквизиты для параметров (период, организация, ссылка на документ), таблица значений для результатов и команда «Выполнить» с обработчиком.
Реквизиты формы добавляются через контекстное меню «Добавить реквизит» в панели реквизитов. Для каждого реквизита укажите имя и тип — например, СтандартныйПериод для выбора дат или СправочникСсылка.Организации для отбора по организации. Чтобы реквизит появился на форме, перетащите его в дерево элементов.
Команды создаются на вкладке «Команды» → «Команды формы». У команды есть обработчик действия — процедура в модуле формы. Платформа предложит вариант компиляции: «НаКлиенте», «НаСервере» или связка клиент-сервер. Типовой шаблон для команды, работающей с данными: клиентская процедура-обёртка вызывает серверную, где выполняется запрос и обработка.
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
ВыполнитьОбработкуНаСервере();
ПоказатьОповещениеПользователя("Обработка завершена");
КонецПроцедуры
&НаСервере
Процедура ВыполнитьОбработкуНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг
|ГДЕ Дата МЕЖДУ &Начало И &Конец";
Запрос.УстановитьПараметр("Начало", Период.ДатаНачала);
Запрос.УстановитьПараметр("Конец", Период.ДатаОкончания);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
// дальнейшая обработка результата
КонецПроцедуры
Модуль объекта и регистрация в типовой конфигурации
Чтобы обработку можно было подключить через типовой механизм «Дополнительные отчеты и обработки» (подсистема БСП), в модуле объекта нужно реализовать экспортную функцию СведенияОВнешнейОбработке(). Она возвращает структуру с описанием: вид обработки, название, версия, безопасный режим и таблицу команд.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина;
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Загрузка прайса поставщика";
НоваяКоманда.Идентификатор = "ЗагрузкаПрайса";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
Тип команды определяет поведение: «ОткрытиеФормы» просто показывает форму обработки, «ВызовСерверногоМетода» выполняет процедуру ВыполнитьКоманду из модуля объекта без открытия интерфейса — так работают фоновые сервисные обработки и печатные формы. Для печатных форм вид обработки будет «ПечатнаяФорма», и дополнительно указывается, к каким объектам она привязана.
Обратите внимание: функция вызывается в контексте подсистемы БСП, поэтому обращения к общим модулям ДополнительныеОтчетыИОбработки корректны только внутри типовой конфигурации с БСП. При открытии файла напрямую через «Файл → Открыть» эта функция не вызывается и не мешает работе.
Подключение обработки к информационной базе
Есть два способа запустить обработку. Первый — отладочный: в режиме «1С:Предприятие» открыть файл через «Файл → Открыть». Это быстро, но требует у пользователя права на интерактивное открытие внешних файлов, и в защищённых базах такое право часто отключено.
Второй способ — регистрация через «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Предварительно включите сам механизм флажком «Дополнительные отчеты и обработки» в том же разделе настроек. Затем создайте новый элемент справочника, загрузите файл .epf — система прочитает сведения из функции регистрации — и укажите размещение (разделы командного интерфейса, где появится команда).
После регистрации команда обработки появится в выбранных разделах в подменю «Дополнительные обработки». Права на запуск настраиваются через стандартный механизм доступа к дополнительным отчетам и обработкам — можно ограничить круг пользователей конкретными ролями или профилями групп доступа.
Отладка и проверка результата
Внешнюю обработку можно отлаживать так же, как код конфигурации: поставьте точку останова в модуле формы или объекта, запустите режим предприятия из конфигуратора (F5) и откройте обработку. Отладчик остановится на нужной строке, доступны просмотр переменных, таблиц значений и стек вызовов.
Типичная проблема при отладке — изменения в файле обработки не отражаются на поведение. Причина почти всегда одна: база работает с копией, загруженной в справочник дополнительных обработок, а вы редактируете файл на диске. После каждого изменения файла его нужно перезагружать в элемент справочника (команда «Загрузить из файла») или отлаживаться через прямое открытие файла.
Как проверить результат
Форма появляется без ошибок компиляции
Сообщение «Ошибка при вызове конструктора» или «Метод не обнаружен» — проверьте код модулей
При загрузке файла заполняются вид, версия и команды
Ошибка «функция СведенияОВнешнейОбработке не обнаружена» — функция не экспортная или не в модуле объекта
Запросы возвращают ожидаемые строки, записанные объекты видны в списках
Пустой результат без ошибок — проверьте параметры запроса и отборы
Типичные ошибки и ограничения
Ещё одно ограничение: внешняя обработка не имеет собственных сохраняемых настроек. Если пользователю нужно хранить параметры между сеансами, используйте хранилище общих настроек (ХранилищеОбщихНастроек.Сохранить) с уникальным ключом объекта — например, именем обработки.
При работе в клиент-серверном режиме помните, что код «НаСервере» выполняется на сервере 1С: файлы, COM-объекты и внешние компоненты должны быть доступны именно там, а не на компьютере пользователя. Загрузку файла с клиента на сервер выполняйте через НачатьПомещениеФайла и передачу адреса временного хранилища.
Держите в модуле объекта комментарий с версией и датой изменения, а версию дублируйте в СведенияОВнешнейОбработке. Когда в базе накопится несколько копий обработки в справочнике дополнительных обработок, это единственный надёжный способ понять, какая из них актуальная.
Внешняя обработка или расширение конфигурации
Сравнение вариантов
Подходит для разовых операций, печатных форм, загрузок данных и сервисных утилит. Не требует изменения конфигурации, легко обновляется заменой файла. Не может добавлять объекты метаданных и изменять типовые формы
Подходит, когда нужно изменить типовую форму, добавить реквизит, роль или подписку на событие. Хранится в базе, централизованно обновляется. Требует аккуратности при обновлении типовой конфигурации
Крайний вариант для глубоких изменений логики. Усложняет обновление и требует снятия объектов с поддержки — используйте только когда обработка и расширение не справляются
Практическое правило: если задача решается отдельным окном с кнопкой «Выполнить» — делайте внешнюю обработку. Если нужно встроиться в типовые формы, документы или права — делайте расширение. Комбинация тоже допустима: расширение добавляет кнопку на форму документа, а сама логика остаётся в подключаемой обработке.
Что важно запомнить
Внешняя обработка создаётся в конфигураторе за несколько минут: форма с реквизитами и командами, серверный код для работы с данными, функция СведенияОВнешнейОбработке для регистрации в БСП. Тестируйте на копии базы, храните логику на сервере, версионируйте файл — и обработка станет безопасным способом расширять типовую конфигурацию без её изменения.
Частые вопросы
Можно ли создать внешнюю обработку без конфигуратора?
Нет, файл .epf — бинарный формат платформы, и собрать его можно только в конфигураторе. Однако есть альтернатива: внешние отчёты и обработки можно разрабатывать в EDT (1C:Enterprise Development Tools) и выгружать в тот же формат .epf. Для пользователя без навыков разработки проще попросить готовый файл и подключить его через «Дополнительные отчеты и обработки».
Обработка не регистрируется в базе: «Не удалось получить сведения». Что проверить?
Чаще всего функция СведенияОВнешнейОбработке отсутствует в модуле объекта, не имеет ключевого слова Экспорт или содержит синтаксическую ошибку. Также проверьте, что код функции не обращается к объектам, отсутствующим в вашей конфигурации, — например, к общему модулю БСП с другим именем. Откройте обработку в конфигураторе и выполните синтаксическую проверку модуля объекта.
Чем внешняя обработка отличается от внешнего отчёта?
Технически — почти ничем: у отчёта (.erf) есть схема компоновки данных как основной макет и механизм настроек СКД, у обработки (.epf) её нет по умолчанию. Если результат — табличный отчёт с отборами и группировками, создавайте внешний отчёт: пользователи получат стандартные настройки вариантов. Если нужна произвольная логика с формой и кнопками — обработку.
Почему обработка работает у администратора, но не у рядового пользователя?
Две типовые причины. Первая — у пользователя нет права на запуск дополнительных обработок: проверьте размещение обработки и профиль групп доступа. Вторая — код обращается к объектам, на чтение или изменение которых у пользователя нет прав; серверный код выполняется под правами текущего сеанса, поэтому ошибка «Нарушение прав доступа» укажет на конкретный объект.
Можно ли выполнять обработку по расписанию?
Да, если конфигурация на базе БСП: при регистрации команды укажите тип «ВызовСерверногоМетода» и реализуйте в модуле объекта процедуру ВыполнитьКоманду. После этого в карточке дополнительной обработки появится возможность настроить расписание — платформа будет запускать её как регламентное задание. Обработка не должна открывать формы и ждать действий пользователя.
Как передать обработку коллеге с другой базой?
Достаточно отправить файл .epf — он самодостаточен. Условие работоспособности: в базе коллеги должны существовать все объекты метаданных, к которым обращается код (справочники, документы, общие модули). Если обработка писалась под конкретную типовую конфигурацию, она будет работать в другой базе той же конфигурации с совместимым составом объектов.