Вход | Регистрация


выгрузка справочника с выборкой произвольным алгоритмом (Конвертация 2.1)

выгрузка справочника с выборкой произвольным алгоритмом (Конвертация 2.1)
Я
   Charity
 
05.10.18 - 16:15
Здравствуйте, уважаемые.
Конвертацией переношу справочник контрагентов. Требуется выгрузить только тех, по которым были движения за период.
Написала запрос, в ПВД ПередОбработкой пишу мой запрос:

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

Запрос.УстановитьПараметр("СубконтоКонтрагенты",    ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);    //Виды субконто хозрасчетные

РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Сообщить(РезультатЗапроса.Количество());

В ПВД в поле "Правило конвертации" указываю правило "Контрагенты", должно вроде все работать. А при выгрузке сообщает количество (ненулевое) и пишет, что выгружено объектов 0. 
Куда копать, пните, пожалуйста.
Спасибо!
 
 
   Charity
 
1 - 05.10.18 - 16:17
Можно, конечно, перебрать в цикле и написать ВыгрузитьПоПравилу, но тогда если добавятся какие-то реквизиты для синхронизации, мне придется каждый раз лопатить ПВД на предмет соответствия полей выборки полям в ПКО. Хотелось бы попроще.
   Amra
 
2 - 05.10.18 - 16:18
Вместо РезультатЗапроса = Запрос.Выполнить().Выгрузить(); напиши ВыборкаДанных = Запрос.Выполнить()
   elCust
 
3 - 05.10.18 - 16:23
Не проще результат этого запроса положить в параметр, заполнив его в ПередВыгрузкойДанных и в ПКО перед выгрузкой проверить наличие ссылки в этом параметре.
   Charity
 
4 - 05.10.18 - 16:27
(2) Пробую так, вроде начинает шуршать, обругивается, что поле объекта не обнаружено (код), попробую все поля кроме наименования убрать и посмотреть, что выйдет
   Charity
 
5 - 05.10.18 - 16:29
(3) Это вместо РезультатЗапроса = и т.д. надо завести параметр и написать Парамаетры.Имяпараметра = Запрос.выполнить.Выгрузить()

Так надо?
и потом анализировать перед конвертацией объектов?
   Charity
 
6 - 05.10.18 - 16:38
Может, в запросе псевдоним надо другой задать?
   elCust
 
7 - 05.10.18 - 16:39
(5) Вот чтобы не повторять в ПВД всю структуру свойств из ПКО:

Да инициализируем параметр в модуле "Перед выгрузкой данных. Он должен быть таблицей значений к примеру.

Затем в ПКО есть модуль "Перед выгрузкой"

Там пишем:

Если Параметры.НашаТаблица.Найти(Источник, "Ссылка") = 
    Неопределено Тогда
Отказ = Истина;
КонецЕсли;
   Charity
 
8 - 05.10.18 - 16:45
Начало выгрузки:   05.10.2018 18:44:39
492
Окончание выгрузки: 05.10.2018 18:44:42
Выгружено объектов: 0

Не выгружает как будто
   hhhh
 
9 - 05.10.18 - 16:46
(6) вот это
    ХозрасчетныйОбороты.Субконто1 КАК Контрагент


бред какой-то. напиши

    ХозрасчетныйОбороты.Субконто1 КАК Ссылка
   Charity
 
10 - 05.10.18 - 16:48
(9) Я уже так писала и делала псевдоним "Источник" и "Ссылка". Попробую еще раз, чем черт не шутит
 
 Рекламное место пустует
   Charity
 
11 - 05.10.18 - 16:50
опять пишет, что выгружено 0...
   hhhh
 
12 - 05.10.18 - 16:56
(11) а это написали?

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

волшебное слово ВыборкаДанных ??
   elCust
 
13 - 05.10.18 - 16:56
(11) Ну отладку запусти. Посмотри что в параметре.
   Charity
 
14 - 05.10.18 - 17:02
(12) Естественно написала. И выборка не пустая. Убрала уже условие на проверку наличия в параметре контрагента, не пашет, блин
   Charity
 
15 - 05.10.18 - 17:03
Похоже, я где-то в базовых понятиях запуталась, может, кто-то даст ссылку на мануалы по КД?
   Amra
 
16 - 05.10.18 - 17:11
ИТС
   Charity
 
17 - 05.10.18 - 17:34
(16) Спасибо! нашла еще маны и у меня диссонанс: написано, что достаточно инициализировать выборку, задать правило и будет ок. Ладно, буду разбираться, где кривые руки.
   Amra
 
18 - 05.10.18 - 17:42
(17) Все правильно пишут, только имеется ввиду что в запросе должны быть все те поля, которые используются в ПВС. То есть если в ПВС сопоставлен код и наименование, то запрос должен быть

|ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ХозрасчетныйОбороты.Субконто1.Код КАК Код,
|    ХозрасчетныйОбороты.Субконто1.Наименование КАК Наименование,
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, , , , &СубконтоКонтрагенты, , , ) КАК ХозрасчетныйОбороты";
   Charity
 
19 - 05.10.18 - 18:05
(18) Спасибо!
Я вроде как разобралась. Сказывается отсутствие постоянной работы с КД.
Итак, в ПВД пишу следующее:
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ХозрасчетныйОбороты.Субконто1 КАК Источник
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, , , , &СубконтоКонтрагенты, , , ) КАК ХозрасчетныйОбороты";
Запрос.УстановитьПараметр("НачалоПериода",    Дата(2017, 06,15));    //Дата

Запрос.УстановитьПараметр("СубконтоКонтрагенты",    ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);    //Виды субконто хозрасчетные

РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл 
    //Сообщить(РезультатЗапроса.Источник);

    ВыгрузитьПоПравилу(РезультатЗапроса.Источник,,,,"Контрагенты");
КонецЦикла;

Правило конвертации для ПВД убрала. ПКО как обычно делаю.
Обращаю внимание тех, кто как я не разбирается в КД, вдруг кому пригодится:
ВыгрузитьПоПравилу(ЗДЕСЬ_ОБЪЕКТ_ВЫГРУЗКИ_ПЕРВЫЙ_ПАРАМЕТР  и т.д. по синтаксису. У меня были образцы правил, там выгрузка была из структуры в качестве третьего параметра и я не разобравшись лепила правила по образу и подобию
   Charity
 
20 - 05.10.18 - 18:06
Спасибо всем, кто принял участие в данной теме

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует