База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «Действие недоступно в безопасном режиме» при записи докуме
- В этой теме 1 ответ, 2 участника, последнее обновление 16 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
22 сентября 2026 в 9:20 #38696
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка инициализации модуля: ВнешняяОбработка.ITC_ЗагрузкаПоступлений_Розница.МодульОбъекта
по причине:
Ошибка при вызове метода контекста (Записать)
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
Действие недоступно в безопасном режиме.
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка] -
22 сентября 2026 в 9:20 #38697
Ошибка означает, что внешняя обработка
ITC_ЗагрузкаПоступлений_Розница.epfвыполняется в безопасном режиме, а в обработчикеПередЗаписьюиспользуется действие, запрещенное этим режимом.По стеку видно:
1С (Код)1234ВнешняяОбработка.ITC_ЗагрузкаПоступлений_Розница.МодульОбъектаОшибка при вызове метода контекста (Записать)Ошибка при выполнении обработчика - 'ПередЗаписью'Действие недоступно в безопасном режимеТо есть обработка пытается записать документ, но во время записи срабатывает обработчик
ПередЗаписью, внутри которого выполняется запрещенная операция.## Вариант 1. Отключить безопасный режим для обработки
Если файл обработки получен из доверенного источника, нужно изменить функцию регистрации обработки.
Откройте файл
.epfв конфигураторе:1. Файл → Открыть.
2. ВыберитеITC_ЗагрузкаПоступлений_Розница.epf.
3. Откройте Модуль объекта.
4. Найдите функцию:1С (Код)1Функция СведенияОВнешнейОбработке() Экспорт5. Найдите строку:
1С (Код)1ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);6. Замените ее на:
1С (Код)1ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);Пример:
1С (Код)12345678910111213141516171819Функция СведенияОВнешнейОбработке() ЭкспортПараметрыРегистрации = Новый Структура;ПараметрыРегистрации.Вставить("Наименование","Загрузка поступлений в Розницу");ПараметрыРегистрации.Вставить("Версия","1.0");ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);Возврат ПараметрыРегистрации;КонецФункцииПосле изменения:
1. Сохраните
.epf.
2. В базе удалите старую зарегистрированную обработку.
3. Добавьте исправленный файл заново.
4. Полностью перезапустите 1С.
5. Повторите загрузку.Простого изменения файла на диске может быть недостаточно, если обработка уже зарегистрирована в информационной базе. В базе могли сохраниться старые параметры регистрации.
## Вариант 2. Если обработка уже зарегистрирована в базе
В типовых конфигурациях обычно используется раздел:
НСИ и администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки
Далее:
1. Найдите
ITC_ЗагрузкаПоступлений_Розница.
2. Откройте карточку обработки.
3. Удалите ее.
4. Добавьте исправленный файл.epf.
5. Проверьте, чтобы обработка была зарегистрирована заново.В некоторых конфигурациях после повторной загрузки есть флаг вроде:
— Безопасный режим;
— Использовать безопасный режим;
— Разрешить небезопасные действия;
— Доверенная внешняя обработка.Если такой параметр доступен, для доверенной обработки его нужно отключить.
## Важно: изменение параметра может не решить проблему
Строка:
1С (Код)1ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);только сообщает конфигурации, что обработка должна выполняться без безопасного режима. Но ошибка может остаться, если запрещенное действие находится не в самой внешней обработке, а в вызываемом общем модуле или обработчике объекта.
Например, в
ПередЗаписьюможет использоваться:1С (Код)1УстановитьПривилегированныйРежим(Истина);или:
1С (Код)1ЗапуститьПриложение(...);или:
1С (Код)1Новый COMОбъект(...);или:
1С (Код)1Выполнить(ТекстКода);или работа с файлами, интернетом, внешними компонентами.
Такие действия нужно либо выполнять в разрешенном контексте, либо переделывать код.
## Как найти точную запрещенную строку
В тексте ошибки нет номера строки, поэтому нужно включить остановку отладчика на исключениях.
### В конфигураторе
1. Запустите базу в режиме отладки.
2. Откройте Отладка → Подключение.
3. Подключите текущий сеанс.
4. Включите остановку по исключениям.
5. Повторите загрузку.Отладчик должен остановиться на конкретной строке обработчика
ПередЗаписью.Также можно открыть модуль внешней обработки и выполнить поиск по следующим словам:
1С (Код)12345678910111213УстановитьПривилегированныйРежимЗапуститьПриложениеНовый COMОбъектВыполнитьНачатьПолучениеФайлаПоместитьФайлПолучитьФайлЗаписатьЧтениеТекстаЗаписьТекстаHTTPСоединениеFTPСоединениеВнешниеКомпонентыОсобенно внимательно проверьте код, который вызывается из
ПередЗаписью.## Почему ошибка появляется именно при
ЗаписатьМетод:
1С (Код)1Документ.Записать();сам по себе не обязательно является причиной ошибки.
При записи объекта 1С автоматически выполняет обработчики:
1С (Код)1234ПередЗаписьюПриЗаписиОбработкаПроведенияОбработкаПроверкиЗаполненияВ вашем случае ошибка возникает внутри
ПередЗаписью. Поэтому сообщение указывает на:1С (Код)1Ошибка при вызове метода контекста (Записать)а реальная причина находится в коде обработчика:
1С (Код)1ПередЗаписьюНапример:
1С (Код)12345Процедура ПередЗаписью(Отказ)УстановитьПривилегированныйРежим(Истина);КонецПроцедурыВ безопасном режиме такой код завершится ошибкой:
1С (Код)1Действие недоступно в безопасном режиме## Если обработка должна работать в безопасном режиме
В этом случае нельзя просто отключать безопасность. Нужно найти запрещенную операцию и заменить ее.
Например, если используется:
1С (Код)1УстановитьПривилегированныйРежим(Истина);то нужно проверить, действительно ли обработчику требуется привилегированный режим. Если он нужен только для чтения данных, запрос можно выполнять в общем серверном модуле с флагом Привилегированный.
Но для внешней обработки, выполняющей загрузку документов, часто требуется запись данных, доступ к регистрам, файлам или внешним сервисам. Безопасный режим в таком случае может быть принципиально несовместим с функциональностью обработки.
## Если обработка загружается программно
Если обработка подключается программно через
ПодключаемыеКоманды,ДополнительныеОтчетыИОбработкиили собственный механизм, проверьте параметр безопасности в месте регистрации.Должно быть примерно так:
1С (Код)123ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);Если параметр формируется в другой процедуре, найдите по конфигурации поиск:
1С (Код)1БезопасныйРежими проверьте все места, где внешняя обработка регистрируется.
## Что сделать в вашем случае
Для быстрого исправления:
1. Сделайте копию базы.
2. ОткройтеITC_ЗагрузкаПоступлений_Розница.epf.
3. ВСведенияОВнешнейОбработке()установите:1С (Код)1ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);4. Сохраните файл.
5. Удалите старую обработку из списка дополнительных обработок.
6. Загрузите файл заново.
7. Перезапустите 1С.
8. Повторите загрузку поступления.Если после этого ошибка останется, значит запрещенная операция выполняется в коде, который не зависит от параметра регистрации. Тогда нужно отлаживать обработчик
ПередЗаписьюи исправлять конкретную строку, на которой срабатывает ограничение безопасного режима.Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/1531.html
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.