Исключение организаций из регистрации к обмену с БП3 в УНФ
У клиента возникла проблема — постоянно в УНФ регистрировались организации к обмену с БП3. Причем в БП3 велся учет только по одной из организаций.
Выяснить, почему регистрируются организации — в 1С это целое приключение духа, сложное и дорогое. Поэтому вместо выяснения причин я решил отменить регистрацию.
К моей великой радости в плане обмена «Синхронизация данных через универсальный формат» организация не регистрируется автоматически:
Значит, где-то есть код, который регистрирует организацию к обмену. Запустим поиск по функции «ЗарегистрироватьИзменения«. Поставил несколько точек останова, но увы не словил ничего.
Тогда запустил монитор производительности (запускал 1С с параметром РежимОтладки для облегчения работы). И там оказалась регистрация изменений, но в неожиданном месте, а именно в модуле «ОбменДаннымиXDTOСервер«:
Регистрация изменений встречается в двух местах:
Не долго думаем, очистим эти два массива от организаций:
Процедура ОчиститьНенужноеКРегистрации(М) Экспорт Всего = М.Количество(); Для Инд = 1 По Всего Цикл Поз = Всего - Инд; Эл = М[Поз]; Если ТипЗнч(Эл) = Тип("СправочникСсылка.Организации") Тогда ЗаписьЖурналаРегистрации("Отладка.НеРегистрацияОрганизации", ,, Эл, "Организация не будет зарегистрирована"); М.Удалить(Поз); КонецЕсли; КонецЦикла; КонецПроцедуры &После("ВыполнитьВыгрузкуЗарегистрированныхДанных") Процедура дор_ВыполнитьВыгрузкуЗарегистрированныхДанных(КомпонентыОбмена, НомерСообщения) //Очищаем регистрацию организаций Если КомпонентыОбмена.ЭтоОбменЧерезПланОбмена Тогда //как в исходной функции ОчиститьНенужноеКРегистрации(КомпонентыОбмена.НеВыгруженныеОбъекты); ОчиститьНенужноеКРегистрации(КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты); КонецЕсли; КонецПроцедуры
Правда, расширение назначим после процедуры ВыполнитьВыгрузкуЗарегистрированныхДанных, которая собственно и заполняет эти массивы. Первоначально я пробовал сделать очистку перед вызовом «ПроизвестиВыгрузкуДанных«, но там эти массивы еще чисты.
Поставил точку останова, чтобы удовлетворить свое любопытство и понять, какой из двух массивов содержит организации. Оказалось, объекты выгруженные по ссылке.
Понятно, что дальше можно копать в сторону того, по какому правилу конвертации организация выгружается по ссылке и почему выгружается, вмешаться в это правило конвертации и отключить передачу организации. Но за это клиент денег не заплатит, поэтому на этом пока и остановимся.
Но увы, это не помогло, организация по-прежнему пытается попасть в БП.
Тогда я сделал выгрузку в файл и обнаружил, что там есть организация. По её guid поискал ее в файле и обнаружил, что когда разносили выписку вручную, выбрали договор другой организации. Это и привело к попытке передачи другой организации и к ошибке.
В итоге решил за отдельное время написать запрос, чтобы найти все такие документы и сделать запрет на запись документа в некорректном состоянии (т.е. например с договором другой организации).
Объем: 2 час. Среда: УНФ 1.6.24.107
Свежие комментарии