|
Конвертация 3.0. Отбор выгружаемых объектов. | ☑ | ||
---|---|---|---|---|
0
Rollam
10.05.17
✎
12:06
|
Возникла необходимость ограничить выгружаемые объекты по значению реквизита.
Казалось бы, что может быть проще... Пытался ограничить состав объектов в момент выгрузки двумя способами (ради примера рассмотрим документ РКО): Первый: В правилах обработки данных изменил обработчик "Выборка данных". В этом обработчике формируется массив выгружаемых объектов. В нашем случае (РКО) это происходит с использованием запроса: Запрос.Текст = " |ВЫБРАТЬ | Док.Ссылка |ИЗ | Документ.РасходныйКассовыйОрдер КАК Док |ГДЕ | Док.Проведен | И Док.Дата >= &ДатаНачала | И Док.Дата <= &ДатаОкончания"; Добавляем ограничение по реквизиту "ВидОперации": Запрос.Текст = "ВЫБРАТЬ | Док.Ссылка |ИЗ | Документ.РасходныйКассовыйОрдер КАК Док |ГДЕ | Док.Проведен | И Док.Дата >= &ДатаНачала | И Док.Дата <= &ДатаОкончания | И (Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику) | ИЛИ Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ВозвратПокупателю))"; Элементарно, но эффекта никакого. Документы с прочими видами операций все равно выгружаются. Тогда попробовал второй вариант. Второй: В правилах конвертаций объектов добавил код в текст модуля "При отправке": Если НЕ ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийРКО.ОплатаПоставщику ИЛИ НЕ ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийРКО.ВозвратПокупателю Тогда Возврат; КонецЕсли; При выгрузке полезли ошибки типа: Событие: Отправка. ПОД: Документ_ПКО_Отправка. ПКО: Документ_ПКОПолучениеНаличныхВБанке_Отправка. Объект: Документ объект: Поступление наличных, Поступление наличных МФБП-000001 от 29.11.2016 17:18:28. {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(552)}: Ошибка при вызове метода контекста (Проверить) ОбъектXDTO.Проверить(); по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1}Документ.ПКОПолучениеНаличныхВБанке Проверка свойства 'ВидОперации': форма: Элемент имя: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1}ВидОперации тип: {http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1}ВидыОперацийПКОПолучениеНаличныхВБанке Отсутствует обязательное свойство Мне кажется, это связано с тем, что объект не выгрузился, а в массиве выгружаемых объектов он присутствует, что приводит к ошибке во время проверки. Таким образом, элементарное, казалось бы, действие становится проблематичным. Есть, конечно, вариант отсеивать объекты при загрузке, но гонять лишние объекты в обмене неправильно. Может кто подсказать, каким образом в новой конвертации можно сделать этот простейший отсев объектов? |
|||
1
Romyr
11.05.17
✎
04:50
|
Видов документов много? Я добавлял параметр, и в обработке "перед выгрузкой" у конкретных документов прописывал отказ при несоблюдении условия.
|
|||
2
MaxS
11.05.17
✎
06:32
|
В КД 3 в ПОД - При Обработке есть кнопка с вопросом. Это справка! ))
Там указано про ИспользоватьПКО Например, чтобы не выгружалось пишем ИспользованиеПКО.Документ_ЗаказКлиента_Отправка = Ложь; А ещё есть правила регистрации. Их меняют в КД2. |
|||
3
Rollam
11.05.17
✎
13:52
|
(2) Про "ИспользоватьПКО" я знаю. Но разве это единственный способ? Зачем тогда нужен модуль "Выборка данных"?
Вот пока пришлось изменить правила регистрации объектов, по другому не получилось сделать. |
|||
4
Rollam
11.05.17
✎
13:53
|
(1) Это было в КД 2.1, в КД 3.0 такого, вроде, нет.
|
|||
5
MaxS
11.05.17
✎
15:23
|
(3) Выборка данных по идее должна решать вопрос, но возможно это баг или фича БСП. Не учитывает этот момент.
Так же как флаг "Выгружать очистку данных по неиспользуемым ПКО". В КД 3 есть, а БСП игнорирует эту настройку. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |