Где смотреть исходный код файла .epf и как его отлаживать
Содержание
Код внешней обработки 1С открывают в Конфигураторе: Файл → Открыть, выбрать файл .epf, затем в дереве обработки правой кнопкой по корню — «Открыть модуль
объекта», а для форм — двойной щелчок по форме и вкладка «Модуль» внизу редактора. Нужна любая информационная база, запущенная в режиме Конфигуратора, даже пустая.
Расширение конфигурации нужно в другом случае: когда обработка не внешняя, а встроена в типовую конфигурацию , и её код надо изменить без снятия с поддержки. Ниже оба пути, плюс выгрузка кода в текстовые файлы, отладка и разбор ошибок при открытии.
Как открыть внешнюю обработку в Конфигураторе
Внешняя обработка — самостоятельный файл. Он не хранится в базе, поэтому подойдёт любая база той же версии платформы. Удобно держать отдельную пустую базу «для разработки», чтобы не открывать Конфигуратор рабочей базы.
Пошагово
- Запустите 1С и выберите базу. Нажмите кнопку «Конфигуратор» в окне запуска.
- В Конфигураторе выберите
Файл → Открыть(илиCtrl+O). - В диалоге выбора файла укажите тип «Внешняя обработка» или просто выберите файл
.epf. Для внешних отчётов то же самое, только расширение.erf. - Откроется отдельное окно с деревом объекта: корневой элемент с именем обработки, ниже — «Реквизиты», «Табличные части», «Формы», «Макеты».
- Щёлкните правой кнопкой по корню дерева и выберите «Открыть модуль объекта».
- Чтобы увидеть код формы, раскройте ветку «Формы», дважды щёлкните по форме. В нижней части редактора переключитесь на вкладку «Модуль».
💡 Открывать конфигурацию базы (Конфигурация → Открыть конфигурацию) для этого не нужно. Внешняя обработка открывается сама по себе.
Где искать нужный код
В обработке обычно три места, где лежит логика:
- 📄 Модуль объекта — серверные процедуры, функция
СведенияОВнешнейОбработке()для регистрации в БСП, основная обработка данных. - 🖼 Модули форм — обработчики кнопок и событий формы, директивы
&НаКлиентеи&НаСервере. - 📑 Макеты — тексты запросов, схемы компоновки данных, печатные формы. Код там не пишут, но запрос часто сидит именно в макете.
Внутри модуля откройте список процедур через Ctrl+Alt+P. Для поиска по тексту модуля — Ctrl+F. Если вы ищете обработчик конкретной кнопки, откройте форму, выделите кнопку и посмотрите, какая команда к ней привязана. В свойствах команды указано имя процедуры-действия.
Когда вместо внешнего файла нужен режим расширения
Часто «внешней обработкой» называют то, что ею не является. Перед тем как искать файл, определите, где живёт код.
| Где находится обработка | Как открыть код | Можно ли менять |
|---|---|---|
Файл .epf на диске | Файл → Открыть в Конфигураторе | Да, сохранить файл |
| Встроена в конфигурацию (ветка «Обработки») | Конфигурация → Открыть конфигурацию, найти объект в дереве | Только при снятой поддержке или через расширение |
| Добавлена расширением | Конфигурация → Расширения конфигурации, открыть нужное расширение | Да, в самом расширении |
| Загружена в справочник дополнительных обработок БСП | Сначала выгрузить из карточки в файл, затем открыть как .epf | Да, потом загрузить обратно в карточку |
Как изменить код встроенной обработки через расширение
Расширения появились в платформе 8.3.6. Это основной способ поправить типовой объект и не потерять обновления.
- В Конфигураторе откройте
Конфигурация → Расширения конфигурации. - Добавьте новое расширение и откройте его.
- В основной конфигурации найдите нужную обработку, щёлкните правой кнопкой и выберите «Добавить в расширение».
- В расширении откройте модуль заимствованного объекта или формы.
- Создайте перехватчик нужной процедуры с аннотацией
&Перед,&Послеили&Вместо. - Сохраните расширение и обновите его в базе.
&После("ЗаполнитьТабличнуюЧасть")
Процедура Расш1_ЗаполнитьТабличнуюЧасть()
// ваш код выполнится после типовой процедуры
КонецПроцедуры
Посмотреть исходный код встроенной обработки можно и без расширения: открыть конфигурацию и найти объект в дереве. Расширение нужно только для правки.
Как выгрузить код обработки в файлы
Иногда удобнее работать с кодом как с обычным текстом: сравнить две версии, положить в Git, открыть в стороннем редакторе. Для этого обработку выгружают в набор XML-файлов и файлов модулей .bsl.
Из Конфигуратора
Откройте обработку через Файл → Открыть, щёлкните правой кнопкой по корню дерева и выберите «Выгрузить в файлы…». Укажите пустой каталог. Обратная операция — «Загрузить из файлов…» в том же меню.
Из командной строки
Пакетный режим Конфигуратора умеет то же без интерфейса. Это удобно, если обработок много.
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F"C:\Bases\Empty" /DumpExternalDataProcessorOrReportToFiles "C:\src\MyObr.xml" "C:\Obr\MyObr.epf" /Out "C:\src\log.txt"
Обратная сборка из файлов в .epf:
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F"C:\Bases\Empty" /LoadExternalDataProcessorOrReportFromFiles "C:\src\MyObr.xml" "C:\Obr\MyObr.epf" /Out "C:\src\log.txt"
Путь к 1cv8.exe и номер платформы подставьте свои. Параметр /F указывает на файловую базу
, через которую работает Конфигуратор.
После выгрузки модуль объекта лежит в подкаталоге с именем обработки, в файле ObjectModule.bsl. Модули форм — в подкаталогах форм, файл Module.bsl. Это обычный текст в UTF-8, его открывает любой редактор.
💡 В 1С:EDT внешнюю обработку можно импортировать в проект и работать с ней в среде разработки. Это имеет смысл, если команда уже ведёт разработку в EDT.
Как устроен файл .epf изнутри
Файл .epf — контейнер. В нём хранятся метаданные (реквизиты, табличные части, формы), тексты модулей и макеты. Открыть его архиватором и прочитать как текст не получится, формат внутренний. Поэтому для чтения кода используют Конфигуратор или выгрузку в файлы.
На что посмотреть, когда разбираете чужую обработку:
- 🔍 Тип форм. Старые обработки делали на обычных формах, современные — на управляемых. В управляемых формах код разделён директивами компиляции. Если обработка на обычных формах, в клиенте «Такси» она может не открыться или работать только в толстом клиенте.
- 🔗 Регистрационные данные. Функция
СведенияОВнешнейОбработке()в модуле объекта говорит, как обработка встраивается в БСП: вид (печатная форма, заполнение, дополнительная обработка), к каким объектам привязана, какие команды даёт. - 📦 Макеты. Если в модуле запрос получают из макета, текст запроса ищите там, а не в коде.
- 🌐 Внешние вызовы. Обращения к HTTP-сервисам, COM-объектам, файловой системе. Это первое, что проверяют перед запуском чужого файла.
Обработка без исходного кода или под защитой
Бывает, что модуль открывается пустым, хотя обработка работает. Или в нём пара строк, которые вызывают что-то непонятное. Это признак защиты.
Что встречается на практике:
- 🔒 Модуль без исходного текста. Код поставлен в скомпилированном виде. Конфигуратор показывает структуру, но текста процедур нет.
- 🧩 Обфускация. Текст есть, но имена переменных бессмысленны, логика запутана, строки зашифрованы. Читать можно, понимать тяжело.
- 🔑 Система лицензирования разработчика. Часть кода защищена и работает только при наличии ключа или лицензии от автора.
Восстанавливать исходный текст защищённой обработки, снимать защиту или обходить проверку лицензии разработчика — нарушение его исключительных прав. Такой код принадлежит автору, даже если обработку купила ваша организация.
Легальные пути:
- Запросить у разработчика исходный код. Многие продают его отдельно или передают по договору доработки.
- Попросить автора внести нужное изменение.
- Если обработка нужна только как образец логики — написать свою, опираясь на структуру реквизитов и форм, которую Конфигуратор показывает и без исходников.
Как отлаживать внешнюю обработку
Читать код — половина дела. Чтобы понять, что он делает на конкретных данных, нужен отладчик.
Отладка из Конфигуратора рабочей базы
- Откройте Конфигуратор той базы, на данных которой будете проверять обработку.
- Через
Файл → Открытьоткройте файл.epf. - Поставьте точки останова в нужных процедурах: курсор на строку и
F9. - Запустите пользовательский режим с отладкой:
Отладка → Начать отладку → 1С:Предприятие(илиF5). - В открывшемся клиенте откройте этот же файл через
Файл → Открытьи выполните действие.
Точки останова срабатывают, только если в клиенте открыт тот же файл, что и в Конфигураторе. Если скопировать .epf в другую папку, отладчик его не узнает.
Если обработка подключена через справочник БСП
Дополнительные обработки, загруженные в базу, хранятся внутри справочника. Отладчик их не сопоставит с файлом на диске. Порядок такой:
- Откройте карточку обработки в разделе дополнительных отчётов и обработок.
- Сохраните обработку из карточки в файл. Команда находится в меню «Ещё» карточки.
- Отлаживайте этот файл по шагам выше, открывая его через
Файл → Открыть. - После правок загрузите изменённый файл обратно в ту же карточку.
Отладка серверного кода
Если точки останова в процедурах с &НаСервере не срабатывают в клиент-серверной базе, проверьте, что на сервере 1С включена отладка. Без этого сервер не подключается к отладчику.
Включение отладки на сервере требует перезапуска службы агента сервера 1С. Все пользователи потеряют сеансы. Делайте это вне рабочего времени или на тестовом сервере.
💡 Вычисляйте выражения прямо во время остановки: выделите переменную и нажмите Shift+F9. Так видно содержимое таблиц значений и результатов запросов.
Безопасный порядок работы с чужим кодом
Внешняя обработка выполняется с правами пользователя, который её открыл. Если это администратор, у кода полный доступ к базе.
Перед первым запуском чужого файла:
- 📖 прочитайте модуль объекта и модули форм хотя бы бегло;
- 🔎 найдите поиском
Удалить,Записать,УстановитьПривилегированныйРежим,HTTPСоединение,COMОбъект,УдалитьФайлы; - 🧪 запускайте на копии базы, а не на рабочей;
- 👤 запускайте под пользователем с ограниченными правами, если обработка не требует большего.
Платформа 8.3 предупреждает пользователя при открытии внешней обработки из файла, если включена защита от опасных действий. Не отключайте эту защиту ради удобства.
Перед запуском обработки, которая записывает или удаляет данные, сделайте резервную копию базы . Отменить массовую запись из чужой обработки обычно нечем.
Чтобы обычные пользователи не открывали произвольные файлы, в их ролях не должно быть права на интерактивное открытие внешних обработок. Нужные обработки администратор загружает в справочник дополнительных обработок, где для них можно настроить безопасный режим.
Ошибки при открытии обработки и что с ними делать
Частые вопросы
Можно ли посмотреть код внешней обработки без Конфигуратора?
.bsl в текстовом редакторе. Но для выгрузки всё равно нужна установленная платформа 1С.Как понять, в какой платформе сохранена обработка?
Можно ли открыть сразу несколько обработок?
Файл → Открыть, их можно держать рядом и сравнивать код.Как сохранить изменения в коде внешней обработки?
Файл → Сохранить или Ctrl+S в окне обработки. Изменения пишутся в сам файл .epf, база не меняется и обновлять её не нужно.