Как подключить внешнюю обработку в 1С при ошибке «Действие недоступно в безопасн

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

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

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

        Техническая информация:
        Действие недоступно в безопасном режиме.

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

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

          — в модуле объекта;
          — в функции СведенияОВнешнейОбработке();
          — в разделе переменных модуля;
          — в обработчике инициализации модуля;
          — в общем модуле, который вызывается из этих мест.

          Сообщение:

          означает, что 1С загрузила обработку в безопасном режиме и обнаружила запрещенное действие.

          ## Что проверить в первую очередь

          Откройте файл ITC_ЗагрузкаПоступлений_Розница.epf в конфигураторе и проверьте модуль объекта.

          В функции:

          найдите строку:

          и замените на:

          Минимальная функция регистрации должна выглядеть примерно так:

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

          ## Что нельзя выполнять при инициализации обработки

          Проверьте модуль объекта и удалите из верхнего уровня модуля любые вызовы вроде:

          Также опасны обращения к внешним файлам, COM-объектам, интернету, внешним компонентам и запуску программ операционной системы.

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

          Его нужно заменить на создание объекта внутри команды обработки:

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

          ## Важный момент по функции регистрации

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

          Плохой вариант:

          Правильный вариант:

          ## Если обработка подключается через БСП

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

          Точный код зависит от версии БСП и конфигурации. Если в вашей конфигурации используется механизм разрешений безопасного режима, одной строки БезопасныйРежим = Ложь может быть недостаточно.

          ## Проверьте настройки пользователя

          Есть два разных механизма, их часто путают.

          ### Безопасный режим

          Ограничивает выполнение отдельных действий внешней обработки. Именно с ним связано ваше сообщение:

          ### Защита от опасных действий

          Выдает предупреждение вида:

          Это другая настройка.

          Если после исправления файла появляется именно предупреждение безопасности, а не ошибка безопасного режима, тогда можно проверить пользователя в конфигураторе:

          1. Откройте конфигуратор.
          2. Откройте список пользователей информационной базы.
          3. Откройте пользователя.
          4. Проверьте настройку Защита от опасных действий.

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

          ## После изменения файл нужно зарегистрировать заново

          Порядок такой:

          1. Сделайте резервную копию базы.
          2. Откройте .epf в конфигураторе.
          3. Исправьте СведенияОВнешнейОбработке().
          4. Удалите опасный код из верхнего уровня модуля.
          5. Сохраните обработку.
          6. Закройте конфигуратор.
          7. Удалите старую обработку из списка дополнительных обработок.
          8. Загрузите исправленный файл заново.
          9. Перезапустите клиент 1С.

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

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

          В конфигураторе выполните поиск по модулю обработки по словам:

          Проверьте не только СведенияОВнешнейОбработке(), но и:

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

          ## Если исходник обработки закрыт

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

          1. запросить у разработчика новую версию обработки;
          2. запросить исходный файл без защиты;
          3. попросить разработчика убрать выполнение запрещенных действий из инициализации;
          4. проверить совместимость версии платформы и конфигурации.

          Фраза 1С:

          в данном случае может быть стандартным общим текстом. Реальная причина указана ниже:

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С