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

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

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

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

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

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

Там пишем:

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

Не выгружает как будто
9 hhhh
 
05.10.18
16:46
(6) вот это

    ХозрасчетныйОбороты.Субконто1 КАК Контрагент


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

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

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

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

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

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