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

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

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38696
      Фото аватараOdineski
      Участник

        [ОшибкаВоВремяВыполненияВстроенногоЯзыка]
        по причине:
        Ошибка инициализации модуля: ВнешняяОбработка.ITC_ЗагрузкаПоступлений_Розница.МодульОбъекта
        по причине:
        Ошибка при вызове метода контекста (Записать)
        [ОшибкаВоВремяВыполненияВстроенногоЯзыка]
        по причине:
        Ошибка при выполнении обработчика — ‘ПередЗаписью’
        по причине:
        Действие недоступно в безопасном режиме.
        [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]

      • #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 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С