Имя: Пароль:
1C
1С v8
Поиск ссылки на объект по произвольному правилу поиска в ПКО
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
смотри в справке ВыгрузитьПоПравилу()
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан