|
Конвертация Бух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, спс за помощь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |