Ошибка при загрузке данных через встроенную обработку БП Универсальный обмен данными XML
Доброго времени суток!
Имеется проблема у нескольких клиентов, при попытке загрузки документов через типовую обработку "Универсальный обмен данными XML", при загрузке документа с данными, возникает следующая ошибка:
Настройки в универсальном обмене данными в приложенном файле.
Проблема началась после обновления БП до актуальной последней версии. На следующей версии БП наблюдается такая же проблема. До обновления такой проблемы не возникало
Конфигурации следующие:
Универсальный обмен данными в формате XML (1.0.3.532)
1С:Предприятие 8.3 (8.3.24.1691)
Бухгалтерия предприятия, редакция 3.0 (3.0.162.22) - Типовая, без доработок
Имеется проблема у нескольких клиентов, при попытке загрузки документов через типовую обработку "Универсальный обмен данными XML", при загрузке документа с данными, возникает следующая ошибка:
Ошибка записи объекта
ТипОбъекта = Пользователь
Объект = Иван Иванов
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать)
ПозицияМодуля = {ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(1996)}:ВызватьИсключение НСтр("ru = 'Действие недоступно в безопасном режиме.'");
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6422)}:Объект.Записать();
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9245)}:ЗаписатьОбъектВИБ(Объект, ТипОбъекта);
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(12820)}:ПоследнийОбъектЗагрузки = ПрочитатьОбъект();
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13160)}:ПроизвестиЧтениеДанных();
{Обработка.УниверсальныйОбменДаннымиXML.Форма.УправляемаяФорма.Форма(1415)}:ОбъектДляСервера.ВыполнитьЗагрузку();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Действие недоступно в безопасном режиме.
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]
КодСообщения = 26
ПоказатьТипОбъекта = Пользователь
Объект = Иван Иванов
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать)
ПозицияМодуля = {ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(1996)}:ВызватьИсключение НСтр("ru = 'Действие недоступно в безопасном режиме.'");
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6422)}:Объект.Записать();
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9245)}:ЗаписатьОбъектВИБ(Объект, ТипОбъекта);
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(12820)}:ПоследнийОбъектЗагрузки = ПрочитатьОбъект();
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13160)}:ПроизвестиЧтениеДанных();
{Обработка.УниверсальныйОбменДаннымиXML.Форма.УправляемаяФорма.Форма(1415)}:ОбъектДляСервера.ВыполнитьЗагрузку();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Действие недоступно в безопасном режиме.
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]
КодСообщения = 26
Настройки в универсальном обмене данными в приложенном файле.
Проблема началась после обновления БП до актуальной последней версии. На следующей версии БП наблюдается такая же проблема. До обновления такой проблемы не возникало
Конфигурации следующие:
Универсальный обмен данными в формате XML (1.0.3.532)
1С:Предприятие 8.3 (8.3.24.1691)
Бухгалтерия предприятия, редакция 3.0 (3.0.162.22) - Типовая, без доработок
Прикрепленные файлы:
По теме из базы знаний
- Загрузка данных XML с возможностью перезаполнения загружаемых объектов
- Обмен данными онлайн через Веб-сервис с использованием обработки "Универсальный обмен данными XML"
- Правила обмена (конвертации) типовых УПП 1.3 --> БП 3.0 с отбором по организации
- Универсальный обмен данными XML 8.2 и 8.3 (дополненный)
- Неудачный эксперимент переделки типового Версионирования объектов из XML в JSON
Найденные решения
(23) Этот вариант помог, всё отработало как положено. Но не очень нравится подход, если у кого-то есть другие решения - буду благодарен если отпишитесь. Как временное решение, подойдёт:
В модуле формы "Управляемая форма" - "ПриСозданииНаСервере" заменил БезопасныйРежим с Истины на Ложь:
Прошу по возможности ещё ответить у кого есть идеи, как это можно организовать
В модуле формы "Управляемая форма" - "ПриСозданииНаСервере" заменил БезопасныйРежим с Истины на Ложь:
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверка прав доступа должна располагаться самой первой.
Если Не ПравоДоступа("Администрирование", Метаданные) Тогда
ВызватьИсключение НСтр("ru = 'Использование обработки в интерактивном режиме доступно только администратору.'");
КонецЕсли;
ПроверитьВерсиюИРежимСовместимостиПлатформы();
Объект.ЭтоИнтерактивныйРежим = Истина;
#Удаление
Объект.БезопасныйРежим = Истина;
#КонецУдаления
#Вставка
Объект.БезопасныйРежим = Ложь; // < Временное исправление в связи с ошибкой
#Конецвставки
Объект.КодировкаФайлаПротоколаОбмена = "КодировкаТекста.UTF8";
ЗаголовокФормы = НСтр("ru = 'Универсальный обмен данными в формате XML (%ВерсияОбработки%)'");
ЗаголовокФормы = СтрЗаменить(ЗаголовокФормы, "%ВерсияОбработки%", ВерсияОбъектаСтрокойНаСервере());
Заголовок = ЗаголовокФормы;
ЗаполнитьСписокТиповДоступныхДляУдаления();
КонецПроцедуры ПоказатьПрошу по возможности ещё ответить у кого есть идеи, как это можно организовать
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Я же правильно понимаю - через конфигуратор требуется проверить эту настройку? Если речь о ней - то галочка стоит.
Смущает то, что это работало до обновления, и перестало после, и переключать флажок для пользователей не очень хотелось бы
Смущает то, что это работало до обновления, и перестало после, и переключать флажок для пользователей не очень хотелось бы
у меня релиз 3.0.160.22
ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(1996)}:ВызватьИсключение НСтр("ru = 'Действие недоступно в безопасном режиме.'");
этого вообще нет
ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(1996)}:ВызватьИсключение НСтр("ru = 'Действие недоступно в безопасном режиме.'");
этого вообще нет
в общих модулях по "Действие недоступно в безопасном режиме" тоже ничего нет.
Посмотрите конфигуратором, что выше стоит по коду, к чему идёт обращение - может видно будет
Посмотрите конфигуратором, что выше стоит по коду, к чему идёт обращение - может видно будет
У меня на принудительную запись версии объекта стало ругаться.
Типа не из модуля объекта процедура запущена следовательно ПривилегированныйРежим() возвращает ложь
Пришлось обойти с помощью подписки
Типа не из модуля объекта процедура запущена следовательно ПривилегированныйРежим() возвращает ложь
Пришлось обойти с помощью подписки
Процедура ПроверитьБезопасныйРежимПередЗаписью(Источник, Отказ) Экспорт
// АПК:75-выкл проверка ОбменДанными.Загрузка не нужна, т.к. данная проверка
// должна выполняться всегда.
// АПК:1371-выкл проверка применима для всех объектов метаданных, в т.ч. удаляемых.
Если ПолучитьОтключениеБезопасногоРежима() Тогда
УстановитьОтключениеБезопасногоРежима(Ложь);
КонецЕсли;
Если БезопасныйРежим() = Ложь Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Если Не ПривилегированныйРежим() Тогда
ВызватьИсключение НСтр("ru = 'Действие недоступно в безопасном режиме.'");
КонецЕсли;
КонецПроцедуры
Показатьотладкой встаньте на строку 1996 и посмотрите что за "Источник", оттуда и плясать.
есть подписка на событие "ПроверитьБезопасныйРежимПередЗаписью", там куча констант.
Источник как раз и будет той константой, при которой запись вызывает подписку на событие.
у пользователя скорее всего нет доступа на эту константу
Обработка встроена в Допы?
а в самой обработке в "Сведения..." что стоит в ПараметрыРегистрации.БезопасныйРежим?
или через файл-открыть?
а в самой обработке в "Сведения..." что стоит в ПараметрыРегистрации.БезопасныйРежим?
или через файл-открыть?
тогда
в модуле формы "УправляемаяФорма" "ПриСозданииНаСервере"
измените на ложь через расширение и попробуйте, больше у меня вариантов нет
в модуле формы "УправляемаяФорма" "ПриСозданииНаСервере"
Объект.БезопасныйРежим = Истина;
измените на ложь через расширение и попробуйте, больше у меня вариантов нет
(23) Этот вариант помог, всё отработало как положено. Но не очень нравится подход, если у кого-то есть другие решения - буду благодарен если отпишитесь. Как временное решение, подойдёт:
В модуле формы "Управляемая форма" - "ПриСозданииНаСервере" заменил БезопасныйРежим с Истины на Ложь:
Прошу по возможности ещё ответить у кого есть идеи, как это можно организовать
В модуле формы "Управляемая форма" - "ПриСозданииНаСервере" заменил БезопасныйРежим с Истины на Ложь:
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверка прав доступа должна располагаться самой первой.
Если Не ПравоДоступа("Администрирование", Метаданные) Тогда
ВызватьИсключение НСтр("ru = 'Использование обработки в интерактивном режиме доступно только администратору.'");
КонецЕсли;
ПроверитьВерсиюИРежимСовместимостиПлатформы();
Объект.ЭтоИнтерактивныйРежим = Истина;
#Удаление
Объект.БезопасныйРежим = Истина;
#КонецУдаления
#Вставка
Объект.БезопасныйРежим = Ложь; // < Временное исправление в связи с ошибкой
#Конецвставки
Объект.КодировкаФайлаПротоколаОбмена = "КодировкаТекста.UTF8";
ЗаголовокФормы = НСтр("ru = 'Универсальный обмен данными в формате XML (%ВерсияОбработки%)'");
ЗаголовокФормы = СтрЗаменить(ЗаголовокФормы, "%ВерсияОбработки%", ВерсияОбъектаСтрокойНаСервере());
Заголовок = ЗаголовокФормы;
ЗаполнитьСписокТиповДоступныхДляУдаления();
КонецПроцедуры ПоказатьПрошу по возможности ещё ответить у кого есть идеи, как это можно организовать
(26) раз работает, тогда проще не через #ИзменениеИКонтроль, а при ПриСозданииНаСервереПосле просто написать "Объект.БезопасныйРежим = Ложь;"
насчет того - "работало раньше", 1С-цы что-то сильно прикрутили и не учли какой-то момент, поэтому в багтрекер нужно написать, т.к. в релизе 3.0.160.22 нет тех условий выполнения, которые есть в 3.0.162.22. Отсюда и все проблемы
насчет того - "работало раньше", 1С-цы что-то сильно прикрутили и не учли какой-то момент, поэтому в багтрекер нужно написать, т.к. в релизе 3.0.160.22 нет тех условий выполнения, которые есть в 3.0.162.22. Отсюда и все проблемы
(28) Как вариант можно обработку УниверсальныйОбменДаннымиXML сохранить как внешнюю и поправить процедуру ПриСозданииНаСервере
Объект.БезопасныйРежим = Ложь; // Истина
Объект.БезопасныйРежим = Ложь; // Истина
Прикрепленные файлы:
УниверсальныйОбменДаннымиXML.epf
Для того чтобы ошибка ушла необходимо в свойствах обработки установить БезопасныйРежим = Ложь
Это можно сделать в расширении, как сказано выше или в правилах.
Например после загрузки правил обмена написать
БезопасныйРежим = Ложь;
Или
ЭтотОбъект.БезопасныйРежим = Ложь
Это же надо написать и перед загрузкой данных.
Это можно сделать в расширении, как сказано выше или в правилах.
Например после загрузки правил обмена написать
БезопасныйРежим = Ложь;
Или
ЭтотОбъект.БезопасныйРежим = Ложь
Это же надо написать и перед загрузкой данных.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
