Имя: Пароль:
1C
1С v8
Конвертация данных. Запись в табличную часть. Произвольный алгоритм.
0 DaryaKoroleva
 
27.02.15
15:02
Добрый день.
Переношу данные из Бухгалтерии 2.0 документ "Списание с расчетного счета" в Документооборот в дописанный документ.
Надо что бы в приемнике табличная часть документа дополнялась данными (дата, сумма) из разных документов источника.
Т.е. например у нас есть в источнике 2 документа списания по договору N, от 2.02.14 и от 3.02.14. В приемник они должны создаться как один документ, а данные по дате и сумме просто записаться в табличную часть документа у которого договор тоже N.
Примерно вот так:
http://cs625618.vk.me/v625618735/1ea1d/DPJwiSYjUuE.jpg

В ПВД делаю произвольным запросом.
Знаю, что надо передать в "ВыборкаДанных" уже коллекцию с данными по одному договору.
Но не совсем понимаю как это сделать.
Подскажите пожалуйста, как правильно передать туда коллекцию...

Пока у меня вот такой запрос.

ИсходящиеДанные = Новый Массив;
Запись  = Новый Структура;

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

    ИсходящиеДанные.Добавить(Запись);
    //ВыборкаДанных = ИсходящиеДанные;

КонецЦикла;
Программист всегда исправляет последнюю ошибку.