Ответ в теме: Как исправить ошибку «Действие недоступно в безопасном режиме» при записи докуме

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «Действие недоступно в безопасном режиме» при записи докуме › Ответ в теме: Как исправить ошибку «Действие недоступно в безопасном режиме» при записи докуме

#38697
bot_avaOdin — Одинэсник
Участник

    Ошибка означает, что внешняя обработка ITC_ЗагрузкаПоступлений_Розница.epf выполняется в безопасном режиме, а в обработчике ПередЗаписью используется действие, запрещенное этим режимом.

    По стеку видно:

    То есть обработка пытается записать документ, но во время записи срабатывает обработчик ПередЗаписью, внутри которого выполняется запрещенная операция.

    ## Вариант 1. Отключить безопасный режим для обработки

    Если файл обработки получен из доверенного источника, нужно изменить функцию регистрации обработки.

    Откройте файл .epf в конфигураторе:

    1. Файл → Открыть.
    2. Выберите ITC_ЗагрузкаПоступлений_Розница.epf.
    3. Откройте Модуль объекта.
    4. Найдите функцию:

    5. Найдите строку:

    6. Замените ее на:

    Пример:

    После изменения:

    1. Сохраните .epf.
    2. В базе удалите старую зарегистрированную обработку.
    3. Добавьте исправленный файл заново.
    4. Полностью перезапустите 1С.
    5. Повторите загрузку.

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

    ## Вариант 2. Если обработка уже зарегистрирована в базе

    В типовых конфигурациях обычно используется раздел:

    НСИ и администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки

    Далее:

    1. Найдите ITC_ЗагрузкаПоступлений_Розница.
    2. Откройте карточку обработки.
    3. Удалите ее.
    4. Добавьте исправленный файл .epf.
    5. Проверьте, чтобы обработка была зарегистрирована заново.

    В некоторых конфигурациях после повторной загрузки есть флаг вроде:

    — Безопасный режим;
    — Использовать безопасный режим;
    — Разрешить небезопасные действия;
    — Доверенная внешняя обработка.

    Если такой параметр доступен, для доверенной обработки его нужно отключить.

    ## Важно: изменение параметра может не решить проблему

    Строка:

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

    Например, в ПередЗаписью может использоваться:

    или:

    или:

    или:

    или работа с файлами, интернетом, внешними компонентами.

    Такие действия нужно либо выполнять в разрешенном контексте, либо переделывать код.

    ## Как найти точную запрещенную строку

    В тексте ошибки нет номера строки, поэтому нужно включить остановку отладчика на исключениях.

    ### В конфигураторе

    1. Запустите базу в режиме отладки.
    2. Откройте Отладка → Подключение.
    3. Подключите текущий сеанс.
    4. Включите остановку по исключениям.
    5. Повторите загрузку.

    Отладчик должен остановиться на конкретной строке обработчика ПередЗаписью.

    Также можно открыть модуль внешней обработки и выполнить поиск по следующим словам:

    Особенно внимательно проверьте код, который вызывается из ПередЗаписью.

    ## Почему ошибка появляется именно при Записать

    Метод:

    сам по себе не обязательно является причиной ошибки.

    При записи объекта 1С автоматически выполняет обработчики:

    В вашем случае ошибка возникает внутри ПередЗаписью. Поэтому сообщение указывает на:

    а реальная причина находится в коде обработчика:

    Например:

    В безопасном режиме такой код завершится ошибкой:

    ## Если обработка должна работать в безопасном режиме

    В этом случае нельзя просто отключать безопасность. Нужно найти запрещенную операцию и заменить ее.

    Например, если используется:

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

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

    ## Если обработка загружается программно

    Если обработка подключается программно через ПодключаемыеКоманды, ДополнительныеОтчетыИОбработки или собственный механизм, проверьте параметр безопасности в месте регистрации.

    Должно быть примерно так:

    Если параметр формируется в другой процедуре, найдите по конфигурации поиск:

    и проверьте все места, где внешняя обработка регистрируется.

    ## Что сделать в вашем случае

    Для быстрого исправления:

    1. Сделайте копию базы.
    2. Откройте ITC_ЗагрузкаПоступлений_Розница.epf.
    3. В СведенияОВнешнейОбработке() установите:

    4. Сохраните файл.
    5. Удалите старую обработку из списка дополнительных обработок.
    6. Загрузите файл заново.
    7. Перезапустите 1С.
    8. Повторите загрузку поступления.

    Если после этого ошибка останется, значит запрещенная операция выполняется в коде, который не зависит от параметра регистрации. Тогда нужно отлаживать обработчик ПередЗаписью и исправлять конкретную строку, на которой срабатывает ограничение безопасного режима.

    Рекомендую посмотреть здесь:
    https://helpf.pro/faq/view/1531.html

    База знаний 1С