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

База знаний Одина — Одинэсника Форумы 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С