История создания
На одном из проектов стояла задача — внедрить новый механизм работы с подписантами в печатных формах документов. Раньше должности и расшифровки были «зашиты» в коде жёстко, и любое кадровое изменение требовало вмешательства программиста.
Был разработан универсальный механизм правил, который позволил уполномоченным пользователям самостоятельно управлять составом подписантов. Но для его внедрения требовалось внести однотипные изменения в 52 внешние печатные формы.
Стандартный путь: выгрузить каждую форму из справочника ДополнительныеОтчетыИОбработки, открыть в Конфигураторе, найти блок кода, заменить его, сохранить и загрузить обратно. На 52 формы это несколько дней работы с риском пропустить ошибку в одной из форм.
Чтобы закрыть задачу за один рабочий день, был написан инструмент для массовой выгрузки и обратной загрузки файлов по заданным отборам. После внедрения стало понятно, что обработка применима и в других сценариях: миграции между базами, резервное копирование парка ВПФ, массовое обновление.
Возможности обработки
Отборы (работают в комбинации по логике «И»):
- По виду объекта: отчёт, обработка, печатная форма, заполнение объекта
- По назначению: конкретный документ, справочник, регистр
- По группе справочника (с учётом вложенности)
- По маске имени файла:
*— любая последовательность,?— один символ - Флаг «Только опубликованные» — выгружает только объекты с публикацией «Используется»
Режимы работы:
- Заполнение таблицы: замена списка или добавление к существующим (без дублей)
- Импорт: перезапись хранилища найденного элемента. Если элемент с таким
ИмяФайлаотсутствует — файл пропускается с записью в лог ошибок
Контроль результата:
- Отметка успешно загруженных файлов в колонке «Загружен»
- Подробный лог операций в панели сообщений с разделением на информацию и ошибки
- Кнопка «Сбросить отборы» для быстрой очистки всех фильтров
Требования
- Платформа 8.3, управляемые формы
- Конфигурация на БСП со справочником
ДополнительныеОтчетыИОбработки(БП 3.0, ЗУП 3.1, УТ 11, ERP, УНФ и др.) - Права на изменение справочника дополнительных отчётов и обработок
Как пользоваться
Рисунок 1. Общий вид обработки. В верхней панели расположены отборы и параметры, в табличной части — список найденных отчётов, в нижней панели — результат последней операции
Сценарий 1: Массовая выгрузка
- Откройте обработку.
- В поле «Отбор вид» выберите нужный тип (например, «Печатная форма»).
- При необходимости уточните отбор по «Назначению» (например, «Приём на работу (Документ)») или укажите «Маску имени файла».
Рисунок 2. Гибкая система отборов: по виду объекта («Заполнение объекта»), назначению («Отражение зарплаты в бухучете»), маске имени файла. Всплывающая подсказка показывает синтаксис масок
- Нажмите «Заполнить» — в таблицу попадут все объекты, удовлетворяющие условиям (логика отборов — «И»).
- Выберите «Каталог выгрузки» через диалог выбора папки.
- Нажмите «Выгрузить».
Файлы .epf и .erf сохранятся в указанный каталог с именами, соответствующими реквизиту ИмяФайла справочника. В панели сообщений появится счётчик успешных выгрузок и список ошибок, если они возникли.
Рисунок 3. Результат выгрузки: файлы .erf сохранены в каталог C:\Temp\Файлы, в панели сообщений — «Успешно выгружено обработок: 40»
Сценарий 2: Обратная загрузка
- Внесите правки в выгруженные файлы (через Конфигуратор или внешний редактор).
- Поместите исправленные файлы в каталог, из которого будет выполняться загрузка.
- В обработке укажите этот каталог.
- Нажмите «Загрузить».
Обработка найдёт в каталоге все файлы с расширениями .epf и .erf, для каждого найдёт элемент справочника по реквизиту ИмяФайла, обновит его ХранилищеОбработки и отметит успешные загрузки зелёной галочкой в колонке «Загружен».
Рисунок 4. Результат загрузки: успешно обновлённые файлы отмечены зелёными галочками в колонке «Загружен», в панели сообщений — «Успешно обновлено файлов: 40»
Как устроено
Заполнение списка
Один пакетный запрос с временной таблицей ВТ_Назначения. Отбор по назначению — через левое соединение с ВТ, в результат выводится объект назначения из первой строки ТЧ (НомерСтроки = 1).
Каждый фильтр (по виду, маске, группе, назначению, публикации) реализован через параметр-переключатель в тексте запроса. Если переключатель выключен — соответствующее условие не срабатывает.
Маска имени файла конвертируется функцией КонвертироватьМаскуДляПодобно: * → %, ? → _. Иерархический отбор — через В ИЕРАРХИИ.
При установленном флаге «Добавлять к существующему» в запрос передаётся массив уже добавленных ссылок — они исключаются условием НЕ Ссылка В (&УжеДобавлены).
Выгрузка
Серверная часть для каждой строки ТЧ:
- Получает объект справочника.
- Извлекает двоичные данные из
ХранилищеОбработки. - Помещает их во временное хранилище.
- Возвращает массив структур
ИмяФайла+АдресВХранилище.
Клиентская часть для каждой структуры вызывает ПолучитьФайл(Адрес, ПолныйПуть, Ложь).
Пустые хранилища и элементы без ИмяФайла пропускаются.
Загрузка
Клиент сканирует каталог двумя вызовами НайтиФайлы — отдельно *.epf и *.erf. Каждый файл читается в ДвоичныеДанные и помещается во временное хранилище. Массив структур передаётся на сервер.
Серверная часть для каждого файла:
- Ищет элемент справочника через
НайтиПоРеквизиту("ИмяФайла", ...). - Если элемент не найден — пишет в лог ошибок и переходит к следующему. Новые элементы не создаются.
- Получает двоичные данные из ВХ, записывает:
Объект.ХранилищеОбработки = Новый ХранилищеЗначения(ДвоичныеДанные), затемОбъект.Записать(). - Имя успешного файла добавляется в массив
лУспешныеИмена.
После цикла сервер проходит по ТЧ формы и для строк, чьё ИмяФайла есть в массиве успешных, выставляет Загружен = Истина.
Ограничения
- Не выгружает группы, только элементы
- Файлы ищутся строго по
ИмяФайла. Если реквизит пуст — объект будет пропущен - Требуется доступ к файловой системе клиента
- При импорте новые элементы справочника не создаются — обновляются только существующие
Связанные публикации
Массовая правка модулей внешних обработок через штатный Конфигуратор. 1С 8.3
https://github.com/Vermutz/massovyy-eksport-i-import-dopolnitelnyh-otchetov-i-obrabotok
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.200.23
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.38.18
Вступайте в нашу телеграмм-группу Инфостарт