Разработка и Конфигурация · 10 мин
Как исправить внешнюю обработку 1С
Как найти и исправить ошибку во внешней обработке 1С: диагностика, отладка в конфигураторе, типичные причины сбоев и проверка результата.
Внешняя обработка 1С — это файл с расширением .epf, который запускается в пользовательском режиме через «Файл → Открыть» или подключается к справочнику «Дополнительные отчеты и обработки». Когда такая обработка перестает работать, причина почти всегда одна из четырех: несовместимость с версией конфигурации, изменение структуры метаданных, ошибка в коде модуля или ограничения безопасного режима.
Исправить внешнюю обработку можно только в конфигураторе: пользовательский режим не позволяет редактировать код .epf-файла. Поэтому первое условие — у вас должны быть права на запуск конфигуратора и исходный файл обработки. Если обработка хранится внутри базы в подключенном виде, сначала выгрузите ее во внешний файл.
Ниже разобран порядок диагностики, типовые ошибки и способы их устранения. Материал ориентирован на управляемые формы (1С:Предприятие 8.3), но большинство приемов применимо и к обычным формам.
Шаг 1. Зафиксируйте симптомы и соберите исходные данные
Прежде чем менять код, точно определите, что именно происходит. «Обработка не работает» — это не диагноз. Возможны разные сценарии: обработка вообще не открывается, открывается, но падает при нажатии кнопки, выполняется без ошибок, но дает неверный результат, либо выдает сообщение об ошибке при подключении через механизм дополнительных отчетов и обработок.
Запишите полный текст сообщения об ошибке — в нем обычно указаны модуль, номер строки и причина. Скопируйте его через буфер обмена из окна сообщения или из журнала регистрации. Также зафиксируйте версию платформы (Справка → О программе), релиз конфигурации и режим запуска: тонкий клиент, толстый клиент или веб-клиент. Многие обработки, написанные под толстый клиент, в тонком ведут себя иначе.
Проверьте безопасный режим, права и формат файла
Смотрите текст ошибки: объект, реквизит или метод не найден
Проверяйте запросы и источники данных
Сравните структуру метаданных до и после обновления
Шаг 2. Сделайте резервную копию и получите редактируемый файл
Любое исправление начинайте с копии. Сохраните исходный .epf-файл под отдельным именем, например с суффиксом даты. Если обработка подключена к базе через «Дополнительные отчеты и обработки», откройте ее карточку в этом справочнике и сохраните файл на диск кнопкой выгрузки — редактировать нужно именно эту копию, а затем загрузить исправленную версию обратно.
Если база файловая, резервную копию делает простое копирование файла 1Cv8.1CD при остановленной работе пользователей. Для клиент-серверной базы используйте выгрузку .dt через конфигуратор или штатные средства СУБД.
Шаг 3. Откройте обработку в конфигураторе
Запустите конфигуратор той информационной базы, где обработка должна работать. Это важно: отладка в «пустой» базе не покажет ошибок, связанных с конкретными метаданными вашей конфигурации. Далее выберите «Файл → Открыть» и укажите .epf-файл. Появится структура обработки: формы, модули, макеты.
Основные места, где живет код: модуль объекта (правый клик по корню обработки → «Открыть модуль объекта») и модуль формы (открыть форму → вкладка «Модуль»). Ошибки при открытии обработки обычно находятся в модуле формы в обработчиках ПриСозданииНаСервере и ПриОткрытии, ошибки выполнения — в командах формы или экспортных процедурах модуля объекта.
Шаг 4. Найдите ошибку с помощью отладчика
Отладчик — главный инструмент исправления. В конфигураторе включите отладку: меню «Отладка → Начать отладку». Запустится пользовательский сеанс, в котором откройте обработку и воспроизведите ошибку. Платформа остановится на строке, вызвавшей исключение, и покажет стек вызовов.
Если текст ошибки уже содержит номер строки и модуль, поставьте точку останова чуть выше и пройдите код по шагам (F10/F11), наблюдая значения переменных в табло (Shift+F9). Часто оказывается, что переменная содержит Неопределено, потому что запрос вернул пустой результат, а код не предусматривает эту ситуацию.
- 1Сохраните копию .epf-файла и сделайте резервную копию базы
- 2Откройте обработку в конфигураторе рабочей базы
- 3Включите отладку и воспроизведите ошибку
- 4Определите строку и причину сбоя по тексту ошибки и стеку вызовов
- 5Исправьте код, сохраните обработку
- 6Проверьте работу сначала на тестовых данных, затем в рабочем режиме
Шаг 5. Исправьте типовую причину сбоя
Объект или реквизит переименован в конфигурации
Самая частая причина после обновления конфигурации: обработка обращается к Документы.РеализацияТоваровУслуг, а в новом релизе документ называется РеализацияТоваров, или реквизит «Организация» переименован. Ошибка выглядит как «Поле объекта не обнаружено» или «Метод объекта не обнаружен». Откройте дерево конфигурации, найдите актуальное имя объекта и исправьте обращение в коде и в текстах запросов.
Ошибки в запросах
Запросы к виртуальным таблицам и полям тоже ломаются при изменении метаданных. Проверяйте тексты запросов через консоль запросов или конструктор запроса в конфигураторе: он подсветит несуществующие поля. Типичный признак — сообщение «Ошибка при выполнении запроса» с указанием поля.
Безопасный режим и профили безопасности
Если обработка подключается через БСП (дополнительные отчеты и обработки), она по умолчанию выполняется в безопасном режиме: запрещены COM-объекты, внешние компоненты, запись файлов вне временного каталога. Ошибка вида «Операция не разрешена в безопасном режиме» означает, что нужно либо запросить разрешения в карточке обработки, либо переписать код без запрещенных операций.
Директивы компиляции и контекст клиент/сервер
В управляемых формах код делится на клиентский и серверный. Ошибка «Процедура или функция с указанным именем не определена» часто означает вызов серверной процедуры из клиентского контекста без директивы &НаСервере или наоборот. Проверьте директивы компиляции у методов формы и логику передачи данных между клиентом и сервером.
Шаг 6. Проверьте результат и обновите обработку в базе
После исправления сохраните обработку и протестируйте ее в пользовательском режиме: сначала на копии базы или на заведомо безопасных тестовых данных. Проверьте не только устранение ошибки, но и корректность результата: если обработка создает документы, откройте несколько созданных объектов и сверьте заполнение ключевых реквизитов.
Если обработка подключена через «Дополнительные отчеты и обработки», загрузите исправленный файл в карточку обработки — простая замена файла на диске не обновит версию, хранящуюся в базе. После загрузки попросите пользователя повторить операцию в его рабочем режиме и под его правами: часть ошибок проявляется только при ограниченных правах (RLS, отсутствие доступа к отдельным объектам).
Как проверить результат
Открывается без сообщений об ошибках
Ошибка компиляции модуля или безопасного режима
Выполняется до конца, результат соответствует ожиданию
Исключение на середине, частично записанные данные
Операция доступна и завершается успешно
Нарушение прав доступа к объектам
Нет новых ошибок после сеанса работы
Повторяющиеся ошибки с указанием модуля обработки
Когда исправить самостоятельно не получится
Есть ситуации, где разумнее обратиться к разработчику обработки или привлечь специалиста по 1С: обработка поставляется без исходного кода (закрытый модуль), ошибка связана с внешней компонентой или обменом с другими системами, либо обработка глубоко интегрирована с механизмами БСП и требует доработки под конкретную версию библиотеки. Также не стоит править код, если вы не уверены в бизнес-логике: формально «работающая» обработка может считать неправильно.
Что важно запомнить
Исправление внешней обработки — это цикл: копия файла и базы, открытие в конфигураторе рабочей базы, отладка, точечная правка кода, проверка на тестовых данных и повторная загрузка в базу. Большинство сбоев вызвано изменением метаданных после обновления или ограничениями безопасного режима.
Частые вопросы
Можно ли исправить обработку без конфигуратора?
Нет. Редактирование кода .epf-файла возможно только в конфигураторе. В пользовательском режиме можно лишь запускать обработку и менять ее настройки, если они предусмотрены автором.
Обработка работала, а после обновления платформы перестала открываться. Что делать?
Проверьте режим совместимости конфигурации и версию платформы, в которой сохранен файл. Часто помогает открытие и пересохранение обработки в конфигураторе на актуальной платформе, а также отказ от устаревших методов, удаленных в новых версиях.
Ошибка «Поле объекта не обнаружено» — где искать причину?
Код обращается к реквизиту или свойству, которого нет у объекта. Откройте в конфигураторе описание соответствующего объекта метаданных, сверьте имена реквизитов и исправьте обращение в строке, указанной в тексте ошибки.
Как проверить обработку, не рискуя рабочими данными?
Разверните копию базы (для файловой — копирование каталога, для серверной — восстановление выгрузки .dt в новую базу) и выполняйте все испытания там. Только после успешной проверки переносите исправленный файл в рабочую базу.
Обработка подключена через «Дополнительные отчеты и обработки», я заменил файл на диске, но ничего не изменилось. Почему?
При подключении файл загружается внутрь базы и хранится в ней. Внешний файл на диске после этого не используется. Откройте карточку обработки в справочнике дополнительных отчетов и обработок и загрузите исправленную версию через кнопку загрузки из файла.
Что делать, если модуль обработки закрыт паролем?
Без пароля исходный код недоступен, и легальных способов его восстановить нет. Обратитесь к автору обработки за исправленной версией или исходным кодом, либо закажите разработку аналогичной обработки.