Имя: Пароль:
1C
 
КД. Поиск по гуид.
, ,
0 Конструктор
 
20.06.11
13:34
Реквизит источника хранит guid объекта в приемнике. Как настроить поиск объекта в приемнике по значению этого реквизита?
1 Поручик
 
20.06.11
14:11
Для на .. зачем? Искать объект приемника по внутреннему идентификатору объекта источника ужо не канает?
2 Конструктор
 
20.06.11
14:12
они разные изначально. сопоставить можно только по этому реквизиту.
3 Конструктор
 
20.06.11
14:13
Базы разные
4 Поручик
 
20.06.11
14:14
Как-то так.

Вместо ПараметрыОбъекта["УникальныйИдентификаторДокумента"] напиши Объект.Реквизит_С_Твоим_УИДом

В ПКО ПослеЗагрузки

// Формирует ПКО по уникальному идентификаторому, переданному из РТ
ОтчетОРозничныхПродажахУИД = Новый УникальныйИдентификатор(ПараметрыОбъекта["УникальныйИдентификаторДокумента"]);
СсылкаНаДокументПКО        = Документы.ПриходныйКассовыйОрдер.ПолучитьСсылку(ОтчетОРозничныхПродажахУИД);
5 GenV
 
20.06.11
15:26
Еще вариант:
1) Создаем любое свойство (Можно параметр, указав галку "Передавать данные в параметр"). правило у свойства не указываем.
2) Устанавливаем для свойства галку "Поиск объекта при загрузке по свойству". Обязательно!, иначе выгрузится как обычное свойство.
3) В перед выгрузкой свойства прописываем код:

Значение = Новый УникальныйИдентификатор;
// Значение должно содержать наш УИД или его строковое представление

УзелКоллекцииСвойств.ЗаписатьНачалоЭлемента("Свойство");
УстановитьАтрибут(УзелКоллекцииСвойств, "Имя", "{УникальныйИдентификатор}");
           
Если НЕ ВыполнитьОбменДаннымиВОптимизированномФормате Тогда
   УстановитьАтрибут(УзелКоллекцииСвойств, "Тип", "Строка");
КонецЕсли;
           
одЗаписатьЭлемент(УзелКоллекцииСвойств, "Значение", Значение);
УзелКоллекцииСвойств.ЗаписатьКонецЭлемента();

Отказ = Истина; // Само свойство выгружать не нужно

4) Теперь, т.к. КД сначала считывает все свойства поиска, а типовой УИД выгружается первым, то наш УИД затрет при загрузке типовой. Остальное будет работать по стандартным механизмам КД, как если бы переданным нами УИД был реальным.
6 GenV
 
20.06.11
15:31
5+ это для обработки УниверсальныйОбменДаннымиXML иначе можно оставить:

Значение = Новый УникальныйИдентификатор;
// Значение должно содержать наш УИД или его строковое представление

УзелКоллекцииСвойств.ЗаписатьНачалоЭлемента("Свойство");
УстановитьАтрибут(УзелКоллекцииСвойств, "Имя", "{УникальныйИдентификатор}");
одЗаписатьЭлемент(УзелКоллекцииСвойств, "Значение", Значение);
УзелКоллекцииСвойств.ЗаписатьКонецЭлемента();

Отказ = Истина; // Само свойство выгружать не нужно
7 Конструктор
 
04.07.11
14:03
Не вышло никак. Может что криво сделал.

Пробую сейчас так.

1. Добавляю с нуля новое правило обмена данными для регистра сведений, отказавшись от автоматического формирования правил.
2. Указываю РС МойРегистр, в дополнительных настройках ничего не устанавливаю (на запоминать выгруженные - ставится автоматически).
3. Обработчики не назначаю.
4. Отказываюсь от автоматического создания ПКС и ПКЗ у подчиненных объектов, а также от создания правил выгрузки.
5. Далее работаю в окне "Настройка правил обмена" при выделенном ПКО МойРегистр.
5.1. Нажимаю Синхронизация свойств на ком.панели списка Конвертация свойств и указываю в качестве свойства нужное мне измерение.
5.2. Снимаю флаг "Рекурсивно создавать..." и добавляю.
5.3. Открываю ПКС, ставлю флаг Получить значение из входящих данных (потому что в справке так и написано, что для передачи данных в параметр нужно устанавливать этот флаг)
5.4. Переключаю правило в режим ".Передавать данные в параметр".
5.5. Ввожу имя параметра "uid".
5.6. В обработчике Перед выгрузкой пишу


ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("uid", Источник.МойУИД);



Пока все верно?
8 Конструктор
 
04.07.11
14:15
^
9 Конструктор
 
04.07.11
15:47
видимо мало знатоков КД на мисте) или в отпусках все
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс