Редактирование внешней обработки (.epf) в Конфигураторе 1С
Содержание
Внешняя обработка — это отдельный файл .epf, который открывается не в основной конфигурации, а в собственном окне Конфигуратора: Файл → Открыть. Редактируют обработку там же, где и любой объект метаданных — через модуль объекта, модули форм и макеты, а изменения сохраняют обратно в файл по Ctrl+S.
Важная оговорка на старте: редактировать можно только незащищённую обработку. Если при открытии платформа просит пароль или объект доступен лишь на запуск — автор закрыл исходный код от правок, и без пароля код не изменить. Ниже — как открыть файл, найти нужный код, внести правку, проверить синтаксис, отладить и вернуть обработку в рабочую базу.
Что понадобится перед правкой
Внешняя обработка (.epf) и внешний отчёт (.erf) — это разработческие объекты. Для их изменения нужен Конфигуратор, а не только режим 1С:Предприятие.
Проверьте три вещи:
- 🔑 Права. Запуск Конфигуратора разрешён не каждому пользователю. Нужна роль с правом «Администрирование» или отдельное разрешение на конфигуратор в карточке пользователя.
- 📄 Сам файл. У вас должна быть именно исходная обработка. Если файл встроен в справочник «Дополнительные отчёты и обработки», сначала выгрузите его оттуда командой сохранения файла из карточки.
- 🧩 Совпадение версий. Обработку, сохранённую в новой версии платформы, старая не откроет. Номер платформы при редактировании должен быть не ниже того, в котором обработка создана.
Перед правкой скопируйте исходный .epf в отдельную папку с датой в имени. Если новая версия сломается, откат займёт секунды — просто вернёте старый файл.
Если обработка была добавлена в базу через справочник БСП, держите в голове: править удобнее выгруженную копию, а потом загружать новую версию в справочник. Прямого редактирования «внутри» справочника нет.
Как открыть обработку в Конфигураторе
Запустите Конфигуратор нужной базы. Затем откройте файл:
- Меню
Файл → Открыть(илиCtrl+O). - В диалоге выбора смените тип файла на «Внешние обработки (
*.epf)», иначе файл не будет виден в списке. - Выберите
.epfи нажмите «Открыть».
Обработка откроется в отдельном окне, не внутри дерева основной конфигурации. У неё своё дерево объектов: реквизиты, табличные части, формы, макеты и модуль объекта.
Если вместо окна редактирования появляется запрос пароля — обработка защищена. Без пароля снять защиту и отредактировать исходный код невозможно. Это не ошибка платформы, а намеренное закрытие кода автором. Единственный путь — получить пароль у разработчика или исходную незащищённую версию.
Отдельный момент — защита от опасных действий. Платформа 8.3.9 и новее при запуске внешней обработки, которая обращается к файлам или COM, выдаёт предупреждение. На редактирование в Конфигураторе оно не влияет — срабатывает только при выполнении в 1С:Предприятии.
Из чего состоит обработка и где искать код
Дерево обработки похоже на дерево любого объекта конфигурации. Разберём, что где лежит:
| Ветка дерева | Что хранит | Когда сюда лезть |
|---|---|---|
| Модуль объекта | Процедуры и функции самой обработки | Логика, экспортные методы, печать |
| Формы | Внешний вид + модуль формы | Поведение кнопок, полей, события формы |
| Макеты | Табличные документы, схемы компоновки | Печатные формы, шаблоны вывода |
| Реквизиты | Хранимые значения обработки | Параметры, которые задаёт пользователь |
| Табличные части | Строки с колонками | Списки внутри обработки |
Основной код живёт в двух местах. Модуль объекта открывается через контекстное меню корня обработки или двойным кликом по ветке «Модуль объекта». Модуль формы — откройте форму, затем переключитесь на вкладку «Модуль» внизу редактора формы.
Формы бывают управляемые и обычные. В типовых конфигурациях 8.3 на «Такси» это управляемые формы: часть кода выполняется на клиенте, часть на сервере, и процедуры помечены директивами &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Это критично для правок: серверный код не видит элементы формы напрямую, а клиентский не обращается к базе.
Если открываете старую обработку с обычными (неуправляемыми) формами, помните: в клиент-серверной базе в режиме тонкого клиента обычные формы не работают. Такую обработку либо запускают в толстом клиенте, либо переделывают форму на управляемую.
Чтобы быстро найти нужный метод, используйте глобальный поиск по тексту: Правка → Глобальный поиск (Ctrl+Shift+F) ищет строку сразу по всем модулям обработки.
Как внести изменения в логику
Сами правки — это работа в текстовом редакторе модуля. Несколько приёмов, которые ускоряют дело и уменьшают число ошибок.
Контекстная подсказка. Поставьте точку после объекта — платформа подскажет доступные методы и свойства. Вызов подсказки вручную — Ctrl+Пробел. Это защищает от опечаток в именах методов.
Переход к определению. Наведитесь на имя процедуры и нажмите F12 — редактор перейдёт к месту, где она объявлена. Удобно, когда нужно понять, что делает чужой метод.
Форматирование. Выделите фрагмент и нажмите Alt+Shift+F — редактор выровняет отступы по вложенности. Читать чужой код станет проще.
Типичные задачи при правке внешней обработки:
- Поменять условие отбора или фильтр в запросе — ищите текст запроса в процедуре, где собираются данные.
- Добавить колонку в печатную форму — правят и макет (ветка «Макеты»), и код вывода в модуле.
- Изменить поведение кнопки — ищите обработчик события в модуле формы; имя процедуры совпадает с именем, заданным в свойствах элемента.
При работе с управляемой формой держите в голове границу клиент/сервер. Если новой процедуре нужны данные из базы — объявляйте её &НаСервере или &НаСервереБезКонтекста, а из клиентского кода вызывайте через серверную процедуру. Прямое обращение к базе из &НаКлиенте вызовет ошибку компиляции.
Небольшой пример экспортной функции в модуле объекта, которую потом можно вызвать снаружи:
Функция ПолучитьИтогПоТаблице(ТаблицаЗначений, ИмяКолонки) Экспорт
Итог = 0;
Для Каждого Строка Из ТаблицаЗначений Цикл
Итог = Итог + Строка[ИмяКолонки];
КонецЦикла;
Возврат Итог;
КонецФункции
Ключевое слово Экспорт делает метод доступным извне обработки — без него функцию увидит только код самой обработки.
Пара правил, которые экономят время при правках чужой обработки:
- Не меняйте имена и параметры экспортных процедур, если обработка подключена к базе через справочник: на эти имена завязаны настройки подключения, и переименование оборвёт вызов.
- Старые строки не удаляйте сразу, а комментируйте двумя слэшами
//. Если правка окажется неверной, вернуть прежнюю логику будет проще, чем восстанавливать по памяти. - Длинное условие или запрос лучше вынести в отдельную функцию с говорящим именем — читать и отлаживать такой код проще, чем «простыню» в одном обработчике.
Проверка синтаксиса и отладка
Перед сохранением прогоните синтаксический контроль. Это не то же самое, что сохранение: контроль ловит ошибки компиляции, которые иначе всплывут уже у пользователя.
- Синтаксический контроль — меню
Текст → Синтаксический контрольилиCtrl+F7. - Ошибки появятся в окне сообщений внизу. Двойной клик по строке ошибки — переход к месту в коде.
Контроль проверяет синтаксис, но не логику: деление на ноль или неверный отбор он не поймает. Для этого нужна отладка.
Чтобы отладить внешнюю обработку :
- В настройках отладки базы включите разрешение отладки (в Конфигураторе — через
Сервис → Параметры, вкладка запуска 1С:Предприятия; для клиент-серверной базы отладка должна быть разрешена и на стороне сервера). - Поставьте точку останова на нужной строке — клик на левом поле строки или
F9. - Запустите 1С:Предприятие из Конфигуратора —
Отладка → Начать отладку(F5). - В запущенном сеансе откройте обработку (
Файл → Открыть) и выполните действие, которое приводит к нужной строке. - На точке останова выполнение замрёт. Смотрите значения переменных: наведите курсор или откройте окно «Табло».
Шаги отладки: F11 — зайти внутрь процедуры, F10 — выполнить строку без захода, F5 — продолжить до следующей точки.
Окно «Табло» (Отладка → Табло) держит под рукой выражения, за которыми следите: добавьте туда имя переменной или целое выражение вроде ТаблицаЗначений.Количество(), и его значение будет пересчитываться на каждом шаге. Это нагляднее, чем всякий раз наводить курсор.
Когда ошибка плавающая и воспроизводится не всегда, помогает условная точка останова: в её свойствах задаётся условие, и выполнение замрёт только когда условие истинно. Так не придётся проходить сотню итераций цикла вручную, чтобы поймать нужную.
Если точка останова не срабатывает, чаще всего причина одна: открыта не та копия обработки. Отлаживаемый файл должен быть тем же, что открыт в Конфигураторе. Пересохраните и откройте заново.
Сохранение файла и возврат в рабочую базу
Готовую правку сохраняют обратно в .epf:
Файл → Сохранить(Ctrl+S) — записывает изменения в тот же файл.Файл → Сохранить как…— сохраняет новой версией, старый файл остаётся нетронутым. Удобно для нумерации версий.
Дальше обработку нужно вернуть пользователям. Вариантов два.
Просто файл. Пользователь открывает .epf через Файл → Открыть в режиме 1С:Предприятие. Подходит для разовых задач и одного-двух человек.
Через справочник дополнительных обработок. В типовых на БСП есть раздел Администрирование → Печатные формы, отчёты и обработки. Там обработку загружают в справочник «Дополнительные отчёты и обработки», настраивают, кому она доступна, и к каким объектам подключается. После правки загружают новую версию файла поверх старой карточки.
Проверять новую версию правильнее не на живых данных. Безопасный порядок:
Если обработка что-то записывает в базу (создаёт или проводит документы, меняет реквизиты), первый запуск в рабочей базе опасен: неверная правка размножит движения или испортит данные. Такие обработки обязательно сначала гоняют на копии.
Частые ошибки и как их обойти
Собрал ситуации, в которые упираются чаще всего при редактировании .epf.
Файл → Открыть стоит фильтр по типу файлов. Смените тип на «Внешние обработки (*.epf)» или «Все файлы»..epf совпадает с открытым в Конфигураторе.Частые вопросы
Чем внешняя обработка отличается от внешнего отчёта?
.erf) в основе схема компоновки данных и он заточен под вывод результата, а обработка (.epf) — под действия с данными. Открываются и редактируются оба одинаково, через Файл → Открыть в Конфигураторе.Можно ли отредактировать обработку прямо в 1С:Предприятии, без Конфигуратора?
Как снять пароль с защищённой обработки?
Обязательно ли встраивать обработку в конфигурацию?
Почему после правки пропала подсказка по методам?
Ctrl+Пробел) работает, когда платформа понимает тип переменной. Если переменная получена сложным путём, тип не выводится и подсказки нет — это не ошибка, код всё равно скомпилируется.