Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: Multicvet от 27 марта 2017, 09:36:03

Название: Импорт выписки клиент-банка (формат для 1C) Qlikview, Sense
Отправлено: Multicvet от 27 марта 2017, 09:36:03
Привет всем!
Кто-нибудь практиковал импортировать в QV выписку из клиент-банка, формат 1С (что б ему не ладно было)?
Напомню, что файл-обмена - текст в таком виде:

1CClientBankExchange
ВерсияФормата=1.01
Кодировка=Windows
Получатель=
ДатаНачала=30.12.2014
ДатаКонца=30.12.2014
РасчСчет=55555555555555555555
СекцияРасчСчет
ДатаНачала=30.12.2014
ДатаКонца=30.12.2014
РасчСчет=55555555555555555555
НачальныйОстаток=11968773.05
ВсегоПоступило=19268846.06
ВсегоСписано=26786719.00
КонечныйОстаток=4450900.11
КонецРасчСчет
СекцияДокумент=Платежное требование
Номер=2127
Дата=30.12.2014
Сумма=32.00
ПлательщикСчет=55555555555555555555
ДатаСписано=30.12.2014
ПлательщикИНН=4444444444
ПлательщикКПП=
Плательщик1= Общество с ограниченной ответственностью "Ромашка"
ПлательщикРасчСчет=55555555555555555555
ПлательщикБанк1=Б ОАО БАНК ВТБ
ПлательщикБанк2=Г МОСКВА
ПлательщикБИК=044525187
ПлательщикКорсчет=30101810700000000187
ПолучательСчет=77777777777777777777
ПолучательИНН=7702070139
ПолучательКПП=
Получатель1= Банк ВТБ (открытое акционерное общество)
ПолучательРасчСчет=77777777777777777777
ПолучательБанк1=Б ОАО БАНК ВТБ
ПолучательБанк2=Г МОСКВА
ПолучательБИК=044525187
ПолучательКорсчет=30101810700000000187
ВидПлатежа=электронно
ВидОплаты=02
СтатусСоставителя=
ПоказательКБК=
ОКАТО=
ПоказательОснования=
ПоказательПериода=
ПоказательНомера=
ПоказательДаты=
ПоказательТипа=
СрокПлатежа=30.12.2014
Очередность=
НазначениеПлатежа=Вознаграждение по документу №2127 о
КонецДокумента
Название: Re: Импорт выписки клиент-банка (формат для 1C)
Отправлено: admin от 27 марта 2017, 10:28:18
Привет.

Грузил из таблиц Excel данные с различной структурой.
Несколько ступеней преобразования и можно получить выписку в виде таблицы с полями по структуре выписки.
А не проще будет загнать выписку в 1с и взять оттуда?
Название: Re: Импорт выписки клиент-банка (формат для 1C)
Отправлено: Multicvet от 27 марта 2017, 11:51:52
Да, наверное проще через 1С прогнать. Думал, может у кого готовое решение есть.
Название: Re: Импорт выписки клиент-банка (формат для 1C)
Отправлено: admin от 27 марта 2017, 03:26:21
Думаю, да - если выписка обрабатывается в 1С, то так будет проще.
Если нет, то можно и в скрипте сделать загрузку.
Примерный ход действий - загрузить как текст с номерами строк, разбить строку на поле, значение и развернуть в таблицу.
Название: Re: Импорт выписки клиент-банка (формат для 1C)
Отправлено: Multicvet от 27 июня 2017, 12:59:40
Из текстового файла вида:

Цитировать1CClientBankExchange
ВерсияФормата=1.01
Кодировка=Windows
Получатель=
ДатаНачала=06.04.2017
ДатаКонца=06.04.2017
РасчСчет=4070***
СекцияРасчСчет
ДатаНачала=06.04.2017
ДатаКонца=06.04.2017
РасчСчет=40702810300060001424
НачальныйОстаток=2782246.43
ВсегоПоступило=22246062.21
ВсегоСписано=19988623.64
КонечныйОстаток=5039685.00
КонецРасчСчет
СекцияДокумент=Банковский ордер


Я загрузил так:
Directory;
Выписки:
LOAD

Date(DayStart(Date(ДатаНачала,'DD.MM.YYYY'))) as "Начальная дата",
     Date(DayStart(Date(ДатаКонца,'DD.MM.YYYY'))) as "Конечная дата",
     text(РасчСчет) as "Расчетный счет",
     Date(DayStart(Date(filetime()))) As "Дата файла",
     Num(НачальныйОстаток) as "Нач. остаток",
     Num(ВсегоСписано) as "Списано",
     Num(ВсегоПоступило) as "Поступило",
     Num(КонечныйОстаток) as "Кон. остаток"
FROM
\\Файлы обмена\*.txt
(txt, codepage is 1251, embedded labels, delimiter is '=', msq, header is 1 lines, filters(
Transpose()
));
Название: Re: Импорт выписки клиент-банка (формат для 1C)
Отправлено: admin от 27 июня 2017, 07:18:42
Привет.
Ну и я примерно так же,
с расшифровками можно так сделать:

    t2:
    LOAD Row,
         RowID,
         Field,
         Value,
         tmp1,
        F6 as Номер,
        F7 as Дата,
        F8 as Сумма,
        F9 as ПлательщикСчет,
        F10 as ДатаСписано,
        F11 as Плательщик,
        F12 as ПлательщикИНН,
        F13 as ПлательщикКПП,
        F14 as ПлательщикРасчСчет,
        F15 as ПлательщикБанк,
        F16 as ПлательщикБИК,
        F17 as ПлательщикКорсчет,
        F18 as ПолучательСчет,
        F19 as ДатаПоступило,
        F20 as Получатель,
        F21 as ПолучательИНН,
        F22 as ПолучательКПП,
        F23 as ПолучательРасчСчет,
        F24 as ПолучательБанк,
        F25 as ПолучательБИК,
        F26 as ПолучательКорсчет,
        F27 as ВидПлатежа,
        F28 as ВидОплаты,
        F29 as СрокАкцепта,
        F30 as УсловиеОплаты,
        F31 as СтатусСоставителя,
        F32 as ПоказательКБК,
        F33 as ОКАТО,
        F34 as ПоказательОснования,
        F35 as ПоказательПериода,
        F36 as ПоказательНомера,
        F37 as ПоказательДаты,
        F38 as ПоказательТипа,
        F39 as Очередность,
        F40 as НазначениеПлатежа,
        F41 as ВидАккредитива,
        F42 as СрокПлатежа,
        F43 as НомерСчетаПоставщика,
        F44 as ПлатежПоПредст,
        F45 as ДополнУсловия,
        F46 as ДатаОтсылкиДок,
        F47 as Код,
        F48 as СекцияДокумент
    FROM [t1.csv] (txt, utf8, embedded labels, delimiter is ',', msq, filters(
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'Номер')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'Дата')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'Сумма')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПлательщикСчет')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ДатаСписано')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'Плательщик')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПлательщикИНН')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПлательщикКПП')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПлательщикРасчСчет')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПлательщикБанк')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПлательщикБИК')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПлательщикКорсчет')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПолучательСчет')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ДатаПоступило')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'Получатель')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПолучательИНН')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПолучательКПП')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПолучательРасчСчет')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПолучательБанк')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПолучательБИК')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПолучательКорсчет')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ВидПлатежа')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ВидОплаты')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'СрокАкцепта')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'УсловиеОплаты')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'СтатусСоставителя')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПоказательКБК')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ОКАТО')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПоказательОснования')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПоказательПериода')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПоказательНомера')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПоказательДаты')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПоказательТипа')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'Очередность')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'НазначениеПлатежа')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ВидАккредитива')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'СрокПлатежа')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'НомерСчетаПоставщика')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ПлатежПоПредст')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ДополнУсловия')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'ДатаОтсылкиДок')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'Код')), 0),
        ColXtr(4, RowCnd(CellValue, 3, StrCnd(equal, 'СекцияДокумент')), 0)
    ));


Получится большая таблица с записью на каждое поле, которую потом группируем по tmp1 и получаем реестр документов по выписке.