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

Делаю это с помощью произвольного запроса в ПВД.
В "ВыборкуДанных" передаю таблицу значений, где для каждой строки по одному договору, есть колонка "оплата", в которой еще одна таблица где хранятся как раз все даты и суммы. Вот как-то так.
http://cs624431.vk.me/v624431735/20dbb/uo5HZBo20Zs.jpg

Собственно вот в чем вопрос. У меня все данные по контрагенту, договору заполняются, а вот табличная часть док-та остается пустой. Я понимаю, что где-то что-то не дописала) Но не могу понять что еще надо)


Вот сам запрос.

ВыборкаДанных = Новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Контрагент");
ВыборкаДанных.Колонки.Добавить("ДоговорКонтрагента");
ВыборкаДанных.Колонки.Добавить("ПометкаУдаления");
ВыборкаДанных.Колонки.Добавить("ВалютаДокумента");
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("СуммаДокумента");
ВыборкаДанных.Колонки.Добавить("Оплата");


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

    ВыборкаДоговорКонтрагентаНомер = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ДоговорКонтрагентаНомер");

    Пока ВыборкаДоговорКонтрагентаНомер.Следующий() Цикл
        
        СтрокаВыборки = ВыборкаДанных.Добавить();
          
        Оплата = Новый ТаблицаЗначений;
        Оплата.Колонки.Добавить("Дата");
        Оплата.Колонки.Добавить("СуммаДокумента");

        ВыборкаДетальныеЗаписи = ВыборкаДоговорКонтрагентаНомер.Выбрать();

        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            
          СтрокаВыборки.Контрагент = ВыборкаДетальныеЗаписи.Контрагент;
          СтрокаВыборки.ДоговорКонтрагента = ВыборкаДетальныеЗаписи.ДоговорКонтрагента;
          СтрокаВыборки.ПометкаУдаления = ВыборкаДетальныеЗаписи.ПометкаУдаления;
          СтрокаВыборки.ВалютаДокумента = ВыборкаДетальныеЗаписи.ВалютаДокумента;
          СтрокаВыборки.Дата = ВыборкаДетальныеЗаписи.Дата1;

          СтрокаСписания =  Оплата.Добавить();
          СтрокаСписания.Дата = ВыборкаДетальныеЗаписи.Дата1;
          СтрокаСписания.СуммаДокумента = ВыборкаДетальныеЗаписи.СуммаДокумента;
                        
          СтрокаВыборки.Оплата = Оплата;
          ИсходящиеДанные = Оплата;
            
        КонецЦикла;
    КонецЦикла;
1 DaryaKoroleva
 
04.03.15
10:48
Я подозреваю, что надо что в ПКО надо определить ВходящиеДанные, а потом в ПКС в КоллекцияОбъектов передать эти данные.
2 Альбатрос
 
04.03.15
10:49
(0) Чот хрень какая-то написана...
3 Defender aka LINN
 
04.03.15
10:49
Скрин ПКО покажи
4 Defender aka LINN
 
04.03.15
10:50
(1) Хватит вечно тыкать во входящие данные. Они не для того
5 DaryaKoroleva
 
04.03.15
10:54
6 D_E_S_131
 
04.03.15
10:54
(4) Чё эта? Если у Источника нет соответствующего объектного сопоставления с Приемником, то как раз входящие данные и нужно сформировать.
7 D_E_S_131
 
04.03.15
10:58
(5) ПередОбработкой для ТЧ Приемника определить КоллекциюОбъектов (ТЗ с колонками как у ТЧ Приемника).
8 Альбатрос
 
04.03.15
10:59
Почему просто не воспользоваться ВыборкаДанных?
9 D_E_S_131
 
04.03.15
11:02
Вот пример выгрузки расшифровки

[url]http://hostingkartinok.com/show-image.php?id=6a95c6381903ad6faaebbb348bcc846b[/url]
10 D_E_S_131
 
04.03.15
11:02
11 GreatOne
 
04.03.15
11:08
(0) там по идее все данные есть уже: ИсходящиеДанные = Оплата; А галка "получать из входящих данных" у ПГС табличной части стоит? Что с этими исходящими данными в ПВД делается?
12 DaryaKoroleva
 
04.03.15
11:20
(11) у ПГС галка не стоит. Мне надо, что бы там определялась коллекция объектов, т.к. у приемника нет соответствующего объекта иначе при выгрузке выходит ошибка.
http://cs624431.vk.me/v624431735/20dd6/JiyPtFbAECw.jpg

В ПВД с Исходящими данными кроме ИсходящиеДанные = Оплата больше ничего не делается)
13 GreatOne
 
04.03.15
11:24
(12) чего? Какого объекта нет? А это: "данные по дате и сумме просто записаться в табличную часть документа"? Разве не о ТЧ приемника, в которой есть колонка Сумма и Дата идет речь? В ПВД эту сумму и дату уже получили, осталось загрузить через ВходящиеДанные в ПКГС, она сама разнесет по табличной части строки.
14 GreatOne
 
04.03.15
11:25
(12) и к чему этот скрин? Я как раз вижу галку ну и видимо передвыгрузкой коллекция все таки создается. Нафига?
15 D_E_S_131
 
04.03.15
11:28
По идее, если код в (0) отрабатывает в ПВД, то СтрокаВыборки должна подвергаться ВыгрузитьПоПравилу.
16 D_E_S_131
 
04.03.15
11:28
...а уже ПКО должно разбирать входящие данные.
17 Defender aka LINN
 
04.03.15
11:32
(6) Входящие данные нужны, чтобы передать правилу инфу из другого правила.
Например, вид договора в ПКО договоров из ПКО документа.
(5) Выкинь этот код нахрен и сними у ТЧ галку "получить из входящих данных"
18 D_E_S_131
 
04.03.15
11:34
(17) Да, я в (15) это уже как раз и отразил — в ее случае вполне можно обойтись без ВходящихДанных.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс