Выгрузка обработки из конфигурации и базы 1С в файл
Содержание
Чтобы выгрузить обработку из 1С, откройте базу в Конфигураторе, найдите обработку в дереве конфигурации, щёлкните по ней правой кнопкой и выберите Сохранить как внешнюю обработку, отчет.... Получится файл .epf, который открывается в любой базе через Файл → Открыть.
Это главный способ, но не единственный. Если обработка подключена как дополнительная (справочник «Дополнительные отчеты и обработки»), её выгружают прямо из пользовательского режима, без Конфигуратора. Когда нужен только код — сохраняют модуль в .txt. Когда нужно хранить обработку в Git или сравнивать версии — выгружают в XML-файлы.
Что подготовить и какой формат выгрузки выбрать
Сначала определите, где живёт обработка и зачем вы её достаёте. От этого зависит способ.
| Что нужно | Формат | Где делается | Права |
|---|---|---|---|
| Перенести обработку в другую базу | .epf (.erf для отчёта) | Конфигуратор | Администратор, доступ к Конфигуратору |
| Забрать дополнительную обработку из базы | .epf | Пользовательский режим | Право на администрирование доп. обработок |
| Прочитать или отдать на ревью код | .txt или .bsl | Конфигуратор, окно модуля | Доступ к Конфигуратору |
| Сохранить печатную форму или макет | .mxl | Конфигуратор или пользовательский режим | Зависит от места |
| Хранить в системе версий, сравнивать | XML-файлы | Конфигуратор или пакетный режим | Доступ к Конфигуратору |
Перед работой проверьте три вещи:
- 🔑 Учётная запись. Нужен пользователь с ролью «Полные права» или «Администратор системы». Без неё Конфигуратор не откроется.
- 📁 Папка для файлов. Заведите отдельный каталог, например
D:\Export\Obrabotki. Файлы с одинаковым именем перезаписываются без вопросов. - 🧩 Версия платформы. Файл
.epf, сохранённый на новой платформе, откроется на старой только если формат совместим. Выгружайте на той же версии платформы, на которой будут работать с файлом, или на более ранней.
Монопольный доступ к базе для выгрузки не нужен. Пользователи могут работать: сохранение объекта в файл не меняет конфигурацию.
Как выгрузить обработку из конфигурации в файл .epf
Этот способ подходит для обработок, которые входят в состав конфигурации: ветка Обработки в дереве метаданных.
Шаг 1. Откройте дерево конфигурации
- Запустите 1С и выберите базу.
- Нажмите
Конфигуратор. - Войдите под администратором.
- Откройте меню
Конфигурация → Открыть конфигурацию. Слева появится дерево объектов.
Шаг 2. Найдите нужную обработку
- Разверните ветку
Обработки. - Если обработок сотни, встаньте на ветку и начните набирать имя — курсор перейдёт к совпадению.
- Имя в дереве — это имя объекта метаданных (например,
ЗагрузкаДанныхИзТабличногоДокумента), а не то, что видит пользователь. Синоним видно в свойствах объекта (Alt+Enter).
Не знаете, как обработка называется внутри? Откройте её в пользовательском режиме и скопируйте навигационную ссылку: команда Получить ссылку есть в меню заголовка окна формы. В ссылке будет e1cib/app/Обработка.ИмяОбработки.
Шаг 3. Сохраните как внешнюю
- Щёлкните по обработке правой кнопкой.
- Выберите
Сохранить как внешнюю обработку, отчет.... - Укажите папку и имя файла. Расширение
.epfподставится само. - Нажмите
Сохранить.
Для отчётов из ветки Отчеты команда та же, файл получится с расширением .erf.
Шаг 4. Проверьте файл
Откройте полученный файл в другой (лучше тестовой) базе через Файл → Открыть и попробуйте запустить. Если обработка обращается к объектам, которых в новой базе нет, ошибка всплывёт сразу, а не у пользователя.
Встроенная обработка часто зависит от общих модулей и справочников своей конфигурации. В чужой базе такой файл откроется, но упадёт на первой строке, где вызывается отсутствующий модуль. Это не ошибка выгрузки: зависимости в .epf не попадают.
Выгрузка дополнительной обработки из базы без Конфигуратора
Многие обработки не входят в конфигурацию, а загружены в базу как дополнительные. Так подключают печатные формы, загрузчики, заполнение табличных частей. Сам файл хранится внутри базы, и его можно достать обратно.
В БП 3.0, ЗУП 3.1 и УТ 11 путь одинаковый:
- Откройте
Администрирование → Печатные формы, отчеты и обработки. - Перейдите по ссылке
Дополнительные отчеты и обработки. - Выделите строку с нужной обработкой.
- В меню
Ещёнайдите командуВыгрузить в файл.... - Укажите папку и сохраните.
Если в меню Ещё команды нет, откройте карточку обработки: там она тоже есть. Если не видно и там — у пользователя нет права на администрирование дополнительных обработок, нужна полноправная учётная запись.
Выгруженный файл — это ровно то, что когда-то загрузили. Если разработчик правил обработку, но в базу новую версию не загружал, вы получите старую. Сверяйте версию в карточке (поле с номером версии заполняется из кода обработки).
Текстовая выгрузка модуля для анализа кода
Иногда нужен не рабочий файл, а только код: показать программисту, сравнить с другой версией, поискать вызов по тексту. Для этого обработку не обязательно выгружать целиком.
Модуль объекта и модули форм
- В дереве конфигурации раскройте обработку.
- Для модуля объекта: правая кнопка по обработке →
Открыть модуль объекта. - Для формы: раскройте ветку
Формы, откройте форму, внизу переключитесь на вкладкуМодуль. - Сохраните текст: при активном окне модуля выберите
Файл → Сохранить каки укажите тип «Текстовый документ».
Самый быстрый вариант без меню: Ctrl+A, Ctrl+C в окне модуля и вставка в любой редактор. Кодировку сохраняйте в UTF-8, иначе кириллица в комментариях может превратиться в знаки вопроса.
Сколько модулей у обработки
У одной обработки бывает несколько модулей, и выгружать надо все:
- 📄 модуль объекта (основная логика, методы для серверного вызова);
- 📄 модуль менеджера (есть не всегда, часто там печать и команды);
- 📄 модуль каждой формы — у обработки с пятью формами пять модулей.
Если модулей много, текстовая выгрузка по одному неудобна. Удобнее выгрузить обработку в XML (раздел ниже): каждый модуль ляжет отдельным файлом .bsl.
Если модуль открывается пустым или со строкой о защите, значит, обработка поставлена без исходных текстов или модуль закрыт паролем. Код из такой обработки не выгрузить, и обходить защиту не стоит: это нарушает права автора. Запросите исходники у поставщика.
Как выгрузить обработку с формами и макетами
При сохранении в .epf формы, макеты, реквизиты и табличные части переносятся вместе с обработкой. Отдельно их выгружают, когда нужен только один элемент.
Что попадает в файл .epf, а что нет
| Входит в файл | Не входит в файл |
|---|---|
| Реквизиты и табличные части обработки | Общие модули конфигурации |
| Все формы с их модулями | Общие макеты и общие картинки |
| Собственные макеты обработки | Роли и права на обработку |
| Команды, описанные в самой обработке | Подсистемы и место в командном интерфейсе |
Из таблицы видно главное ограничение: если форма обработки использует общую картинку или вызывает общий модуль, в другой базе этого не будет. Перед переносом откройте модули и найдите вызовы вида ОбщегоНазначения., УправлениеПечатью. — это функции БСП. Они работают в любой типовой конфигурации на БСП, но не в самописной базе.
Макет отдельно в .mxl
Печатную форму или шаблон загрузки удобно сохранить в табличный документ:
- Раскройте обработку → ветка
Макеты. - Откройте макет двойным щелчком.
- Выберите
Файл → Сохранить как. - Тип файла — «Табличный документ (*.mxl)».
Файл .mxl открывается в любой 1С через Файл → Открыть, а также в бесплатной программе 1С:Предприятие — Работа с файлами. Готовую печатную форму можно сохранить в .mxl и в пользовательском режиме: в форме предварительного просмотра есть кнопка сохранения в файл.
Макет типа «Табличный документ» сохраняется в .mxl, а макет типа «Текстовый документ» — в .txt. Двоичные данные (картинки, шаблоны Word) сохраняются в исходном формате файла.
Групповая выгрузка: файлы XML и хранилище конфигурации
Когда обработок десятки или их надо держать в системе контроля версий, выгружать по одной неудобно.
Выгрузка всей конфигурации в файлы
- В Конфигураторе откройте
Конфигурация → Выгрузить конфигурацию в файлы.... - Выберите пустую папку.
- Дождитесь окончания. На большой конфигурации это минуты, а то и десятки минут.
В папке появится каталог DataProcessors, а в нём — подкаталог на каждую обработку. Внутри XML-описание, модули .bsl и формы. Удобно, чтобы:
- 🔍 искать по коду всех обработок сразу обычным поиском по файлам;
- 📊 сравнивать две выгрузки утилитой сравнения папок;
- 🗂 класть исходники в Git.
Обратно в .epf такую обработку собирают через внешний файл: откройте любую внешнюю обработку
в Конфигураторе и загрузите её из XML (правой кнопкой по корню внешней обработки, команда загрузки из файлов). Либо пакетной командой — она ниже.
Хранилище конфигурации
Если база подключена к хранилищу, нужную обработку можно достать в той версии, которая была раньше:
- Откройте
Конфигурация → Хранилище конфигурации → История хранилища. - Найдите версию, где обработку меняли последний раз (фильтр по объекту сокращает список).
- Сохраните эту версию конфигурации в файл
.cfкомандой в окне истории. - Загрузите
.cfв отдельную пустую базу и уже оттуда сохраните обработку как внешнюю.
Путь длиннее, но это единственный штатный способ получить старую версию, если текущую уже переписали.
Не захватывайте объекты в хранилище только ради выгрузки. Захват блокирует обработку для других разработчиков, а для сохранения в файл он не нужен.
Автоматизация выгрузки обработок
Ручная выгрузка хороша для одного-двух файлов. Регулярный бэкап исходников или сборку для нескольких баз лучше автоматизировать.
Пакетный запуск Конфигуратора
Платформа умеет выгружать и собирать внешние обработки из командной строки. Пример .bat, который раскладывает внешнюю обработку в XML и собирает её обратно:
@echo off
set V8="C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe"
set BASE=D:\Bases\Buh_test
rem Разобрать .epf в XML-файлы
%V8% DESIGNER /F "%BASE%" /N "Admin" /P "" ^
/DumpExternalDataProcessorOrReportToFiles "D:\Src\Zagruzka" "D:\Export\Zagruzka.epf" ^
/Out "D:\Export\dump.log"
rem Собрать .epf из XML-файлов
%V8% DESIGNER /F "%BASE%" /N "Admin" /P "" ^
/LoadExternalDataProcessorOrReportFromFiles "D:\Src\Zagruzka\Zagruzka.xml" "D:\Export\Zagruzka_new.epf" ^
/Out "D:\Export\load.log"
Для всей конфигурации есть /DumpConfigToFiles "D:\Src\Config". Путь к 1cv8.exe подставьте свой: номер версии в папке у каждого свой. Точный синтаксис параметров для вашей версии платформы смотрите в справке Конфигуратора, раздел о параметрах командной строки.
Пакетному запуску всё равно нужна база: Конфигуратор без неё не стартует. Подойдёт пустая файловая база на той же версии платформы.
Обработка, которая выгружает дополнительные обработки
Если в базе загружено 30 дополнительных обработок и нужны все, выгружать по одной долго. В конфигурациях на БСП файл каждой хранится в реквизите ХранилищеОбработки справочника ДополнительныеОтчетыИОбработки. Небольшая внешняя обработка сохранит их все разом. Процедура выполняется на сервере, поэтому папка указывается на машине сервера 1С (в файловой базе это ваш компьютер):
&НаСервереБезКонтекста
Процедура ВыгрузитьВсеНаСервере(Каталог)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Обработки.Ссылка КАК Ссылка,
| Обработки.ИмяФайла КАК ИмяФайла
|ИЗ
| Справочник.ДополнительныеОтчетыИОбработки КАК Обработки
|ГДЕ
| НЕ Обработки.ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Данные = Выборка.Ссылка.ХранилищеОбработки.Получить();
Если ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
ИмяФайла = ?(ПустаяСтрока(Выборка.ИмяФайла),
СтрШаблон("obrabotka_%1.epf", Выборка.Ссылка.Код),
Выборка.ИмяФайла);
Данные.Записать(Каталог + "\" + ИмяФайла);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Код читает каждую обработку из хранилища значения и пишет двоичные данные в файл с исходным именем. Если имя не сохранилось, файл получает имя по коду элемента. Запускайте под полноправным пользователем: обычному права на справочник могут не дать.
Частые вопросы
Почему в контекстном меню нет команды «Сохранить как внешнюю обработку»?
Можно ли выгрузить обработку, если конфигурация на поддержке и закрыта для изменений?
Чем .epf отличается от .erf?
.epf — внешняя обработка, .erf — внешний отчёт. Внутри устройство похожее, но отчёт имеет основную схему компоновки и открывается как отчёт с вариантами и настройками.