Имя: Пароль:
1C
1С v8
Проблемы с конвертацией данных
0 akhmadey
 
03.04.13
13:27
Есть задача выгрузить из одной базы(самописная) в другую(УПП1.3) авансовые счета-фактуры, причем если аванс частично зачтен, в приемнике должен быть документ с суммами остатка, а не документа-источника. Есть ПВД с отключенным Объектом-источником, Произвольным алгоритмом и проставленным ПКО. В обработчике ПередОбработкой формируется таблица ВыгрузкаДанных. Опытным путем установлено, что количество строк в таблице больше одной, т.е. запрос отрабатывает и таблица заполняется. Но выгружается только первая строка таблицы. Т.е. вместо, например, десяти документов только один. В чем может быть проблема? Заранее благодарен.
1 scanduta
 
03.04.13
13:35
Кидай код выгрузки где идет "ПередОбработкой формируется таблица ВыгрузкаДанных" и формируется выгрузка по правилу
2 akhmadey
 
03.04.13
13:48
ВыборкаДанных = Новый ТаблицаЗначений;

ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("Номер");
ВыборкаДанных.Колонки.Добавить("Организация");
ВыборкаДанных.Колонки.Добавить("Контрагент");
ВыборкаДанных.Колонки.Добавить("ДоговорКонтрагента");
ВыборкаДанных.Колонки.Добавить("СуммаДокумента");
ВыборкаДанных.Колонки.Добавить("Авансы");

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("Организация", Параметры.Организация);
Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНачала));
Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаОкончания));

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

ВыборкаДок = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДок.Следующий() Цикл
   СтрокаТЧ = ВыборкаДанных.Добавить();
   СтрокаТЧ.Дата = ВыборкаДок.Док.Дата;
   СтрокаТЧ.Номер = ВыборкаДок.Док.Номер;
   СтрокаТЧ.Организация = ВыборкаДок.Док.Организация;
   СтрокаТЧ.Контрагент = ВыборкаДок.Док.Контрагент;
   СтрокаТЧ.ДоговорКонтрагента = ВыборкаДок.Док.Договор;
   СтрокаТЧ.СуммаДокумента = ВыборкаДок.СальдоКонечныйОстаток;
   
   СтрокаТЧ.Авансы = Новый ТаблицаЗначений;
   СтрокаТЧ.Авансы.Колонки.Добавить("СтавкаНДС");
   СтрокаТЧ.Авансы.Колонки.Добавить("Сумма");
   СтрокаТЧ.Авансы.Колонки.Добавить("СуммаНДС");
   Выборка = ВыборкаДок.Выбрать();
   Пока Выборка.Следующий() Цикл
       Ставка = Окр(Выборка.НДСКонечныйОстаток*118/Выборка.СальдоКонечныйОстаток);
       СтрокаТЧАв = СтрокаТЧ.Авансы.Добавить();
       Если Ставка = 18 Тогда
           СтрокаТЧАв.СтавкаНДС = "НДС18";
       Иначе
           СтрокаТЧАв.СтавкаНДС = "НДС10";
       КонецЕсли;
       СтрокаТЧАв.СуммаНДС = Выборка.НДСКонечныйОстаток;
       СтрокаТЧАв.Сумма = Выборка.СальдоКонечныйОстаток - Выборка.НДСКонечныйОстаток;
   КонецЦикла;
КонецЦикла;
3 scanduta
 
03.04.13
14:44
А где "ВыгрузитьПоПравилу"? нужна эта часть чтобы понять как вы туда данные передаете
4 Aleksey
 
03.04.13
14:50
(3) Зачем?

Обработчики "Правила выгрузки данных"
Перед обработкой
Условия возникновения события
Событие выполняется перед обработкой каждого правила выгрузки один раз. Используется для установки дополнительных параметров перед выгрузкой данных, для переопределения выборки объектов, подлежащей выгрузке, либо для выгрузки дополнительной информации

Параметры:
...

ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов. Используется, когда способ выгрузки данных - Произвольный алгоритм. Если определить данную переменную, то обход коллекции и выгрузка объектов будет осуществляться автоматически

Важно:
Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты".



Отсюда вопрос. Что с галкой?
5 ks_83
 
03.04.13
14:54
Важно:
Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты".

А ты это сделал?