Удаление изменений для обмена в случае изменения организации

1. jimli 7 12.12.22 11:14 Сейчас в теме
Есть УТ 11.4, 2 организации, по одной нужна выгрузка в БП
В настройках синхронизации установлена выгрузка по 1 организации.
Есть синхронизация данных с интернет магазина, создается заказ клиента на одну организацию, при проведении регистрируется к обмену. Потом операторы корректируют на другую организацию. По логике должно убираться из обмена, по факту остается как изменение, пытается загрузиться в БП, которая у нас базовая и не переваривает другие организации.
В расширение была добавлена процедура для общего модуля "Управление доступом"
&Перед("ПослеЗаписиНаСервере")
Процедура РП_ПослеЗаписиНаСервере(Форма, ТекущийОбъект, ПараметрыЗаписи)
	попытка    
		ТипЗначения = ТипЗнч(ТекущийОбъект);
		ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначения);
		Если не (Метаданные.Справочники.Содержит(ОбъектМетаданных) или Метаданные.Документы.Содержит(ОбъектМетаданных)) Тогда
		    возврат;
		КонецЕсли;

		Если не ТекущийОбъект.Метаданные().Реквизиты.Найти("Организация") = Неопределено Тогда
			Если не ТекущийОбъект.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН", НужныйИНН) тогда 
				ПланыОбмена.УдалитьРегистрациюИзменений(РП_ОбщиеЗапросы.ВыбратьВсеПланыОбмена(),ТекущийОбъект);                         
			КонецЕсли;
		КонецЕсли;
	исключение
		ЗаписьЖурналаРегистрации("МоеРасширение.УправлениеДоступомРП_ПослеЗаписиНаСервере",УровеньЖурналаРегистрации.Ошибка,,ТекущийОбъект,ОписаниеОшибки());
	КонецПопытки;
КонецПроцедуры

Функция ВыбратьВсеПланыОбмена(ИмяПланаОбмена = неопределено) экспорт             // 27сент2022
	тз = Новый ТаблицаЗначений; 
попытка	
	если ИмяПланаОбмена = неопределено тогда
		мПланыОбменов = новый Массив(1);
		мПланыОбменов[0]= "СинхронизацияДанныхЧерезУниверсальныйФормат";     
		//мПланыОбменов[1]= "ОбменУправлениеТорговлейБухгалтерияПредприятия";
		//мПланыОбменов[2]= "ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП";
		//мПланыОбменов[3]= "ОбменУправлениеТорговлейБухгалтерияПредприятия30";
		//мПланыОбменов[4]= "ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП30";
	иначе
		мПланыОбменов = новый Массив(1);
		мПланыОбменов[0]= ИмяПланаОбмена;
	КонецЕсли;
	Для каждого ИмяПлана из мПланыОбменов цикл
		Запрос = новый Запрос;
		запрос.Текст = "ВЫБРАТЬ
		|	ПланОбмена.Ссылка КАК Ссылка
		|ИЗ
		|	ПланОбмена." + ИмяПлана + " КАК ПланОбмена где не пометкаудаления и НомерОтправленного > 0";   

		Рез = запрос.Выполнить();
		если не рез.Пустой() тогда
			если тз.Колонки.Найти("Ссылка") = Неопределено тогда
				тз = рез.Выгрузить();
			иначе  
				Для каждого СтрокаТЗ Из рез.Выгрузить() Цикл     
					ЗаполнитьЗначенияСвойств(ТЗ.Добавить(), СтрокаТЗ) 
				КонецЦикла;   
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;  
	
	если тз.Количество() = 0 тогда 
		возврат новый массив;
	иначе
		возврат тз.ВыгрузитьКолонку("Ссылка");;
	КонецЕсли;
исключение
		ЗаписьЖурналаРегистрации("МоеРасширение.РП_ОбщиеЗапросыВыбратьВсеПланыОбмена",УровеньЖурналаРегистрации.Ошибка,,,ОписаниеОшибки());
КонецПопытки;
КонецФункции
Показать

Под обычным пользователем вылетает ошибка:
{МоеРасширение ОбщийМодуль.РП_ОбщиеЗапросы.Модуль(1906)}: Ошибка при вызове метода контекста (Выполнить): Недостаточно прав для работы с таблицей "ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат"

Но при этом у пользователей есть права на регистрацию документа к обмену! Она же происходит. Подскажите, что я делаю не так? Как можно обойти эту ошибку и удалять регистрацию документов, не принадлежащих организации?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 12.12.22 13:36 Сейчас в теме
(1) Регистрация происходит в привилегированном режиме. При выгрузке ПРО должны еще раз сработать и в выгрузку должно попасть УдалениеОбъекта вместо Заказа.
Оставьте свое сообщение

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