К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как исправить внешнюю обработку 1С

Как найти и исправить ошибку во внешней обработке 1С: диагностика, отладка в конфигураторе, типичные причины сбоев и проверка результата.

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

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

Ниже разобран порядок диагностики, типовые ошибки и способы их устранения. Материал ориентирован на управляемые формы (1С:Предприятие 8.3), но большинство приемов применимо и к обычным формам.

Шаг 1. Зафиксируйте симптомы и соберите исходные данные

Прежде чем менять код, точно определите, что именно происходит. «Обработка не работает» — это не диагноз. Возможны разные сценарии: обработка вообще не открывается, открывается, но падает при нажатии кнопки, выполняется без ошибок, но дает неверный результат, либо выдает сообщение об ошибке при подключении через механизм дополнительных отчетов и обработок.

Запишите полный текст сообщения об ошибке — в нем обычно указаны модуль, номер строки и причина. Скопируйте его через буфер обмена из окна сообщения или из журнала регистрации. Также зафиксируйте версию платформы (Справка → О программе), релиз конфигурации и режим запуска: тонкий клиент, толстый клиент или веб-клиент. Многие обработки, написанные под толстый клиент, в тонком ведут себя иначе.

Обработка не открываетсяПроблема на этапе загрузки

Проверьте безопасный режим, права и формат файла

Ошибка при выполнении командыОшибка в коде модуля

Смотрите текст ошибки: объект, реквизит или метод не найден

Работает, но результат неверныйЛогическая ошибка или устаревшие запросы

Проверяйте запросы и источники данных

Работала раньше, сломалась после обновленияНесовместимость с новым релизом

Сравните структуру метаданных до и после обновления

Шаг 2. Сделайте резервную копию и получите редактируемый файл

Любое исправление начинайте с копии. Сохраните исходный .epf-файл под отдельным именем, например с суффиксом даты. Если обработка подключена к базе через «Дополнительные отчеты и обработки», откройте ее карточку в этом справочнике и сохраните файл на диск кнопкой выгрузки — редактировать нужно именно эту копию, а затем загрузить исправленную версию обратно.

Если база файловая, резервную копию делает простое копирование файла 1Cv8.1CD при остановленной работе пользователей. Для клиент-серверной базы используйте выгрузку .dt через конфигуратор или штатные средства СУБД.

Шаг 3. Откройте обработку в конфигураторе

Запустите конфигуратор той информационной базы, где обработка должна работать. Это важно: отладка в «пустой» базе не покажет ошибок, связанных с конкретными метаданными вашей конфигурации. Далее выберите «Файл → Открыть» и укажите .epf-файл. Появится структура обработки: формы, модули, макеты.

Основные места, где живет код: модуль объекта (правый клик по корню обработки → «Открыть модуль объекта») и модуль формы (открыть форму → вкладка «Модуль»). Ошибки при открытии обработки обычно находятся в модуле формы в обработчиках ПриСозданииНаСервере и ПриОткрытии, ошибки выполнения — в командах формы или экспортных процедурах модуля объекта.

Шаг 4. Найдите ошибку с помощью отладчика

Отладчик — главный инструмент исправления. В конфигураторе включите отладку: меню «Отладка → Начать отладку». Запустится пользовательский сеанс, в котором откройте обработку и воспроизведите ошибку. Платформа остановится на строке, вызвавшей исключение, и покажет стек вызовов.

Если текст ошибки уже содержит номер строки и модуль, поставьте точку останова чуть выше и пройдите код по шагам (F10/F11), наблюдая значения переменных в табло (Shift+F9). Часто оказывается, что переменная содержит Неопределено, потому что запрос вернул пустой результат, а код не предусматривает эту ситуацию.

Порядок действий
  1. 1
    Сохраните копию .epf-файла и сделайте резервную копию базы
  2. 2
    Откройте обработку в конфигураторе рабочей базы
  3. 3
    Включите отладку и воспроизведите ошибку
  4. 4
    Определите строку и причину сбоя по тексту ошибки и стеку вызовов
  5. 5
    Исправьте код, сохраните обработку
  6. 6
    Проверьте работу сначала на тестовых данных, затем в рабочем режиме

Шаг 5. Исправьте типовую причину сбоя

Объект или реквизит переименован в конфигурации

Самая частая причина после обновления конфигурации: обработка обращается к Документы.РеализацияТоваровУслуг, а в новом релизе документ называется РеализацияТоваров, или реквизит «Организация» переименован. Ошибка выглядит как «Поле объекта не обнаружено» или «Метод объекта не обнаружен». Откройте дерево конфигурации, найдите актуальное имя объекта и исправьте обращение в коде и в текстах запросов.

Ошибки в запросах

Запросы к виртуальным таблицам и полям тоже ломаются при изменении метаданных. Проверяйте тексты запросов через консоль запросов или конструктор запроса в конфигураторе: он подсветит несуществующие поля. Типичный признак — сообщение «Ошибка при выполнении запроса» с указанием поля.

Безопасный режим и профили безопасности

Если обработка подключается через БСП (дополнительные отчеты и обработки), она по умолчанию выполняется в безопасном режиме: запрещены COM-объекты, внешние компоненты, запись файлов вне временного каталога. Ошибка вида «Операция не разрешена в безопасном режиме» означает, что нужно либо запросить разрешения в карточке обработки, либо переписать код без запрещенных операций.

Директивы компиляции и контекст клиент/сервер

В управляемых формах код делится на клиентский и серверный. Ошибка «Процедура или функция с указанным именем не определена» часто означает вызов серверной процедуры из клиентского контекста без директивы &НаСервере или наоборот. Проверьте директивы компиляции у методов формы и логику передачи данных между клиентом и сервером.

Типичные ошибки
01
Правка обработки в конфигураторе чужой пустой базы — ошибки метаданных не воспроизводятся
02
Исправление без копии файла — при неудаче не к чему откатиться
03
Тестирование сразу на рабочих данных — риск порчи учетных записей
04
Игнорирование текста ошибки и правка «наугад» — теряется время и появляются новые дефекты
05
Забытая повторная загрузка исправленного файла в справочник дополнительных обработок — база продолжает использовать старую версию

Шаг 6. Проверьте результат и обновите обработку в базе

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

Если обработка подключена через «Дополнительные отчеты и обработки», загрузите исправленный файл в карточку обработки — простая замена файла на диске не обновит версию, хранящуюся в базе. После загрузки попросите пользователя повторить операцию в его рабочем режиме и под его правами: часть ошибок проявляется только при ограниченных правах (RLS, отсутствие доступа к отдельным объектам).

Контрольные точки

Как проверить результат

Запуск обработки
Норма

Открывается без сообщений об ошибках

Тревожный признак

Ошибка компиляции модуля или безопасного режима

Выполнение основной операции
Норма

Выполняется до конца, результат соответствует ожиданию

Тревожный признак

Исключение на середине, частично записанные данные

Работа под правами пользователя
Норма

Операция доступна и завершается успешно

Тревожный признак

Нарушение прав доступа к объектам

Журнал регистрации
Норма

Нет новых ошибок после сеанса работы

Тревожный признак

Повторяющиеся ошибки с указанием модуля обработки

Когда исправить самостоятельно не получится

Есть ситуации, где разумнее обратиться к разработчику обработки или привлечь специалиста по 1С: обработка поставляется без исходного кода (закрытый модуль), ошибка связана с внешней компонентой или обменом с другими системами, либо обработка глубоко интегрирована с механизмами БСП и требует доработки под конкретную версию библиотеки. Также не стоит править код, если вы не уверены в бизнес-логике: формально «работающая» обработка может считать неправильно.

Итог

Что важно запомнить

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

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

Можно ли исправить обработку без конфигуратора?

Нет. Редактирование кода .epf-файла возможно только в конфигураторе. В пользовательском режиме можно лишь запускать обработку и менять ее настройки, если они предусмотрены автором.

Обработка работала, а после обновления платформы перестала открываться. Что делать?

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

Ошибка «Поле объекта не обнаружено» — где искать причину?

Код обращается к реквизиту или свойству, которого нет у объекта. Откройте в конфигураторе описание соответствующего объекта метаданных, сверьте имена реквизитов и исправьте обращение в строке, указанной в тексте ошибки.

Как проверить обработку, не рискуя рабочими данными?

Разверните копию базы (для файловой — копирование каталога, для серверной — восстановление выгрузки .dt в новую базу) и выполняйте все испытания там. Только после успешной проверки переносите исправленный файл в рабочую базу.

Обработка подключена через «Дополнительные отчеты и обработки», я заменил файл на диске, но ничего не изменилось. Почему?

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

Что делать, если модуль обработки закрыт паролем?

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