Выгрузка обработки из конфигурации и базы 1С в файл

· 10 мин

Содержание

Чтобы выгрузить обработку из 1С, откройте базу в Конфигураторе, найдите обработку в дереве конфигурации, щёлкните по ней правой кнопкой и выберите Сохранить как внешнюю обработку, отчет.... Получится файл .epf, который открывается в любой базе через Файл → Открыть.

Это главный способ, но не единственный. Если обработка подключена как дополнительная (справочник «Дополнительные отчеты и обработки»), её выгружают прямо из пользовательского режима, без Конфигуратора. Когда нужен только код — сохраняют модуль в .txt. Когда нужно хранить обработку в Git или сравнивать версии — выгружают в XML-файлы.

Что подготовить и какой формат выгрузки выбрать

Сначала определите, где живёт обработка и зачем вы её достаёте. От этого зависит способ.

Что нужноФорматГде делаетсяПрава
Перенести обработку в другую базу.epf (.erf для отчёта)КонфигураторАдминистратор, доступ к Конфигуратору
Забрать дополнительную обработку из базы.epfПользовательский режимПраво на администрирование доп. обработок
Прочитать или отдать на ревью код.txt или .bslКонфигуратор, окно модуляДоступ к Конфигуратору
Сохранить печатную форму или макет.mxlКонфигуратор или пользовательский режимЗависит от места
Хранить в системе версий, сравниватьXML-файлыКонфигуратор или пакетный режимДоступ к Конфигуратору

Перед работой проверьте три вещи:

  • 🔑 Учётная запись. Нужен пользователь с ролью «Полные права» или «Администратор системы». Без неё Конфигуратор не откроется.
  • 📁 Папка для файлов. Заведите отдельный каталог, например D:\Export\Obrabotki. Файлы с одинаковым именем перезаписываются без вопросов.
  • 🧩 Версия платформы. Файл .epf, сохранённый на новой платформе, откроется на старой только если формат совместим. Выгружайте на той же версии платформы, на которой будут работать с файлом, или на более ранней.

Монопольный доступ к базе для выгрузки не нужен. Пользователи могут работать: сохранение объекта в файл не меняет конфигурацию.

Как выгрузить обработку из конфигурации в файл .epf

Этот способ подходит для обработок, которые входят в состав конфигурации: ветка Обработки в дереве метаданных.

Шаг 1. Откройте дерево конфигурации

  1. Запустите 1С и выберите базу.
  2. Нажмите Конфигуратор.
  3. Войдите под администратором.
  4. Откройте меню Конфигурация → Открыть конфигурацию. Слева появится дерево объектов.

Шаг 2. Найдите нужную обработку

  1. Разверните ветку Обработки.
  2. Если обработок сотни, встаньте на ветку и начните набирать имя — курсор перейдёт к совпадению.
  3. Имя в дереве — это имя объекта метаданных (например, ЗагрузкаДанныхИзТабличногоДокумента), а не то, что видит пользователь. Синоним видно в свойствах объекта (Alt+Enter).

Не знаете, как обработка называется внутри? Откройте её в пользовательском режиме и скопируйте навигационную ссылку: команда Получить ссылку есть в меню заголовка окна формы. В ссылке будет e1cib/app/Обработка.ИмяОбработки.

Шаг 3. Сохраните как внешнюю

  1. Щёлкните по обработке правой кнопкой.
  2. Выберите Сохранить как внешнюю обработку, отчет....
  3. Укажите папку и имя файла. Расширение .epf подставится само.
  4. Нажмите Сохранить.

Для отчётов из ветки Отчеты команда та же, файл получится с расширением .erf.

Шаг 4. Проверьте файл

Откройте полученный файл в другой (лучше тестовой) базе через Файл → Открыть и попробуйте запустить. Если обработка обращается к объектам, которых в новой базе нет, ошибка всплывёт сразу, а не у пользователя.

Встроенная обработка часто зависит от общих модулей и справочников своей конфигурации. В чужой базе такой файл откроется, но упадёт на первой строке, где вызывается отсутствующий модуль. Это не ошибка выгрузки: зависимости в .epf не попадают.

Выгрузка дополнительной обработки из базы без Конфигуратора

Многие обработки не входят в конфигурацию, а загружены в базу как дополнительные. Так подключают печатные формы, загрузчики, заполнение табличных частей. Сам файл хранится внутри базы, и его можно достать обратно.

В БП 3.0, ЗУП 3.1 и УТ 11 путь одинаковый:

  1. Откройте Администрирование → Печатные формы, отчеты и обработки.
  2. Перейдите по ссылке Дополнительные отчеты и обработки.
  3. Выделите строку с нужной обработкой.
  4. В меню Ещё найдите команду Выгрузить в файл....
  5. Укажите папку и сохраните.

Если в меню Ещё команды нет, откройте карточку обработки: там она тоже есть. Если не видно и там — у пользователя нет права на администрирование дополнительных обработок, нужна полноправная учётная запись.

Выгруженный файл — это ровно то, что когда-то загрузили. Если разработчик правил обработку, но в базу новую версию не загружал, вы получите старую. Сверяйте версию в карточке (поле с номером версии заполняется из кода обработки).

Текстовая выгрузка модуля для анализа кода

Иногда нужен не рабочий файл, а только код: показать программисту, сравнить с другой версией, поискать вызов по тексту. Для этого обработку не обязательно выгружать целиком.

Модуль объекта и модули форм

  1. В дереве конфигурации раскройте обработку.
  2. Для модуля объекта: правая кнопка по обработке → Открыть модуль объекта.
  3. Для формы: раскройте ветку Формы, откройте форму, внизу переключитесь на вкладку Модуль.
  4. Сохраните текст: при активном окне модуля выберите Файл → Сохранить как и укажите тип «Текстовый документ».

Самый быстрый вариант без меню: Ctrl+A, Ctrl+C в окне модуля и вставка в любой редактор. Кодировку сохраняйте в UTF-8, иначе кириллица в комментариях может превратиться в знаки вопроса.

Сколько модулей у обработки

У одной обработки бывает несколько модулей, и выгружать надо все:

  • 📄 модуль объекта (основная логика, методы для серверного вызова);
  • 📄 модуль менеджера (есть не всегда, часто там печать и команды);
  • 📄 модуль каждой формы — у обработки с пятью формами пять модулей.

Если модулей много, текстовая выгрузка по одному неудобна. Удобнее выгрузить обработку в XML (раздел ниже): каждый модуль ляжет отдельным файлом .bsl.

Если модуль открывается пустым или со строкой о защите, значит, обработка поставлена без исходных текстов или модуль закрыт паролем. Код из такой обработки не выгрузить, и обходить защиту не стоит: это нарушает права автора. Запросите исходники у поставщика.

Как выгрузить обработку с формами и макетами

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

Что попадает в файл .epf, а что нет

Входит в файлНе входит в файл
Реквизиты и табличные части обработкиОбщие модули конфигурации
Все формы с их модулямиОбщие макеты и общие картинки
Собственные макеты обработкиРоли и права на обработку
Команды, описанные в самой обработкеПодсистемы и место в командном интерфейсе

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

Макет отдельно в .mxl

Печатную форму или шаблон загрузки удобно сохранить в табличный документ:

  1. Раскройте обработку → ветка Макеты.
  2. Откройте макет двойным щелчком.
  3. Выберите Файл → Сохранить как.
  4. Тип файла — «Табличный документ (*.mxl)».

Файл .mxl открывается в любой 1С через Файл → Открыть, а также в бесплатной программе 1С:Предприятие — Работа с файлами. Готовую печатную форму можно сохранить в .mxl и в пользовательском режиме: в форме предварительного просмотра есть кнопка сохранения в файл.

Макет типа «Табличный документ» сохраняется в .mxl, а макет типа «Текстовый документ» — в .txt. Двоичные данные (картинки, шаблоны Word) сохраняются в исходном формате файла.

Групповая выгрузка: файлы XML и хранилище конфигурации

Когда обработок десятки или их надо держать в системе контроля версий, выгружать по одной неудобно.

Выгрузка всей конфигурации в файлы

  1. В Конфигураторе откройте Конфигурация → Выгрузить конфигурацию в файлы....
  2. Выберите пустую папку.
  3. Дождитесь окончания. На большой конфигурации это минуты, а то и десятки минут.

В папке появится каталог DataProcessors, а в нём — подкаталог на каждую обработку. Внутри XML-описание, модули .bsl и формы. Удобно, чтобы:

  • 🔍 искать по коду всех обработок сразу обычным поиском по файлам;
  • 📊 сравнивать две выгрузки утилитой сравнения папок;
  • 🗂 класть исходники в Git.

Обратно в .epf такую обработку собирают через внешний файл: откройте любую внешнюю обработку в Конфигураторе и загрузите её из XML (правой кнопкой по корню внешней обработки, команда загрузки из файлов). Либо пакетной командой — она ниже.

Хранилище конфигурации

Если база подключена к хранилищу, нужную обработку можно достать в той версии, которая была раньше:

  1. Откройте Конфигурация → Хранилище конфигурации → История хранилища.
  2. Найдите версию, где обработку меняли последний раз (фильтр по объекту сокращает список).
  3. Сохраните эту версию конфигурации в файл .cf командой в окне истории.
  4. Загрузите .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", Выборка.Ссылка.Код),
                Выборка.ИмяФайла);
            Данные.Записать(Каталог + "\" + ИмяФайла);
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры

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

Проверка выгруженной обработки
Выполнено: 0 / 5

Частые вопросы

Почему в контекстном меню нет команды «Сохранить как внешнюю обработку»?
Команда есть только у обработок и отчётов. У справочников, документов и общих модулей её нет. Проверьте, что вы стоите на объекте в ветке «Обработки» или «Отчеты», а не на его форме или макете.
Можно ли выгрузить обработку, если конфигурация на поддержке и закрыта для изменений?
Да. Сохранение во внешний файл ничего не меняет в конфигурации, поэтому снимать с поддержки или включать возможность изменения не нужно.
Чем .epf отличается от .erf?
.epf — внешняя обработка, .erf — внешний отчёт. Внутри устройство похожее, но отчёт имеет основную схему компоновки и открывается как отчёт с вариантами и настройками.
Выгруженная обработка в другой базе пишет «Объект не найден» или «Процедура или функция с указанным именем не определена». Что делать?
Обработка ссылается на объект или общий модуль, которого нет в новой базе. Найдите строку из текста ошибки в модуле и замените вызов своим кодом или перенесите недостающий модуль.
Как узнать, из какой версии платформы сохранён файл .epf?
По самому файлу это не видно. Надёжный признак — откройте файл на нужной платформе: если формат новее, файл не откроется и платформа выдаст ошибку. Поэтому выгружайте на той версии, которая стоит у получателя, или на более ранней.