Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Поиск ссылки на объект по произвольному правилу поиска в ПКО

Поиск ссылки на объект по произвольному правилу поиска в ПКО
Я
   ezhikofff
 
03.07.20 - 15:20
Добрый день.

Как то за всю свою профессиональную деятельность работа с правилами обмена обходила меня, либо я усердно искал пути обхода.
А тут так сложилось что надо именно правилами обмена. Поэтому приходиться клепать на скорую руку, но не вся методика понятна и прозрачна.

Изначально создал План обмена без автоматического заполнения правил и свойств, т.е. план обмена настраивается полностью вручную.
Обмен между старой и Новой УТ 11, но это неважно.

В общем, необходимо найти Склад в приемнике по значению реквизита (с типом склады) справочника Склады в источнике. Ссылки на склады равны по ГУИДу в источнике и приемнике.

Т.е. в базе источник есть склады Склад1 И Склад2 с реквизитом СоответствиеВНовойУТ (тип Склады) и значением НовыйСклад, в приемнике есть ссылка НовыйСклад гуид которой = гуиду НовогоСклада в базе источник.

Делаю так:
В ПКС справочника Склады определяю поле поиска СоответствиеВНовойУТ с отметкой Передавать данные в параметр, имя параметра СоответствиеВНовойУТ и галкой Поиск объекта при загрузке по свойству.
Далее, в ПКО справочника Склады в обработчике Поля поиска пишу код:

СкладУТ = ПараметрыОбъекта["СоответствиеВНовойУТ"];

Если ЗначениеЗаполнено(СкладУТ) Тогда
    СкладУИД = СкладУТ.УникальныйИдентификатор();
    
    СсылкаНаОбъект = Справочники.Склады.ПолучитьСсылку(СкладУТ);
КонецЕсли;

И не работает.

Подскажите как правильно это делается?
   Ёпрст
 
1 - 03.07.20 - 15:30
(0) достаточно просто в Перед выгрузкой в ПКО Склад написать значение  = Источник.СоответствиеВНовойУТ;
и всё.
   ezhikofff
 
2 - 03.07.20 - 15:47
(1) вот и я думаю, что должно быть как-то проще, установил в ПКО склада Перед выгрузкой Значение = Источник.СоответствиеВНовойУТ; и не работает тоже, поле склад в приемнике - пустая ссылка
При чем, если ставить галку Искать объект по внутреннему идентификатору, то в приемнике устанавливает Склад1, а если не ставить галку, то склад пустой...

Что еще не так?
   ezhikofff
 
3 - 03.07.20 - 16:04
(1) В общем, такой способ работает, если использовать в ПКС склада у ПКО документа, т.е. установить придется через источник.склад: Значение = Источник.Склад.СоответствиеВНовойУТ;

Но это как то некомильфо, в каждом доке переприсваивать значение источника склад, хочется в ПКО склада прописать данное правило.

Как это правильно сделать?
   Ёпрст
 
4 - 03.07.20 - 20:57
(3) ну, можно глобальные обработчики смотреть, иесли у объекта есть реквизит с типом СправочникиССылка.Склады, то выгружать твой гуид
   Ёпрст
 
5 - 03.07.20 - 20:59
типа Перед выгрузкой объекта глядеть..
   Immortal
 
6 - 03.07.20 - 21:47
в ПКО должна быть установлена галка поиска по уникальному идентификатору.
Ну и передавать не в параметр, а сразу чтобы значение было с нужным идентификатором.

Если не сможешь понять как - инициализируй объект с нужным guid и выгружай по правилу
   ezhikofff
 
7 - 05.07.20 - 10:08
(6) да да, примерно так это и представляю, вопрос как это сделать технически..
   Immortal
 
8 - 05.07.20 - 21:35
смотри в справке ВыгрузитьПоПравилу()

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.