Введение
После обновления конфигурации в парке внешних печатных форм потребовалось внести однотипные изменения в модули. Открывать и править каждую вручную — долго. Готового инструмента не нашёл: существующие решения либо устарели, либо требуют внешних утилит вроде V8Unpack.
Написал обработку через штатный Конфигуратор платформы. Ключи /DumpExternalDataProcessorOrReportToFiles и /LoadExternalDataProcessorOrReportFromFiles позволяют выгружать .epf/.erf в XML + .bsl и собирать обратно. Осталось сделать удобную обёртку.
С тех пор обработка дорабатывалась под разные задачи: добавил словари замен в JSON, инкрементальную сборку только изменённых файлов, умную замену скобок в условиях ПО. Каждый раз, когда возникала задача массового рефакторинга, обработка экономила часы рутины.
В статье покажу её возможности и порядок работы. В качестве иллюстрации разберу реальный пример — правку соединений с регистром СклоненияПредставленийОбъектов в запросах ВПФ ЗУП 3.1. Вручную такая правка заняла бы полдня, через обработку — пять минут.
Что умеет обработка
Обработка выполняет массовую замену текста в модулях внешних обработок и отчётов (.epf/.erf) через штатный Конфигуратор платформы, без внешних зависимостей.
Возможности:
- Выгрузка .epf/.erf в XML + .bsl через штатный ключ
/DumpExternalDataProcessorOrReportToFiles - Замена текста в .bsl файлах по таблице правил:
- Учёт регистра (опционально)
- Игнорирование лишних пробелов (опционально)
- «Умная замена» — автоматическая корректировка скобок в условиях
ПО (...)↔ПО ...
- Инкрементная сборка — Конфигуратор запускается только для изменённых файлов (экономия 80–90% времени)
- Словари замен — сохранение и загрузка правил в формате JSON для обмена между разработчиками
- Подробное логирование — в окно сообщений выводятся имена обработок, файлы и номера сработавших правил
- Кроссплатформенность — запуск Конфигуратора через
ЗапуститьПриложение(без COM-объектов), работает на Windows и Linux - Интерфейс — управляемые формы, работает в тонком и толстом клиенте
Требования
- Платформа: 1С:Предприятие 8.3.15 и выше (рекомендовано 8.3.24+)
- Режим работы: тонкий или толстый клиент
- ОС: Windows, Linux
- Права: пользователь должен иметь право «Администрирование» в профиле групп доступа
- Информационная база: любая (файловая или клиент-серверная) — используется как «подложка» для работы Конфигуратора
Установка
- Скачайте файл обработки
МассоваяПравкаМодулейВнешнихОбработок.epf. - Откройте его в 1С:Предприятие через меню Файл → Открыть или двойным кликом по файлу.
- Обработка готова к работе.
Как использовать
Обработка разделена на три логических этапа. Каждый этап выполняется отдельной командой — это позволяет контролировать процесс и при необходимости прерваться.
Шаг 1. Настройка подключения
Откройте вкладку «Подключения» и укажите параметры любой информационной базы (файловой или клиент-серверной). Эта база используется как «подложка» для запуска Конфигуратора — в неё ничего не записывается.
- Путь к платформе — полный путь к
1cv8.exeнужной версии (8.3.15 и выше). - Тип базы — файловая (
/F) или клиент-серверная (/S). - Параметры подключения — путь к файловой базе либо сервер и имя базы.
- Пользователь / пароль — если требуется авторизация.
Вкладка «Подключения»: здесь задаются параметры информационной базы, которую Конфигуратор будет использовать как «подложку» для выгрузки и сборки внешних обработок.
Шаг 2. Выбор каталогов
На вкладке «Файлы» укажите три пути:
- Каталог обработок — папка с исходными
.epf/.erfфайлами. Поиск рекурсивный. - Каталог выгрузки — временная папка, в которую Конфигуратор распакует XML и
.bsl. Создаётся автоматически. - Каталог результата — сюда будут сохраняться собранные (исправленные) .epf/.erf файлы. Исходные файлы не затрагиваются.
Вкладка «Файлы»: задаются каталоги с исходными обработками, временной папкой для выгрузки и папкой для результатов.
Шаг 3. Выгрузка обработок
Нажмите кнопку «Выгрузить». Обработка:
- Рекурсивно найдёт все
.epfи.erfв каталоге источников. - Для каждого файла запустит
1cv8.exeс ключом/DumpExternalDataProcessorOrReportToFiles. - Рядом с каждым XML-файлом появится папка с
.bsl-модулями (ObjectModule.bsl, Form.bsl и т.п.). - Заполнит таблицу «Результаты» со статусом выгрузки каждого файла.
Во время работы отображается прогресс через Состояние(). Длительную операцию можно прервать через Ctrl+Break.
Вкладка «Файлы» после успешной выгрузки: все 18 внешних обработок выгружены в XML и .bsl. Для каждого файла указан статус «Выгружено» и комментарий. В нижнем окне — итоговое сообщение об успешном завершении.
Шаг 4. Настройка правил замены
Перейдите на вкладку «Замена» и заполните таблицу ПараметрыЗамены:
- Искомый текст — что заменяем (точная строка, включая пробелы и регистр).
- Текст замены — на что заменяем.
- Выполнять — флаг активности правила. Неактивные правила пропускаются.
Доступны два дополнительных режима (галочки в форме):
- С учётом регистра — по умолчанию замена регистронезависимая (стандартное поведение
СтрЗаменитьв 1С). - Игнорировать лишние пробелы — нормализует пробелы и табуляции перед сравнением.
Правила можно загрузить из JSON-файла (Загрузить словарь из файла) или сохранить текущие (Сохранить словарь в файл). Формат JSON включает версию, дату экспорта, флаги и массив правил — удобно передавать между разработчиками и версионировать в Git.
Вкладка «Замена» с настроенными правилами замены. Над таблицей — флажки учёта регистра и игнорирования пробелов. Раскрыто выпадающее меню кнопки «Заполнить» с командами для работы со словарями.
Пример реальных правил (кейс с регистром СклоненияПредставленийОбъектов в ЗУП 3.1):
| Искомый текст | Текст замены | |
|---|---|---|
| ФамилияИО,ИОФамилия | ФамилияИО,ИОФамилия,ФИОПолные | |
| ПО (КадровыеДанныеСотрудников.ФизическоеЛицо = СклоненияФизлиц.Объект) | ПО КадровыеДанныеСотрудников.ФизическоеЛицо = СклоненияФизлиц.Объект И (ПОДСТРОКА(СклоненияФизлиц.ИменительныйПадеж, 1, 256) = КадровыеДанныеСотрудников.ФИОПолные) | |
| ПО (КадровыеДанныеСотрудников.ДолжностьПоШтатномуРасписанию = СклоненияДолжностей.Объект) | ПО КадровыеДанныеСотрудников.ДолжностьПоШтатномуРасписанию = СклоненияДолжностей.Объект И (ПОДСТРОКА(СклоненияДолжностей.ИменительныйПадеж, 1, 256) = ВЫРАЗИТЬ(СклоненияДолжностей.Объект КАК Справочник.ШтатноеРасписание).Наименование) |
Важно про «умную замену». Конфигуратор 1С выгружает условия ПО непоследовательно: в одних .epf — ПО (Условие), в других — ПО Условие. Оба варианта синтаксически корректны, но для СтрЗаменить() это разные строки. Обработка автоматически пробует оба варианта, если точное совпадение не найдено. Это избавляет от необходимости заводить в словаре два правила на одну и ту же логическую замену.
Шаг 5. Выполнение замены
Нажмите кнопку «Выполнить замену». Обработка:
- Рекурсивно найдёт все
.bslв каталоге выгрузки. - Для каждого файла применит активные правила в порядке их следования в таблице.
- Перезапишет файл только если текст реально изменился (сравнение до/после).
- Зафиксирует имя изменённой обработки в таблице ИзменённыеОбработки (с проверкой на дубликаты).
- Выведет в окно сообщений подробный лог: имя обработки, имя файла, номера сработавших правил.
Пример сообщения в логе:
Изменена обработка: "ВПР_ПриказОбОплатеВыходногоДняБезПерерыва_v3",
файл: ObjectModule.bsl. Применимы правила: №1, №2, №3.
По итогу выводится сводка: всего .bsl-файлов, изменено файлов, уникальных обработок для сборки.
Результат выполнения замены в модулях внешних обработок. По заданным правилам (№1, №2, №3) были автоматически изменены программные модули (ObjectModule.bsl) у выгруженных файлов внешних обработок.
Шаг 6. Сборка исправленных обработок
Нажмите кнопку «Собрать». Обработка запустит Конфигуратор с ключом /LoadExternalDataProcessorOrReportFromFiles только для файлов из таблицы ИзменённыеОбработки — это и есть инкрементная сборка.
- Неизменённые
.epf/.erfдаже не открываются Конфигуратором. - Результат сохраняется в Каталог результата с тем же именем и расширением, что и исходный файл.
- Исходные файлы в Каталоге обработок остаются нетронутыми — можно сравнивать через
diffили любой инструмент сравнения.
Если из 50 обработок изменились 3 — Конфигуратор запустится 3 раза, а не 50. На больших парках ВПФ это экономит 80–90% времени этапа сборки.
Структура каталога «ДляВыгрузки» после выполнения этапа выгрузки. Для каждой внешней обработки автоматически создана отдельная папка и соответствующий ей XML-файл с программным модулем (текстом).
Результат нажатия кнопки «Собрать» — все изменённые текстовые модули были успешно скомпилированы обратно в готовые внешние обработки (.epf) и помещены в целевой каталог.
Пример работы
Исходная задача: исправить задвоение в запросах 18 внешних печатных форм ЗУП 3.1.
Время выполнения:
- Выгрузка 18 файлов: ~2 минуты
- Замена текста: ~10 секунд
- Сборка 12 изменённых файлов (из 18): ~1.5 минуты
- Итого: менее 5 минут
Вручную это заняло бы 3–4 часа.
Почему не V8Unpack?
Существующие решения на Инфостарте (например, публикация 186927 2013 года) используют внешнюю утилиту V8Unpack.exe для разбора .epf файлов. Это создаёт проблемы:
- Блокировка антивирусами — V8Unpack.exe часто определяется как подозрительный файл
- Только Windows — COM-объект
WScript.Shellне работает на Linux - Только старые форматы — ручной парсер ломается на новых бинарных форматах .epf (8.3.10+)
- Обычные формы — не работает в тонком и толстом клиенте
Наша обработка использует штатный Конфигуратор платформы, который:
- Работает со всеми форматами .epf/.erf (старый текстовый и новый бинарный)
- Не требует внешних утилит
- Работает на Windows и Linux
- Работает на управляемых формах
Известные ограничения
- Только текстовая замена — без поддержки регулярных выражений
- Нет предпросмотра замен (dry-run) — изменения применяются сразу
- Нет прямой загрузки обратно в справочник БСП — нужно загружать вручную через Администрирование → Дополнительные отчеты и обработки
- Нет кнопки «Проверить» собранную обработку на компиляцию
- Пароли хранятся в открытом виде в реквизитах формы (не сохраняются между сеансами)
- Требует права «Администрирование» — не подойдёт для пользователей без соответствующего профиля групп доступа
История версий
- v1.0 — начальная версия: выгрузка, замена, сборка
- v1.1 — добавлена инкрементная сборка (только изменённые файлы)
- v1.2 — добавлена «умная замена» скобок в ПО
- v1.3 — добавлено сохранение/загрузка словаря замен в JSON
- v1.4 — кроссплатформенность: WshShell → ЗапуститьПриложение
- v1.5 — добавлена обработка прерывания пользователем (Ctrl+Break)
Планы на будущее
- Галочка «Без учёта регистра» (как в публикации 186927)
- Кнопка «Проверить результат» через
ВнешниеОбработки.Создать() - Фильтр по имени файла (маска или regex)
- Прямая загрузка обратно в справочник ДополнительныеОтчетыИОбработки
- Поддержка регулярных выражений
- Предпросмотр замен (dry-run с diff)
Заключение
Обработка закрывает реальную боль программистов 1С, которые сопровождают парк ВПФ в ЗУП 3.1, БП 3.0, УТ 11 и других современных конфигурациях. Если у вас есть вопросы или предложения по доработке — пишите в комментариях.
https://github.com/Vermutz/massovaya-pravka-moduley-vneshnih-obrabotok
Проверено на следующих конфигурациях и релизах:
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.37.72
Вступайте в нашу телеграмм-группу Инфостарт