Имя: Пароль:
1C
1С v8
Конвертация Бух77 УПП82
0 karph
 
09.12.13
12:02
Доброго времени суток.

Вопрос по КД20.
Конвертирую документ Выписка в Платежное поручение. Одна строка табачной части исходного документа соответствует одну конечному документу. Выполняю произвольный алгоритм. Выгружаю - загружаю. В конечной базе создается правильное количество доков соответствующее количеству строк исходного дока, но они все не заполнены. С галочками "Запоминать выгруженные" и ключом выгружаемых данных игрался - не помогло.
Подскажите, что может быть
1 KRV
 
09.12.13
12:08
может глянуть полученный файл выгрузки? Может плохо чем-нибудь игрался?
2 karph
 
09.12.13
12:10
Глядел - все реквизиты под тегом "пусто".
Вот и спрашиваю может какой момент упустил.
3 karph
 
09.12.13
12:10
В отладчике запрос отрабатывает верно, ВыборкаДанных забивается корректно, Алгоритм ВыгрузитьОбъектВыборки отрабатывает, но данные не попадают в файл
4 Dimel
 
09.12.13
12:12
Текст алгоритма в студию
5 karph
 
09.12.13
12:13
ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Номер");
ВыборкаДанных.НоваяКолонка("Дата");
ВыборкаДанных.НоваяКолонка("Организация");
//ВыборкаДанных.НоваяКолонка("ВалютаДокумента");
//ВыборкаДанных.НоваяКолонка("Комментарий");
//ВыборкаДанных.НоваяКолонка("СчетОрганизации");
//ВыборкаДанных.НоваяКолонка("ВидОперации");
//ВыборкаДанных.НоваяКолонка("ДатаОплаты");
//ВыборкаДанных.НоваяКолонка("Контрагент");
//ВыборкаДанных.НоваяКолонка("ОтражатьВБухгалтерскомУчете");
//ВыборкаДанных.НоваяКолонка("ОтражатьВНалоговомУчете");
//ВыборкаДанных.НоваяКолонка("ОтраженоВОперУчете");
//ВыборкаДанных.НоваяКолонка("СуммаДокумента");
//ВыборкаДанных.НоваяКолонка("СчетУчетаРасчетовСКонтрагентом");
//ВыборкаДанных.НоваяКолонка("СчетКонтрагента");
ВыборкаДанных.НоваяКолонка("Индекс");

ДатаНачала = Дата(2013,01,01);
ДатаКонца  = Дата(2013,01,10);

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"
|Период с ДатаНачала по ДатаКонца;
|ОбрабатыватьДокументы все;
|Обрабатывать НеПомеченныеНаУдаление;
|Без итогов;
|Выписка = Документ.Выписка.ТекущийДокумент;
|Группировка Выписка;
|";

Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка() = 1 Цикл
    
    Выписка = Запрос.Выписка;
    
    Выписка.ВыбратьСтроки();
    
    Пока Выписка.ПолучитьСтроку() = 1 Цикл
    
        ВыборкаДанных.НоваяСтрока();
        
        ВыборкаДанных.Номер                          = Выписка.НомерДок;
        ВыборкаДанных.Дата                               = Выписка.ДатаДок;
        ВыборкаДанных.Организация                      = "1";
        //ВыборкаДанных.ВалютаДокумента                  = Параметры.Рубли;
        //ВыборкаДанных.Комментарий                      = Выписка.Комментарий;
        //ВыборкаДанных.СчетОрганизации                  = Выписка.БанковскийСчет;
        //ВыборкаДанных.ДатаОплаты                      = Выписка.ДатаДокВходящий;
        //ВыборкаДанных.ВидОперации                  = ;
        //ВыборкаДанных.Контрагент                     = ;
        //ВыборкаДанных.ОтражатьВБухгалтерскомУчете       = 0;
        //ВыборкаДанных.ОтражатьВНалоговомУчете            = 0;
        //ВыборкаДанных.ОтраженоВОперУчете                = 1;
        //ВыборкаДанных.СуммаДокумента                    = ?(Выписка.Приход = 0, Выписка.Расход, Выписка.Приход);
        //ВыборкаДанных.СчетУчетаРасчетовСКонтрагентом = Выписка.КоррСчет;
        //ВыборкаДанных.СчетКонтрагента                  = ;
        ВыборкаДанных.Индекс                         = Выписка.НомерСтроки;        
        
    КонецЦикла;
    
    
КонецЦикла;
6 karph
 
09.12.13
12:14
Закомментил временно, чтоб хотя бы пару реквизитов увидеть
7 Dimel
 
09.12.13
12:16
Я конечно не специалист, но мне кажется тебе надо обходить выборку, а потом очищая строки вызывать метод выгрузитьпоправилу
8 karph
 
09.12.13
12:16
Над запросом не смеяться, знаю что аналогично отработал бы метод ВыбратьДокументы() - хотел помучить запросы в 7.7
9 Dimel
 
09.12.13
12:24
(+7) пишу с телефона поэтому не могу текст модуля написать, после заполнения выборки вызываеш метод выгрузить по правилу и в правилах поиска объекта нужно не забыть указать поис по какому нибудь уникальному комментарию чтобы много раз не переписывается один документ
10 karph
 
09.12.13
12:24
(7) - по идее, если обработка видит ВыборкуДанных она сама вызывает обход этой выборки и выгружает построчно - подобное вижу в сообщениях пользователю, т.е. обход выполняется, куда данные улетучиваются не понятно
11 karph
 
09.12.13
12:27
(9) ок, выгрузить по правилу  после формирования всей выборки или одной строки?
12 Dimel
 
09.12.13
12:27
А в качестве источника в ПКО что указано?
13 karph
 
09.12.13
12:28
(12) Ничего не указано
14 Dimel
 
09.12.13
12:29
Я когда делал правила каждый объект отдельно указывал, т.е построчно
15 karph
 
09.12.13
12:29
+ (13) и в ПВД тоже ничего
16 Dimel
 
09.12.13
12:29
Т.е получить из входящих данных?
17 karph
 
09.12.13
12:30
(16) Да
18 Dimel
 
09.12.13
12:33
Так переедай эти данные :) функцией выгрузитьпоправилу делов то 5 минут, 2 строчки вставить в твой модуль. Очистить из и выгрузить после заполнения
19 karph
 
09.12.13
12:34
Уточни, плз, какие параметры передавать в ВыгрузитьПоПравилу после формирования строки ВыборкиДанных:

ВыгрузитьПоПравилу(ВыборкаДанных, , , , "МоеПравило"); - так?
20 karph
 
09.12.13
12:35
(18) а чистить зачем если при обходе строк дока создается новая строка выборки данных и она пустая?
21 Dimel
 
09.12.13
12:36
Да только я бы выборку данных все таки переименовал
22 karph
 
09.12.13
12:36
(21) ок, сейчас попробую :)
23 Dimel
 
09.12.13
12:37
У тебя должен быть один документ на одну строку выписки, соответственно тз одно строчная
24 karph
 
09.12.13
12:46
хех, данные выгрузились, но 1 доку к 1 доку
25 Dimel
 
09.12.13
12:48
Добавьте реквизит поиска уникальный типо комментарий номер док + номер строки
26 karph
 
09.12.13
12:49
дада, уже делаю :)
27 Dimel
 
09.12.13
12:53
А вообще рекомендую поставить какой ну будь хороший папской xml типа xmlspy - очень поможет
28 karph
 
09.12.13
12:59
таак, уже картина проясняется, выгружается последняя строка дока. Втиснул ВыгрузитьПоПравилу(Выборка,,,, "МоеПравило") после формирования строки, перед заполнением добавил Выборка.УдалитьСтроки()
29 karph
 
09.12.13
13:00
В правиле перед выгрузкой: КлючВыгружаемыхДанных = Строка(Источник.Дата) + Строка(Источник.Номер) + Строка(Источник.Индекс);
30 karph
 
09.12.13
13:00
В ПКС Номера: Значение = Строка(Источник.Номер) + "-" + Строка(Источник.Индекс);
31 Dimel
 
09.12.13
13:07
Ты же номер заполняеш в выборке - зачем такие сложности?
32 Dimel
 
09.12.13
13:08
Глянь в XML там все строки?
33 karph
 
09.12.13
13:11
в xml как раз и вижу что номер первого оканчивается на - 3 , т.е. третья строка, номер второго дока - 12 т.е. 12 строка. Итого 2 дока, а должно быть 3 + 12 - 15 документов.
34 Dimel
 
09.12.13
13:17
Кстати ключ выгружаемых это для других целей по моему, заполни комментарий уникально в алгоритме и включи в правиле ПКО поиск по дате и комментарию
35 karph
 
09.12.13
13:45
Победил следующим образом:
ВыгрузитьПоПравилу(Выписка,,Выборка,, "МоеПравило");
(30);
(29);

Dimel, спс за помощь