Конвертация 3.0. Отбор выгружаемых объектов.

1. Rollam 10.05.17 13:17 Сейчас в теме
Возникла необходимость ограничить выгружаемые объекты по значению реквизита.
Казалось бы, что может быть проще...

Пытался ограничить состав объектов в момент выгрузки двумя способами (ради примера рассмотрим документ РКО):




Первый:
В правилах обработки данных изменил обработчик "Выборка данных". В этом обработчике формируется массив выгружаемых объектов. В нашем случае (РКО) это происходит с использованием запроса:


Запрос.Текст = "
    |ВЫБРАТЬ
    |    Док.Ссылка
    |ИЗ
    |    Документ.РасходныйКассовыйОрдер КАК Док
    |ГДЕ
    |    Док.Проведен
    |    И Док.Дата >= &ДатаНачала 
    |    И Док.Дата <= &ДатаОкончания";
Показать


Добавляем ограничение по реквизиту "ВидОперации":

 Запрос.Текст = "ВЫБРАТЬ
                   |    Док.Ссылка

                   |ИЗ
                   |    Документ.РасходныйКассовыйОрдер КАК Док
                   |ГДЕ
                   |    Док.Проведен
                   |    И Док.Дата >= &ДатаНачала
                   |    И Док.Дата <= &ДатаОкончания
                   |    И (Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику)
                   |            ИЛИ Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ВозвратПокупателю))";
Показать


Элементарно, но эффекта никакого. Документы с прочими видами операций все равно выгружаются. Тогда попробовал второй вариант.




Второй:
В правилах конвертаций объектов добавил код в текст модуля "При отправке":

Если НЕ ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийРКО.ОплатаПоставщику
        ИЛИ НЕ ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийРКО.ВозвратПокупателю Тогда

        Возврат;
КонецЕсли;





При выгрузке полезли ошибки типа:

Скрытый текст


Мне кажется, это связано с тем, что объект не выгрузился, а в массиве выгружаемых объектов он присутствует, что приводит к ошибке во время проверки.




Таким образом, элементарное, казалось бы, действие становится проблематичным.
Есть, конечно, вариант отсеивать объекты при загрузке, но гонять лишние объекты в обмене неправильно.

Может кто подсказать, каким образом в новой конвертации можно сделать этот простейший отсев объектов?
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. artfa 58 27.05.17 11:00 Сейчас в теме
использованиепко.вашепко = Ложь;
+
3. NickKreuz 6 17.01.18 17:52 Сейчас в теме
Подсмотрел в типовом коде УТ:
Процедура ПОД_Документ_ВозвратТоваровПоставщику_ПриОбработке(ДанныеИБ, ИспользованиеПКО, КомпонентыОбмена) 
// Провека на наличие записей в табличной части Товары. 
// Если табличная часть пустая, то документ не выгружается, иначе он не пройдет проверку по схеме. 

Запрос = Новый Запрос( 
"ВЫБРАТЬ ПЕРВЫЕ 1 
|	ИСТИНА КАК ЕстьЗаписи 
|ИЗ 
|	Документ.ВозвратТоваровПоставщику.ВидыЗапасов КАК ВидыЗапасов 
|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика 
|	ПО ВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.КлючАналитики 
|ГДЕ 
|	ВидыЗапасов.Ссылка = &Ссылка 
|	И (Аналитика.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар) 
|	ИЛИ Аналитика.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))");
Запрос.УстановитьПараметр("Ссылка", ДанныеИБ.Ссылка); 

Выборка = Запрос.Выполнить().Выбрать(); 

Если Не Выборка.Следующий() Тогда 
ИспользованиеПКО.Документ_ВозвратТоваровПоставщику_Отправка = Ложь; 
КонецЕсли; 
КонецПроцедуры
Показать
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот