|
Работа функции ВыгрузитьПоПравилу |
☑ |
0
NikePopov
26.11.12
✎
13:42
|
Добрый день.
Столкнулся по следующей проблемой: требуется выгрузить обеъект(элемент справочника) исходя из неких параметров.
Описание задачи:
Справочник "Получатели" содержит в себе и склады и контрагентов, при выгрузке требуется разделить и выгружать совершенно по разному.
Попытка реализации:
Создаю 3 ПКО: Получатели(оно используется везде для переадресации на другое ПКО), Получатели_Склады(если склад), Получатели_Контрагенты(если контрагент)
Код(Обработчик ПриВыгрузкеОбъекта):
СтандартнаяОбработка = Ложь;
Если Источник.ТипПолучателя = Перечисления.ТипыПолучателей.Склад Тогда
ВыгрузитьПоПравилу(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, "Получатели_Склады", УзелСсылки, Ложь);
Иначе
ВыгрузитьПоПравилу(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, "Получатели_Контрагенты", УзелСсылки, Ложь);
КонецЕсли;
Результат:
Ошибка:
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9751)}: Ошибка при вызове метода контекста (ЗаписатьКонецЭлемента): Не установлен приемник XML
|
|
1
Aleksey
26.11.12
✎
13:43
|
А что просто нельзя
ВыгрузитьПоПравилу(Источник, ,, , "Получатели_Контрагенты", , );
|
|
2
NikePopov
26.11.12
✎
13:45
|
В этом случае потеряется ссылка на выгружаемый объект. Собственно смысл в том, что элемент справочника будет выгружаться из документа и затем возвращаться ссылкой в реквизит этого документа.
|
|
3
Aleksey
26.11.12
✎
13:46
|
(2) Господи, а это то зачем? Открой для себя ИмяПКО
|
|
4
NikePopov
26.11.12
✎
13:46
|
Точнее не модифицируется свойство контекста "Приемник"
|
|
5
Aleksey
26.11.12
✎
13:46
|
Обработчики "Правила конвертации свойств"
Перед выгрузкой
Условия возникновения события
Событие выполняется перед выгрузкой значения свойства. Возможен отказ от выгрузки. УзелСвойства еще не создан, конвертируемое значение Неопределено.
Параметры:
ИмяПКО - имя правила конвертации, по которому производится преобразование значения свойства. Может быть выбрано в зависимости от каких-либо условий.
|
|
6
NikePopov
26.11.12
✎
13:47
|
Вот об этом то я и не подумал. Огромное спасибо!
|
|
7
Aleksey
26.11.12
✎
13:47
|
Если Источник.ТипПолучателя = Перечисления.ТипыПолучателей.Склад Тогда
ИмяПКО=Получатели_Склады";
Иначе
ИмяПКО="Получатели_Контрагенты";
КонецЕсли;
А дальше конверташка сама все сделает
|
|
8
NikePopov
26.11.12
✎
13:47
|
Мой вопрос решен. Благодарю.
|
|
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан