Внешние обработки 1С: когда EPF лучше расширения

У бухгалтера пятнадцать поставщиков. Каждый присылает прайс-лист в своём формате Excel: у одного цены в третьей колонке, у другого — в пятой, у третьего артикул разбит на две ячейки, а четвёртый каждый месяц меняет структуру файла. Бухгалтер тратит два дня на ручной перенос цен в 1С. Каждый квартал. Четыре раза в год.

Расширение конфигурации для этой задачи — избыточно. Менять конфигурацию — тем более. Здесь нужна внешняя обработка: файл с расширением EPF, который запускается, делает своё дело и не оставляет следов в конфигурации. Мы уже разбирали выбор между расширениями и доработкой конфигурации. Эта статья — про третий инструмент, который часто оказывается самым практичным.

Что такое внешняя обработка и чем она отличается от расширения

Внешняя обработка — это скомпилированный файл формата EPF (External Processing File) или ERF (External Report File), который выполняется в контексте информационной базы 1С, но не входит в состав конфигурации. Физически это отдельный файл на диске или в справочнике «Дополнительные отчёты и обработки» внутри БСП.

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

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

У внешних обработок есть важное техническое свойство: они не требуют монопольного режима для обновления. Заменить файл EPF можно прямо во время работы пользователей. Расширение тоже обновляется без монопольного режима, но требует перезапуска сеансов. Замена файла обработки — мгновенная: следующий запуск уже использует новую версию.

Формат ERF — это то же самое, но для отчётов. Внешний отчёт строится на системе компоновки данных (СКД) и возвращает табличный результат. Разница чисто функциональная: EPF выполняет действия, ERF показывает данные.

Сравнение внешней обработки EPF и расширения конфигурации 1С

Пять задач, которые EPF решает лучше всего

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

1. Загрузка данных из внешних файлов. Тот самый случай с прайс-листами. Мы разрабатывали обработку загрузки прайсов из Excel для торговой компании с пятнадцатью поставщиками. Каждый поставщик — свой формат: у кого-то артикул в первой колонке, у кого-то в четвёртой, у кого-то цена с НДС, у кого-то без. Обработка содержит настраиваемый маппинг колонок: пользователь один раз указывает, где какое поле, сохраняет профиль — и дальше загрузка выполняется в два клика. Пятнадцать профилей на пятнадцать поставщиков. Два дня ручной работы превратились в двадцать минут. Расширение для этой задачи не нужно: обработка не перехватывает типовые процедуры, не добавляет реквизиты, не модифицирует формы. Она читает Excel и создаёт документы установки цен. Всё.

2. Периодические массовые операции. Пересчёт цен по формуле — задача, которая возникает раз в квартал. Наценить всю номенклатуру группы на 8%, округлить до рублей, исключить позиции с фиксированной ценой. Обработка принимает параметры (группу номенклатуры, процент наценки, правило округления), формирует предварительную таблицу, показывает пользователю результат до применения и по подтверждению создаёт документ установки цен. Держать такую логику в конфигурации постоянно — нет смысла. Она нужна четыре раза в год. EPF лежит в сетевой папке, запускается по необходимости, обновляется без перезапуска сеансов.

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

4. Сервисные инструменты для разработки и администрирования. Генератор тестовых данных — наш внутренний инструмент. EPF создаёт 500 тестовых заказов покупателей с рандомными товарами, контрагентами и датами. Используем для нагрузочного тестирования после оптимизации. Запускаем на копии базы, прогоняем сценарий, замеряем время. Такой инструмент не должен существовать в рабочей конфигурации — он опасен. Но как EPF-файл, который сознательно открывает разработчик на тестовой базе, — идеален.

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

Жизненный цикл внешней обработки 1С — от задачи до подключения через БСП

Подключение через БСП: дополнительные отчёты и обработки

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

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

БСП поддерживает несколько типов подключения:

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

Заполнение объекта. Обработка привязывается к конкретному виду документа или справочника. В форме документа появляется кнопка «Заполнить» — и обработка заполняет табличную часть, реквизиты шапки или выполняет другие действия с текущим объектом. Удобно для нестандартного заполнения: загрузить состав заказа из Excel, заполнить реквизиты по шаблону, скопировать данные из связанного документа.

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

Создание связанных объектов. Из формы документа по кнопке создаётся другой документ, заполненный данными текущего. Например, из заказа покупателя — заявка на перемещение со склада.

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

Обновление обработки в БСП — загрузка нового файла в тот же элемент справочника. Все пользователи при следующем запуске получат обновлённую версию. Без перезапуска сеансов, без монопольного режима, без деплоя на терминальные серверы.

Ограничения: когда EPF не подойдёт

Внешние обработки — инструмент с чётко очерченными границами. Понимание этих границ экономит время и деньги.

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

EPF не добавляет реквизиты. Внешняя обработка работает с существующей структурой метаданных. Она не может добавить колонку в табличную часть документа, создать новый регистр или справочник. Если для решения задачи требуется хранить дополнительные данные в новых объектах — это территория расширений или конфигурации. Исключение — использование регистров сведений БСП для хранения произвольных данных, но это скорее обходной путь, чем архитектурное решение.

EPF не встраивается в интерфейс глубоко. Через БСП можно добавить кнопку в форму документа — но нельзя изменить саму форму: переставить элементы, добавить закладку, скрыть реквизит в зависимости от условия. Всё, что касается модификации пользовательского интерфейса типовых объектов, — расширения.

EPF не работает в фоновых заданиях напрямую. Регламентное задание не может вызвать внешнюю обработку из файла. Через БСП есть механизм запуска дополнительных обработок по расписанию, но он сложнее в настройке и менее надёжен, чем код в расширении или конфигурации. Если задача должна выполняться автоматически по расписанию без участия пользователя, EPF — не лучший выбор.

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

Сводная таблица поможет определить инструмент:

КритерийEPFРасширениеДоработка конфигурации
Перехват событийНетДаДа
Добавление реквизитовНетДаДа
Модификация формОграниченноДаДа
Обновление без перезапускаДаНетНет
Работа по расписаниюЧерез БСПДаДа
Влияние на обновляемостьНулевоеСреднееВысокое
Скорость деплояМгновенноМинутыЧасы

Когда типовая конфигурация не покрывает задачу, выбор инструмента доработки определяет стоимость владения системой. EPF занимает свою нишу — и в этой нише не имеет конкурентов.

Таблица выбора инструмента доработки 1С — EPF, расширение или конфигурация

Как заказать разработку внешней обработки

Процесс разработки EPF укладывается в четыре шага.

Формулировка задачи. Что делает обработка, с какими данными работает, кто будет запускать, как часто. Чем конкретнее описание, тем точнее оценка. «Загрузка прайс-листов из Excel» — это понятная задача с предсказуемым объёмом. «Автоматизация работы с поставщиками» — нет.

Разработка и тестирование. Мы разрабатываем обработку на копии базы клиента. Тестируем на реальных данных: загружаем настоящие прайсы, обрабатываем реальные документы, проверяем граничные случаи. EPF-файл не зависит от конфигурации жёстко — но зависит от структуры данных. Если у клиента нестандартная номенклатура или особые типы цен, это учитывается при разработке.

Подключение. Если обработка разовая — передаём файл с инструкцией. Если будет использоваться регулярно — подключаем через БСП, настраиваем права доступа, при необходимости создаём инструкцию для пользователей. Для работы по расписанию настраиваем вызов из регламентного задания. Если задача предполагает не только локальную автоматизацию, но и обмен данными с внешними системами, мы можем выстроить связку EPF + REST API, где обработка обращается к HTTP-сервису или наоборот — сервис запускает обработку по входящему запросу.

Поддержка. При обновлении конфигурации EPF, как правило, продолжает работать без изменений — в этом её главное преимущество. Но если вендор изменит программный интерфейс, который использует обработка (переименует процедуру, изменит состав параметров), потребуется адаптация. Мы ведём реестр разработанных обработок и проверяем совместимость при крупных обновлениях конфигурации.

Стоимость разработки внешней обработки, как правило, ниже стоимости расширения: меньше точек интеграции, проще тестирование, нет рисков для обновляемости. Для задач из категории «загрузка, выгрузка, массовая обработка, нестандартная печать» — EPF остаётся самым экономичным инструментом в арсенале разработчика 1С.