Есть УТ 11.4, 2 организации, по одной нужна выгрузка в БП
В настройках синхронизации установлена выгрузка по 1 организации.
Есть синхронизация данных с интернет магазина, создается заказ клиента на одну организацию, при проведении регистрируется к обмену. Потом операторы корректируют на другую организацию. По логике должно убираться из обмена, по факту остается как изменение, пытается загрузиться в БП, которая у нас базовая и не переваривает другие организации.
В расширение была добавлена процедура для общего модуля "Управление доступом"
&Перед("ПослеЗаписиНаСервере")
Процедура РП_ПослеЗаписиНаСервере(Форма, ТекущийОбъект, ПараметрыЗаписи)
попытка
ТипЗначения = ТипЗнч(ТекущийОбъект);
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначения);
Если не (Метаданные.Справочники.Содержит(ОбъектМетаданных) или Метаданные.Документы.Содержит(ОбъектМетаданных)) Тогда
возврат;
КонецЕсли;
Если не ТекущийОбъект.Метаданные().Реквизиты.Найти("Организация") = Неопределено Тогда
Если не ТекущийОбъект.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН", НужныйИНН) тогда
ПланыОбмена.УдалитьРегистрациюИзменений(РП_ОбщиеЗапросы.ВыбратьВсеПланыОбмена(),ТекущийОбъект);
КонецЕсли;
КонецЕсли;
исключение
ЗаписьЖурналаРегистрации("МоеРасширение.УправлениеДоступомРП_ПослеЗаписиНаСервере",УровеньЖурналаРегистрации.Ошибка,,ТекущийОбъект,ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Функция ВыбратьВсеПланыОбмена(ИмяПланаОбмена = неопределено) экспорт // 27сент2022
тз = Новый ТаблицаЗначений;
попытка
если ИмяПланаОбмена = неопределено тогда
мПланыОбменов = новый Массив(1);
мПланыОбменов[0]= "СинхронизацияДанныхЧерезУниверсальныйФормат";
//мПланыОбменов[1]= "ОбменУправлениеТорговлейБухгалтерияПредприятия";
//мПланыОбменов[2]= "ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП";
//мПланыОбменов[3]= "ОбменУправлениеТорговлейБухгалтерияПредприятия30";
//мПланыОбменов[4]= "ОбменУправлениеТорговлейБухгалтерияПредприятияКОРП30";
иначе
мПланыОбменов = новый Массив(1);
мПланыОбменов[0]= ИмяПланаОбмена;
КонецЕсли;
Для каждого ИмяПлана из мПланыОбменов цикл
Запрос = новый Запрос;
запрос.Текст = "ВЫБРАТЬ
| ПланОбмена.Ссылка КАК Ссылка
|ИЗ
| ПланОбмена." + ИмяПлана + " КАК ПланОбмена где не пометкаудаления и НомерОтправленного > 0";
Рез = запрос.Выполнить();
если не рез.Пустой() тогда
если тз.Колонки.Найти("Ссылка") = Неопределено тогда
тз = рез.Выгрузить();
иначе
Для каждого СтрокаТЗ Из рез.Выгрузить() Цикл
ЗаполнитьЗначенияСвойств(ТЗ.Добавить(), СтрокаТЗ)
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
если тз.Количество() = 0 тогда
возврат новый массив;
иначе
возврат тз.ВыгрузитьКолонку("Ссылка");;
КонецЕсли;
исключение
ЗаписьЖурналаРегистрации("МоеРасширение.РП_ОбщиеЗапросыВыбратьВсеПланыОбмена",УровеньЖурналаРегистрации.Ошибка,,,ОписаниеОшибки());
КонецПопытки;
КонецФункции
Показать
Под обычным пользователем вылетает ошибка:
{МоеРасширение ОбщийМодуль.РП_ОбщиеЗапросы.Модуль(1906)}: Ошибка при вызове метода контекста (Выполнить): Недостаточно прав для работы с таблицей "ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат"
Но при этом у пользователей есть права на регистрацию документа к обмену! Она же происходит. Подскажите, что я делаю не так? Как можно обойти эту ошибку и удалять регистрацию документов, не принадлежащих организации?