Имя: Пароль:
1C
1С v8
Работа функции ВыгрузитьПоПравилу
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
Мой вопрос решен. Благодарю.
AdBlock убивает бесплатный контент. 1Сергей