|
Поиск ссылки на объект по произвольному правилу поиска в ПКО |
☑ |
0
ezhikofff
03.07.20
✎
15:20
|
Добрый день.
Как то за всю свою профессиональную деятельность работа с правилами обмена обходила меня, либо я усердно искал пути обхода.
А тут так сложилось что надо именно правилами обмена. Поэтому приходиться клепать на скорую руку, но не вся методика понятна и прозрачна.
Изначально создал План обмена без автоматического заполнения правил и свойств, т.е. план обмена настраивается полностью вручную.
Обмен между старой и Новой УТ 11, но это неважно.
В общем, необходимо найти Склад в приемнике по значению реквизита (с типом склады) справочника Склады в источнике. Ссылки на склады равны по ГУИДу в источнике и приемнике.
Т.е. в базе источник есть склады Склад1 И Склад2 с реквизитом СоответствиеВНовойУТ (тип Склады) и значением НовыйСклад, в приемнике есть ссылка НовыйСклад гуид которой = гуиду НовогоСклада в базе источник.
Делаю так:
В ПКС справочника Склады определяю поле поиска СоответствиеВНовойУТ с отметкой Передавать данные в параметр, имя параметра СоответствиеВНовойУТ и галкой Поиск объекта при загрузке по свойству.
Далее, в ПКО справочника Склады в обработчике Поля поиска пишу код:
СкладУТ = ПараметрыОбъекта["СоответствиеВНовойУТ"];
Если ЗначениеЗаполнено(СкладУТ) Тогда
СкладУИД = СкладУТ.УникальныйИдентификатор();
СсылкаНаОбъект = Справочники.Склады.ПолучитьСсылку(СкладУТ);
КонецЕсли;
И не работает.
Подскажите как правильно это делается?
|
|
1
Ёпрст
гуру
03.07.20
✎
15:30
|
(0) достаточно просто в Перед выгрузкой в ПКО Склад написать значение = Источник.СоответствиеВНовойУТ;
и всё.
|
|
2
ezhikofff
03.07.20
✎
15:47
|
(1) вот и я думаю, что должно быть как-то проще, установил в ПКО склада Перед выгрузкой Значение = Источник.СоответствиеВНовойУТ; и не работает тоже, поле склад в приемнике - пустая ссылка
При чем, если ставить галку Искать объект по внутреннему идентификатору, то в приемнике устанавливает Склад1, а если не ставить галку, то склад пустой...
Что еще не так?
|
|
3
ezhikofff
03.07.20
✎
16:04
|
(1) В общем, такой способ работает, если использовать в ПКС склада у ПКО документа, т.е. установить придется через источник.склад: Значение = Источник.Склад.СоответствиеВНовойУТ;
Но это как то некомильфо, в каждом доке переприсваивать значение источника склад, хочется в ПКО склада прописать данное правило.
Как это правильно сделать?
|
|
4
Ёпрст
гуру
03.07.20
✎
20:57
|
(3) ну, можно глобальные обработчики смотреть, иесли у объекта есть реквизит с типом СправочникиССылка.Склады, то выгружать твой гуид
|
|
5
Ёпрст
гуру
03.07.20
✎
20:59
|
типа Перед выгрузкой объекта глядеть..
|
|
6
Immortal
03.07.20
✎
21:47
|
в ПКО должна быть установлена галка поиска по уникальному идентификатору.
Ну и передавать не в параметр, а сразу чтобы значение было с нужным идентификатором.
Если не сможешь понять как - инициализируй объект с нужным guid и выгружай по правилу
|
|
7
ezhikofff
05.07.20
✎
10:08
|
(6) да да, примерно так это и представляю, вопрос как это сделать технически..
|
|
8
Immortal
05.07.20
✎
21:35
|
смотри в справке ВыгрузитьПоПравилу()
|
|