Редактирование внешней обработки (.epf) в Конфигураторе 1С

· 9 мин

Содержание

Внешняя обработка — это отдельный файл .epf, который открывается не в основной конфигурации, а в собственном окне Конфигуратора: Файл → Открыть. Редактируют обработку там же, где и любой объект метаданных — через модуль объекта, модули форм и макеты, а изменения сохраняют обратно в файл по Ctrl+S.

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

Что понадобится перед правкой

Внешняя обработка (.epf) и внешний отчёт (.erf) — это разработческие объекты. Для их изменения нужен Конфигуратор, а не только режим 1С:Предприятие.

Проверьте три вещи:

  • 🔑 Права. Запуск Конфигуратора разрешён не каждому пользователю. Нужна роль с правом «Администрирование» или отдельное разрешение на конфигуратор в карточке пользователя.
  • 📄 Сам файл. У вас должна быть именно исходная обработка. Если файл встроен в справочник «Дополнительные отчёты и обработки», сначала выгрузите его оттуда командой сохранения файла из карточки.
  • 🧩 Совпадение версий. Обработку, сохранённую в новой версии платформы, старая не откроет. Номер платформы при редактировании должен быть не ниже того, в котором обработка создана.

Перед правкой скопируйте исходный .epf в отдельную папку с датой в имени. Если новая версия сломается, откат займёт секунды — просто вернёте старый файл.

Если обработка была добавлена в базу через справочник БСП, держите в голове: править удобнее выгруженную копию, а потом загружать новую версию в справочник. Прямого редактирования «внутри» справочника нет.

Как открыть обработку в Конфигураторе

Запустите Конфигуратор нужной базы. Затем откройте файл:

  1. Меню Файл → Открыть (или Ctrl+O).
  2. В диалоге выбора смените тип файла на «Внешние обработки (*.epf)», иначе файл не будет виден в списке.
  3. Выберите .epf и нажмите «Открыть».

Обработка откроется в отдельном окне, не внутри дерева основной конфигурации. У неё своё дерево объектов: реквизиты, табличные части, формы, макеты и модуль объекта.

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

Отдельный момент — защита от опасных действий. Платформа 8.3.9 и новее при запуске внешней обработки, которая обращается к файлам или COM, выдаёт предупреждение. На редактирование в Конфигураторе оно не влияет — срабатывает только при выполнении в 1С:Предприятии.

Из чего состоит обработка и где искать код

Дерево обработки похоже на дерево любого объекта конфигурации. Разберём, что где лежит:

Ветка дереваЧто хранитКогда сюда лезть
Модуль объектаПроцедуры и функции самой обработкиЛогика, экспортные методы, печать
ФормыВнешний вид + модуль формыПоведение кнопок, полей, события формы
МакетыТабличные документы, схемы компоновкиПечатные формы, шаблоны вывода
РеквизитыХранимые значения обработкиПараметры, которые задаёт пользователь
Табличные частиСтроки с колонкамиСписки внутри обработки

Основной код живёт в двух местах. Модуль объекта открывается через контекстное меню корня обработки или двойным кликом по ветке «Модуль объекта». Модуль формы — откройте форму, затем переключитесь на вкладку «Модуль» внизу редактора формы.

Формы бывают управляемые и обычные. В типовых конфигурациях 8.3 на «Такси» это управляемые формы: часть кода выполняется на клиенте, часть на сервере, и процедуры помечены директивами &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Это критично для правок: серверный код не видит элементы формы напрямую, а клиентский не обращается к базе.

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

Чтобы быстро найти нужный метод, используйте глобальный поиск по тексту: Правка → Глобальный поиск (Ctrl+Shift+F) ищет строку сразу по всем модулям обработки.

Как внести изменения в логику

Сами правки — это работа в текстовом редакторе модуля. Несколько приёмов, которые ускоряют дело и уменьшают число ошибок.

Контекстная подсказка. Поставьте точку после объекта — платформа подскажет доступные методы и свойства. Вызов подсказки вручную — Ctrl+Пробел. Это защищает от опечаток в именах методов.

Переход к определению. Наведитесь на имя процедуры и нажмите F12 — редактор перейдёт к месту, где она объявлена. Удобно, когда нужно понять, что делает чужой метод.

Форматирование. Выделите фрагмент и нажмите Alt+Shift+F — редактор выровняет отступы по вложенности. Читать чужой код станет проще.

Типичные задачи при правке внешней обработки:

  • Поменять условие отбора или фильтр в запросе — ищите текст запроса в процедуре, где собираются данные.
  • Добавить колонку в печатную форму — правят и макет (ветка «Макеты»), и код вывода в модуле.
  • Изменить поведение кнопки — ищите обработчик события в модуле формы; имя процедуры совпадает с именем, заданным в свойствах элемента.

При работе с управляемой формой держите в голове границу клиент/сервер. Если новой процедуре нужны данные из базы — объявляйте её &НаСервере или &НаСервереБезКонтекста, а из клиентского кода вызывайте через серверную процедуру. Прямое обращение к базе из &НаКлиенте вызовет ошибку компиляции.

Небольшой пример экспортной функции в модуле объекта, которую потом можно вызвать снаружи:

Функция ПолучитьИтогПоТаблице(ТаблицаЗначений, ИмяКолонки) Экспорт
    Итог = 0;
    Для Каждого Строка Из ТаблицаЗначений Цикл
        Итог = Итог + Строка[ИмяКолонки];
    КонецЦикла;
    Возврат Итог;
КонецФункции

Ключевое слово Экспорт делает метод доступным извне обработки — без него функцию увидит только код самой обработки.

Пара правил, которые экономят время при правках чужой обработки:

  • Не меняйте имена и параметры экспортных процедур, если обработка подключена к базе через справочник: на эти имена завязаны настройки подключения, и переименование оборвёт вызов.
  • Старые строки не удаляйте сразу, а комментируйте двумя слэшами //. Если правка окажется неверной, вернуть прежнюю логику будет проще, чем восстанавливать по памяти.
  • Длинное условие или запрос лучше вынести в отдельную функцию с говорящим именем — читать и отлаживать такой код проще, чем «простыню» в одном обработчике.

Проверка синтаксиса и отладка

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

  • Синтаксический контроль — меню Текст → Синтаксический контроль или Ctrl+F7.
  • Ошибки появятся в окне сообщений внизу. Двойной клик по строке ошибки — переход к месту в коде.

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

Чтобы отладить внешнюю обработку :

  1. В настройках отладки базы включите разрешение отладки (в Конфигураторе — через Сервис → Параметры, вкладка запуска 1С:Предприятия; для клиент-серверной базы отладка должна быть разрешена и на стороне сервера).
  2. Поставьте точку останова на нужной строке — клик на левом поле строки или F9.
  3. Запустите 1С:Предприятие из Конфигуратора — Отладка → Начать отладку (F5).
  4. В запущенном сеансе откройте обработку (Файл → Открыть) и выполните действие, которое приводит к нужной строке.
  5. На точке останова выполнение замрёт. Смотрите значения переменных: наведите курсор или откройте окно «Табло».

Шаги отладки: F11 — зайти внутрь процедуры, F10 — выполнить строку без захода, F5 — продолжить до следующей точки.

Окно «Табло» (Отладка → Табло) держит под рукой выражения, за которыми следите: добавьте туда имя переменной или целое выражение вроде ТаблицаЗначений.Количество(), и его значение будет пересчитываться на каждом шаге. Это нагляднее, чем всякий раз наводить курсор.

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

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

Сохранение файла и возврат в рабочую базу

Готовую правку сохраняют обратно в .epf:

  • Файл → Сохранить (Ctrl+S) — записывает изменения в тот же файл.
  • Файл → Сохранить как… — сохраняет новой версией, старый файл остаётся нетронутым. Удобно для нумерации версий.

Дальше обработку нужно вернуть пользователям. Вариантов два.

Просто файл. Пользователь открывает .epf через Файл → Открыть в режиме 1С:Предприятие. Подходит для разовых задач и одного-двух человек.

Через справочник дополнительных обработок. В типовых на БСП есть раздел Администрирование → Печатные формы, отчёты и обработки. Там обработку загружают в справочник «Дополнительные отчёты и обработки», настраивают, кому она доступна, и к каким объектам подключается. После правки загружают новую версию файла поверх старой карточки.

Проверять новую версию правильнее не на живых данных. Безопасный порядок:

Безопасный ввод новой версии обработки
Выполнено: 0 / 5

Если обработка что-то записывает в базу (создаёт или проводит документы, меняет реквизиты), первый запуск в рабочей базе опасен: неверная правка размножит движения или испортит данные. Такие обработки обязательно сначала гоняют на копии.

Частые ошибки и как их обойти

Собрал ситуации, в которые упираются чаще всего при редактировании .epf.

Диагностика: выберите симптом

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

Чем внешняя обработка отличается от внешнего отчёта?
Технически это близкие объекты, но у отчёта (.erf) в основе схема компоновки данных и он заточен под вывод результата, а обработка (.epf) — под действия с данными. Открываются и редактируются оба одинаково, через Файл → Открыть в Конфигураторе.
Можно ли отредактировать обработку прямо в 1С:Предприятии, без Конфигуратора?
Нет. В режиме 1С:Предприятие обработку можно только запускать. Изменение кода, форм и макетов доступно исключительно в Конфигураторе.
Как снять пароль с защищённой обработки?
Штатного способа снять пароль без самого пароля нет — защита для того и сделана. Нужен либо пароль от автора, либо исходная незащищённая версия файла.
Обязательно ли встраивать обработку в конфигурацию?
Нет, и в этом смысл внешней обработки: она работает как отдельный файл и не требует изменения основной конфигурации. Встраивают только тогда, когда функционал нужен всем постоянно и его хотят поддерживать вместе с конфигурацией.
Почему после правки пропала подсказка по методам?
Контекстная подсказка (Ctrl+Пробел) работает, когда платформа понимает тип переменной. Если переменная получена сложным путём, тип не выводится и подсказки нет — это не ошибка, код всё равно скомпилируется.