Выгрузка обработки, отчёта и печатной формы из базы 1С в отдельный файл
Содержание
Сохранить обработку 1С в файл можно двумя путями. Встроенную в конфигурацию обработку выгружают в Конфигураторе: правой кнопкой по объекту в дереве → Сохранить как внешнюю обработку, отчет..., на выходе файл .epf (для отчёта — .erf). Дополнительную обработку, подключённую через справочник, выгружают в режиме Предприятия: откройте её карточку в списке дополнительных отчётов и обработок и выполните команду «Выгрузить в файл…».
Выбор пути зависит от того, где обработка живёт. Если она часть конфигурации, из пользовательского режима её не достать. Если подключена как дополнительная — Конфигуратор не нужен, хватит прав администратора в базе. Ниже — каждый вариант по шагам, плюс работа с макетами, автоматизация и разбор ошибок.
Какие файлы получаются и чем они отличаются
Под словом «обработка» в 1С часто понимают разные вещи. Перед выгрузкой проверьте, что именно нужно переносить, — от этого зависит расширение файла и способ сохранения.
| Расширение | Что внутри | Где открывается |
|---|---|---|
.epf | Внешняя обработка: форма, модули, макеты | Файл → Открыть в Предприятии и Конфигураторе |
.erf | Внешний отчёт: схема компоновки, форма, модули | Так же, как .epf |
.mxl | Табличный документ — один макет или готовая печатная форма | Предприятие, Конфигуратор, бесплатный «1С:Предприятие — Работа с файлами» |
.cfe | Расширение конфигурации — изменения поверх типовой | Конфигуратор, Администрирование → Печатные формы, отчеты и обработки → Расширения |
.cf | Конфигурация целиком | Только Конфигуратор |
.dt | Вся информационная база с данными | Только Конфигуратор, загрузка требует монопольного доступа |
Практические выводы:
- 📦 Для переноса одной доработки в другую базу нужен
.epfили.erf, а не.cfи тем более не.dt. - 🖨️ Внешняя печатная форма — это тот же
.epf, только зарегистрированный в базе с видом «Печатная форма». - 🧩 Если доработку делали расширением, одну обработку из него в
.epfне выгружают — переносят расширение целиком файлом.cfe. - 📄 Макет без кода сохраняется в
.mxl. Такой файл не подключается как обработка, его загружают в макет вручную.
Внешняя обработка не хранит данные базы. В файле только форма, код и макеты. Поэтому .epf весит десятки или сотни килобайт и его спокойно пересылают почтой.
Выгрузка дополнительной обработки в режиме Предприятия
Это самый частый сценарий. Обработку когда-то подключили через справочник, исходный файл потерялся, а теперь её нужно отдать программисту или перенести в другую базу.
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) список лежит по одному пути: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если пункта нет, включите флажок «Дополнительные отчеты и обработки» в том же разделе.
Пошагово
- Откройте список дополнительных отчётов и обработок.
- Найдите нужную строку. Колонка «Вид» подскажет, что это: печатная форма, заполнение табличной части, отчёт или обычная обработка.
- Откройте карточку двойным щелчком.
- В командной панели карточки нажмите «Ещё» и выберите «Выгрузить в файл…».
- Укажите папку. Имя файла программа предложит сама, расширение
.epfили.erfподставится по виду объекта. - Сохраните. Если браузер или клиент спросит, куда положить файл, — подтвердите.
Файл получится ровно таким, каким его загрузили в последний раз. Если после загрузки код меняли в Конфигураторе и снова загружали — выгрузится последняя версия .
Команда доступна пользователю с полными правами или ролью администрирования дополнительных обработок. У рядового бухгалтера её в меню не будет.
Когда в карточке нет нужной команды
- 🔒 Не хватает прав — попросите администратора базы выгрузить файл.
- 🗂️ Объект подключён не через справочник, а открывался вручную через
Файл → Открыть. Тогда в базе его просто нет: файл лежит у того, кто его открывал. - 🏗️ Это нетиповая или сильно изменённая конфигурация без БСП. Механизм дополнительных обработок там может отсутствовать — остаётся Конфигуратор.
Сохранение обработки из Конфигуратора
Конфигуратор нужен в двух случаях: обработка встроена в конфигурацию или вы правите внешний файл и хотите сохранить изменения.
Встроенную обработку — во внешний файл
- Запустите базу в режиме Конфигуратора и откройте конфигурацию:
Конфигурация → Открыть конфигурацию. - В дереве раскройте ветку «Обработки» (для отчёта — «Отчеты»).
- Щёлкните правой кнопкой по нужному объекту.
- Выберите
Сохранить как внешнюю обработку, отчет.... - Задайте имя и папку, нажмите «Сохранить».
Монопольный доступ для этого не нужен: пользователи продолжают работать, база не блокируется. Конфигурация на поддержке тоже не мешает — объект только читается, не меняется.
Сохраняйте из основной конфигурации, а не из конфигурации базы данных, если в основной есть несохранённые доработки. Внешний файл возьмёт то, что открыто в дереве.
Внешнюю обработку после правки
Файл → Открыть, выберите.epfили.erf.- Внесите изменения в форму, модуль или макет.
Файл → СохранитьилиCtrl+S— перезапишет исходный файл.- Чтобы оставить старую версию нетронутой, используйте
Файл → Сохранить каки дайте новое имя, напримерПечатьАкта_v2.epf.
Перед перезаписью файла, который уже подключён в рабочей базе, сделайте копию старой версии. Если новая сломает печать, вернуть прежнюю будет не из чего.
Чем встроенная отличается от внешней после выгрузки
Выгруженная из конфигурации обработка сохраняет ссылки на общие модули, справочники и документы своей базы. В другой конфигурации она откроется, но упадёт там, где обращается к отсутствующим объектам. Перед переносом пройдитесь по модулю поиском: вызовы вида ОбщийМодульИмя.Процедура() и типы СправочникСсылка.Xxx должны существовать в целевой базе.
Макеты и изменённые печатные формы
Печатные формы в 1С живут в трёх местах, и сохраняются они по-разному.
| Где форма | Как сохранить в файл |
|---|---|
| Внешняя печатная форма в справочнике дополнительных обработок | «Выгрузить в файл…» из карточки → .epf |
| Макет типовой формы, изменённый пользователем | Открыть макет из списка макетов печатных форм и сохранить табличный документ как .mxl |
| Макет внутри конфигурации или расширения | В Конфигураторе открыть макет и сохранить его отдельным файлом .mxl через меню Файл |
Изменённый макет в пользовательском режиме
В конфигурациях на БСП список макетов открывается так: Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм. Изменённые пользователем макеты отмечены в списке отдельным значком.
Чтобы унести такой макет в другую базу:
- Откройте макет на редактирование.
- Сохраните табличный документ в файл
.mxl(кнопка с дискетой или команда сохранения в меню «Ещё»). - В целевой базе откройте тот же макет, откройте файл
.mxlи скопируйте содержимое в макет целиком, через выделение всех ячеек.
Макет переносится без кода. Если в старой базе к макету добавили новые параметры, а код формы их не заполняет, в новой базе эти ячейки будут пустыми.
Готовую печатную форму — в файл
Иногда под «сохранить печатную форму» имеют в виду не шаблон, а сформированный документ. В окне печати нажмите кнопку «Сохранить» (значок дискеты), выберите формат: .pdf, .xlsx, .docx, .mxl или .odt. Там же можно сразу приложить файл к документу базы.
Выгрузка обработок программно и пакетно
Когда дополнительных обработок десятки, выгружать их по одной долго. Есть два способа автоматизировать.
Код на встроенном языке
В БСП файл обработки хранится в реквизите ХранилищеОбработки справочника ДополнительныеОтчетыИОбработки. Серверная процедура выгружает все действующие обработки в папку на сервере:
&НаСервереБезКонтекста
Процедура ВыгрузитьВсеОбработки(Каталог)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Обработки.Ссылка КАК Ссылка,
| Обработки.ИмяФайла КАК ИмяФайла
|ИЗ
| Справочник.ДополнительныеОтчетыИОбработки КАК Обработки
|ГДЕ
| НЕ Обработки.ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Данные = Выборка.Ссылка.ХранилищеОбработки.Получить();
Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
Продолжить;
КонецЕсли;
ИмяФайла = Выборка.ИмяФайла;
Если ПустаяСтрока(ИмяФайла) Тогда
ИмяФайла = Строка(Выборка.Ссылка.УникальныйИдентификатор()) + ".epf";
КонецЕсли;
Данные.Записать(Каталог + ПолучитьРазделительПути() + ИмяФайла);
КонецЦикла;
КонецПроцедуры
Что учесть:
- 🖥️ Код выполняется на сервере. В клиент-серверной базе файлы появятся в папке на сервере 1С, а не на вашем компьютере. Пользователю службы сервера нужны права на запись в эту папку.
- 📥 Чтобы отдать файл пользователю на клиент, поместите двоичные данные во временное хранилище (
ПоместитьВоВременноеХранилище) и вызовите на клиентеФайловаяСистемаКлиент.СохранитьФайлиз БСП. - 📛 Если у двух обработок одинаковое имя файла, вторая перезапишет первую. Для архива добавьте к имени код или дату.
- 🛡️ Запускайте такой код из внешней обработки под администратором. В базе с включённой защитой от опасных действий платформа сначала спросит подтверждение.
Пакетный режим Конфигуратора
Платформа умеет разбирать .epf на XML-файлы и собирать обратно. Это нужно для хранения обработок в Git и для сравнения версий:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Empty" /DumpExternalDataProcessorOrReportToFiles "D:\src\ПечатьАкта.xml" "D:\epf\ПечатьАкта.epf" /Out "D:\log.txt"
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Empty" /LoadExternalDataProcessorOrReportFromFiles "D:\src\ПечатьАкта.xml" "D:\epf\ПечатьАкта.epf" /Out "D:\log.txt"
Первая команда выгружает обработку в исходники, вторая собирает .epf из исходников. Номер версии в пути замените на установленный у вас. Для запуска нужна любая информационная база в параметре /F — подойдёт пустая файловая. Результат и ошибки смотрите в файле из /Out.
Что проверить перед переносом файла в другую базу
Файл сохранён — это половина дела. Вторая половина — чтобы он открылся у получателя.
Почему обработка не сохраняется или не открывается
Если обработка в базе открывается, но модули в Конфигураторе пустые или закрыты, исходный текст поставлен без кода или под паролем. Выгрузка сохранит файл в том же виде: программист не сможет его править без исходника от автора.
Частые вопросы
Можно ли сохранить встроенную обработку без Конфигуратора?
Чем `.epf` отличается от `.erf`?
.epf — внешняя обработка, .erf — внешний отчёт. Отчёт строится на схеме компоновки данных и поддерживает варианты и настройки отчёта. Открываются оба одинаково, через Файл → Открыть.Можно ли хранить обработки в Git?
.epf на XML-файлы пакетной командой /DumpExternalDataProcessorOrReportToFiles и храните исходники в репозитории. Перед отправкой в базу соберите файл обратно командой /LoadExternalDataProcessorOrReportFromFiles.