Ошибка при загрузке данных через встроенную обработку БП Универсальный обмен данными XML

1. pocket_deer 13 01.11.24 12:50 Сейчас в теме
Доброго времени суток!

Имеется проблема у нескольких клиентов, при попытке загрузки документов через типовую обработку "Универсальный обмен данными XML", при загрузке документа с данными, возникает следующая ошибка:


Ошибка записи объекта
ТипОбъекта = Пользователь
Объект = Иван Иванов
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать)
ПозицияМодуля = {ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(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) - Типовая, без доработок
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
26. pocket_deer 13 01.11.24 18:58 Сейчас в теме
(23) Этот вариант помог, всё отработало как положено. Но не очень нравится подход, если у кого-то есть другие решения - буду благодарен если отпишитесь. Как временное решение, подойдёт:

В модуле формы "Управляемая форма" - "ПриСозданииНаСервере" заменил БезопасныйРежим с Истины на Ложь:

Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// Проверка прав доступа должна располагаться самой первой.
	Если Не ПравоДоступа("Администрирование", Метаданные) Тогда
		ВызватьИсключение НСтр("ru = 'Использование обработки в интерактивном режиме доступно только администратору.'");
	КонецЕсли;

	ПроверитьВерсиюИРежимСовместимостиПлатформы();

	Объект.ЭтоИнтерактивныйРежим = Истина; 
	#Удаление
	Объект.БезопасныйРежим = Истина;
	#КонецУдаления
	#Вставка
	Объект.БезопасныйРежим = Ложь; // < Временное исправление в связи с ошибкой
	#Конецвставки
	Объект.КодировкаФайлаПротоколаОбмена = "КодировкаТекста.UTF8";

	ЗаголовокФормы = НСтр("ru = 'Универсальный обмен данными в формате XML (%ВерсияОбработки%)'");
	ЗаголовокФормы = СтрЗаменить(ЗаголовокФормы, "%ВерсияОбработки%", ВерсияОбъектаСтрокойНаСервере());

	Заголовок = ЗаголовокФормы;

	ЗаполнитьСписокТиповДоступныхДляУдаления();

КонецПроцедуры
Показать


Прошу по возможности ещё ответить у кого есть идеи, как это можно организовать
aleoreh; MaQo; stoptime; Chtcom; +4 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Tommy82 65 01.11.24 12:56 Сейчас в теме
у пользователя полные права?
посмотрите на "защиту от опасных действий"
3. pocket_deer 13 01.11.24 12:59 Сейчас в теме
4. pocket_deer 13 01.11.24 13:03 Сейчас в теме
(2) Я же правильно понимаю - через конфигуратор требуется проверить эту настройку? Если речь о ней - то галочка стоит.
Смущает то, что это работало до обновления, и перестало после, и переключать флажок для пользователей не очень хотелось бы
5. pocket_deer 13 01.11.24 13:20 Сейчас в теме
(2) Кстати, отключение флажка "Защита от опасных действий" через конфигуратор не помогло. Ошибка точно такая же
18. pocket_deer 13 01.11.24 14:43 Сейчас в теме
(17) Как я описывал в 5 - попробовал, результат не поменялся
6. Mihalich20 01.11.24 13:34 Сейчас в теме
Здравствуйте. Та же проблема! Удалось разобраться?
7. pocket_deer 13 01.11.24 13:37 Сейчас в теме
(6) Всё ещё нет)
Есть предположение что возможно баг конфигурации, думаю в багтрекер напишу
8. Mihalich20 01.11.24 13:48 Сейчас в теме
А на какой платформе запускаете?
19. pocket_deer 13 01.11.24 14:47 Сейчас в теме
(8) В описании темы все версии указаны
9. Tommy82 65 01.11.24 13:49 Сейчас в теме
у меня релиз 3.0.160.22

ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(1996)}:ВызватьИсключение НСтр("ru = 'Действие недоступно в безопасном режиме.'");

этого вообще нет
10. Tommy82 65 01.11.24 13:52 Сейчас в теме
в общих модулях по "Действие недоступно в безопасном режиме" тоже ничего нет.
Посмотрите конфигуратором, что выше стоит по коду, к чему идёт обращение - может видно будет
11. Tommy82 65 01.11.24 13:54 Сейчас в теме
если возможно, скрин с кодом приложите
14. pocket_deer 13 01.11.24 14:27 Сейчас в теме
(11) Прикладываю скриншот с текстом
Прикрепленные файлы:
12. tusv 212 01.11.24 14:20 Сейчас в теме
У меня на принудительную запись версии объекта стало ругаться.
Типа не из модуля объекта процедура запущена следовательно ПривилегированныйРежим() возвращает ложь
Пришлось обойти с помощью подписки
16. pocket_deer 13 01.11.24 14:32 Сейчас в теме
(12) Можете более подробно описать ваше решение пожалуйста? Где что дописать, куда что добавить, например
13. Tommy82 65 01.11.24 14:25 Сейчас в теме
Процедура ПроверитьБезопасныйРежимПередЗаписью(Источник, Отказ) Экспорт
	// АПК:75-выкл проверка ОбменДанными.Загрузка не нужна, т.к. данная проверка
	// должна выполняться всегда.
	
	// АПК:1371-выкл проверка применима для всех объектов метаданных, в т.ч. удаляемых.
	
	Если ПолучитьОтключениеБезопасногоРежима() Тогда
		УстановитьОтключениеБезопасногоРежима(Ложь);
	КонецЕсли;
	
	Если БезопасныйРежим() = Ложь Тогда
		Возврат;
	КонецЕсли;
	
	УстановитьПривилегированныйРежим(Истина);
	
	Если Не ПривилегированныйРежим() Тогда
		ВызватьИсключение НСтр("ru = 'Действие недоступно в безопасном режиме.'");
	КонецЕсли;
	
КонецПроцедуры
Показать


отладкой встаньте на строку 1996 и посмотрите что за "Источник", оттуда и плясать.
есть подписка на событие "ПроверитьБезопасныйРежимПередЗаписью", там куча констант.
Источник как раз и будет той константой, при которой запись вызывает подписку на событие.

у пользователя скорее всего нет доступа на эту константу
15. pocket_deer 13 01.11.24 14:30 Сейчас в теме
(13) Источник не константа, а СправочникОбъект.Пользователи. И у пользователя с полными правами доступ туда уж точно есть
Прикрепленные файлы:
17. Tommy82 65 01.11.24 14:41 Сейчас в теме
(15) "Смущает то, что это работало до обновления, и перестало после, и переключать флажок для пользователей не очень хотелось бы" - ради эксперимента - снимите и сделайте обмен
20. pocket_deer 13 01.11.24 14:48 Сейчас в теме
(17) Ответил вам раннее - ничего не поменялось, ошибка сохранилась. (Извиняюсь за повтор сообщений, ветка соскочила)
21. Tommy82 65 01.11.24 14:56 Сейчас в теме
Обработка встроена в Допы?
а в самой обработке в "Сведения..." что стоит в ПараметрыРегистрации.БезопасныйРежим?

или через файл-открыть?
22. pocket_deer 13 01.11.24 15:12 Сейчас в теме
(21) Обработка типовая, об этом я тоже описал в проблеме. В самой обработке нет "Сведений")
Либо я вас совсем не понимаю
Прикрепленные файлы:
23. Tommy82 65 01.11.24 15:25 Сейчас в теме
тогда
в модуле формы "УправляемаяФорма" "ПриСозданииНаСервере"
	Объект.БезопасныйРежим = Истина;


измените на ложь через расширение и попробуйте, больше у меня вариантов нет
24. pocket_deer 13 01.11.24 18:40 Сейчас в теме
(23) Не поверите, оно уже там стоит в типовом варианте)
Прикрепленные файлы:
25. pocket_deer 13 01.11.24 18:51 Сейчас в теме
(24) Простите, тупанул, поменяю, попробую
26. pocket_deer 13 01.11.24 18:58 Сейчас в теме
(23) Этот вариант помог, всё отработало как положено. Но не очень нравится подход, если у кого-то есть другие решения - буду благодарен если отпишитесь. Как временное решение, подойдёт:

В модуле формы "Управляемая форма" - "ПриСозданииНаСервере" заменил БезопасныйРежим с Истины на Ложь:

Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// Проверка прав доступа должна располагаться самой первой.
	Если Не ПравоДоступа("Администрирование", Метаданные) Тогда
		ВызватьИсключение НСтр("ru = 'Использование обработки в интерактивном режиме доступно только администратору.'");
	КонецЕсли;

	ПроверитьВерсиюИРежимСовместимостиПлатформы();

	Объект.ЭтоИнтерактивныйРежим = Истина; 
	#Удаление
	Объект.БезопасныйРежим = Истина;
	#КонецУдаления
	#Вставка
	Объект.БезопасныйРежим = Ложь; // < Временное исправление в связи с ошибкой
	#Конецвставки
	Объект.КодировкаФайлаПротоколаОбмена = "КодировкаТекста.UTF8";

	ЗаголовокФормы = НСтр("ru = 'Универсальный обмен данными в формате XML (%ВерсияОбработки%)'");
	ЗаголовокФормы = СтрЗаменить(ЗаголовокФормы, "%ВерсияОбработки%", ВерсияОбъектаСтрокойНаСервере());

	Заголовок = ЗаголовокФормы;

	ЗаполнитьСписокТиповДоступныхДляУдаления();

КонецПроцедуры
Показать


Прошу по возможности ещё ответить у кого есть идеи, как это можно организовать
aleoreh; MaQo; stoptime; Chtcom; +4 Ответить
27. Tommy82 65 01.11.24 19:48 Сейчас в теме
(26) раз работает, тогда проще не через #ИзменениеИКонтроль, а при ПриСозданииНаСервереПосле просто написать "Объект.БезопасныйРежим = Ложь;"
насчет того - "работало раньше", 1С-цы что-то сильно прикрутили и не учли какой-то момент, поэтому в багтрекер нужно написать, т.к. в релизе 3.0.160.22 нет тех условий выполнения, которые есть в 3.0.162.22. Отсюда и все проблемы
aleoreh; MaQo; VyacheslavShilov; +3 Ответить
28. Mihalich20 02.11.24 10:25 Сейчас в теме
Если не сложно, скиньте расширение.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот