Шаг 28 - Описание общих принципов использования шаблонов для конвертации данных в системе "Клиент-Сбербанк"

В системе "Клиент-Сбербанк" имеется встроенный конвертор данных из структуры базы данных, принятой в системе, в формат DBF или строчный и обратно. Это необходимо для связи с ОД банка или другой бухгалтерской системой у клиента.

Под строчным форматом понимается текстовый файл, в котором каждая строка соответствует записи базы данных, при этом данные, соответствующие полям записи, расположены в строке позиционно. Например, сумма платежа находится в строке с позиции 5 по позицию 25.

Идентификатором системы хранения данных АРМ "Клиент-Сбербанк" являются символы в расширении имени файла DDF.

Реализованы следующие типы конвертации:

DBF_TO_DDF  - из DBF в DDF
STR_TO_DDF  - из STR в DDF
DDF_TO_DBF  - из DDF в DBF
DDF_TO_STR  - из DDF в STR
DDF_TO_SBRF - из DDF в SBRF3

Формат первых трех строк файла шаблона конвертации:

 ТИП: DBF_TO_DDF
 ИСТ: F:\path\YYYYYYYY.DBF
 РЕЗ: XXXXXXXX.DDF
      Для типов STR_TO_DDF и DDF_TO_STR должна быть строка:
 LEN: 550  // где 550 - длина строки для конвертации

 Где: ИСТ: D:\YYYYYYYY.DBF - файл источник информации формата DBF
 ( на момент анализа шаблона программой должен существовать )

 РЕЗ:XXXXXXXX.DDF - файл базы данных программы - получатель
 информации ( при отсутствии создается с параметрами, указан-
 ными в файле KL_BANK.OBD )

Далее должна идти пустая строка или строка с надписью FIELDS.

Формат последующих строк файла - шаблона:

FIELD <наим.поля в файле XXXXXXXX.DDF> F=<наим.поля в файле YYYYYYYY.DBF>

Примечание: В строке допускается указание значения, вводимого при конвертации в поле файла XXXXXXXX.DDF в случае, если соответствующему полю файла YYYYYYYY.DBF не присвоено значения (т.н. ввод "значения по умолчанию"). Для осуществления этого действия необходимо в конце данной строки указать UM=<значение по умолчанию>. Формат последней строки файла конвертации:

END

Файл базы данных системы может быть криптографированным на уникальном ключе. В этом случае данные правильно видит только сама программа и внешним конвертором (программа CONVERT.EXE) пользоваться нельзя. Для определения криптованности того или иного файла базы смотрите файл с описанием полей FIELDS.OBT, в котором стоит признак CRIPT.

В качестве примера приведен файл шаблона VIBOR.SHB, определяющего параметры конвертации данных о движении средств на счетах клиентов из файла IVIBOR.DBF в файл внутренней базы данных VIBOR.DDF.

ТИП:  DBF_TO_DDF
РЕЗ:  VIBOR.DDF
ИСТ:  G:\NEWKLBNK\LASTCONV\DBF\IVIBOR.DBF

FIELD N_платежки   F=NDOC
FIELD Дата         F=DATADOC
FIELD Номер_счета  F=NSCHET
FIELD Сумма        F=SUMMA
FIELD Банк         F=PBANK
FIELD Отправитель  F=P_NAME
FIELD СчетОтправ   F=PSCHET
FIELD КодБанка     F=PMFO
FIELD Назначение   F=GROUND LEN=70
FIELD Назначение2  F=GROUND POS=70 LEN=70
FIELD Назначение3  F=GROUND POS=140
FIELD КодВалюты    F=CDVAL
FIELD КодОперации  F=OPER
FIELD ИНН          F=P_INN
END

Примечание: При проведении конвертации данных, программа-конвертор CONVERT.EXE работает в режиме добавления новых записей в файл - результата.

Пример шаблона для импорта данных платежных поручений в АРМ "Клиент" из внешней бухгалтерской системы.

ТИП:  DBF_TO_DDF
ИСТ:  D:\PATH...\WORK.DBF
РЕЗ:  WORK.DDF

FIELD N_платежки              F=NDOC
FIELD Дата                    F=DT
FIELD ДатаПлат                F=DATEPAY
FIELD Сумма                   F=SUMMA
FIELD Код_банка               F=MFO
FIELD Р/счет                  F=ACCPAYER
FIELD Счет_банка              F=ACCBANK
FIELD СубСчетБанк             F=SUBACC
FIELD Р/сч_получ              F=ACCREC
FIELD Получатель2             F=RECEIVER
FIELD Цель_плат1              F=GROUND  LEN=70
FIELD Цель_плат2              F=GROUND  POS=70  LEN=70
FIELD Сообщение1              F=GROUND  POS=140 LEN=70
FIELD Трасса                  F=ORDER
FIELD Отправка                F=POST
FIELD ИНН_Получ               F=INN
END

Кроме описания соответствия полей двух баз данных в строке могут быть описаны дополнительные данные, состоящие из служебного сочетания символов и его значения.

Зарезервированные служебные буквосочетания:

Для значений по умолчанию и строк типа преобразования данные не должны включать в себя пробелов, либо должны быть обрамлены символом " (кавычки). Символ новой строки описывается как в zзыке C ( \r , \n ).

Ниже приведен шаблон для конвертации данных из АРМ "Банк" в файл EXPORT.DBF для последующего импорта в "Операционный день" банка.

ТИП:  DDF_TO_DBF
ИСТ:  WORK.DDE
РЕЗ:  F:\BANK_NEW\IMPEXP\EXPORT.DBF

FIELD N_PACK     UM=77 //F=N_пачки  // можно взять из поля или подставить
                                    // константу, например = 77
FIELD N_DOCUMENT F=N_платежки
FIELD DATADOC    F=Дата
FIELD DATAPAY    F=ДатаПлат
FIELD ORDER      F=Трасса      TP=%d  // выгрузить число, а не текст
FIELD PAYER      F=Плательщик
FIELD INN_PAYER  F=ИНН_Отпр
FIELD ACC_PAYER  F=Р/счет
FIELD SUM        F=Сумма
FIELD TEL        F=Отправка    TP=%d  // тип отправки в виде числа
FIELD MFORKC     F=Код_РКЦ     TP=%09lu
FIELD MFO        F=Код_банка   TP=%09lu // девять символов с лидирующим 0
FIELD UCH_SB     F=КодБанкаПол    // БИК или код участника клиринговых расч.
FIELD ACC_BANK   F=Счет_банка
FIELD SUBACC     F=СубСчетБанк
FIELD RECEIVER   F=Получатель2
FIELD ACC_REC    F=Р/сч_получ
FIELD INN_REC    F=ИНН_Получ
FIELD GROUND     F=Цель_плат1
FIELD GROUND     F=Цель_плат2   TR=A // данные из поля Цель_плат2 будут
 // добавлены после заполненной части поля GROUND c добавлением пробела
FIELD GROUND     F=Сообщение1  TR=A // третье поле назначения платежа
FIELD BANKKORR   F=БанкКорр
FIELD UNNUM      F=УникНомер
FIELD TIME       F=Время_отпр
FIELD FIRMA      F=Фирма
FIELD SCHFIRMA   F=Счет
END

Примечание: При конвертации файлы DBF должны существовать! Файл формата DBF может быть без записей, но с описателем полей!

Для правильной работы при конвертации программа проверяет наличие полей, описанных в шаблоне. Для уточнения правильности написания нужно пользоваться текстовым описателем полей баз данных системы "Клиент-Сбербанк", поставляемым с каждой версией в файле FIELDS.OBT.

При несовпадении длин полей символьных данных конвертор обрезает ту часть, которая не вместилась в поле результата.

Пример шаблона для импорта в базу платежных документов из строчного формата (WORK.IMP).

В примере имя файла указано с знаками вопроса - это значит, что будут обработаны все файлы, попадающие под данную маску поиска файлов.

ТИП:  STR_TO_DDF
РЕЗ:  WORK.DDF
ИСТ:  D:\?????\...\OTCH????.TXT
LEN:  580 - максимальная длина строки

FIELD N_платежки           POS=0 LEN=9
FIELD Дата                 POS=9 LEN=6   // должно быть DDMMGG
                                         // или DDMMGGGG - LEN=8
FIELD ДатаПлат             POS=15 LEN=6
FIELD Сумма                POS=21 LEN=15
FIELD Код_банка            POS=36 LEN=9
FIELD Р/счет               POS=45 LEN=25  // свой
FIELD СубСчетБанк          POS=70 LEN=25 // суб коррсчет филиала
FIELD Р/сч_получ           POS=95 LEN=25
FIELD Получатель2          POS=120 LEN=70
FIELD Цель_плат1           POS=190 LEN=70   // назначение платежа
FIELD Цель_плат2           POS=260 LEN=70
FIELD Сообщение1           POS=330 LEN=70
FIELD Отправка             POS=500 LEN=2     // тип отправки 10,20,30,40
FIELD ИНН_Получ            POS=502 LEN=12
FIELD БанкКорр             POS=514 LEN=60
FIELD Трасса               POS=574 LEN=1      //очередность платежа 1-6
END

Пример шаблона для экспорта из базы платежных документов в строчный формат (WORK.EXP):

ТИП:  DDF_TO_STR
ИСТ:  WORK.DDF
РЕЗ:  F:\PATH..\EXPORT.TXT
LEN:  475 - максимальная длина строки без учета символов \r\n
FIELD N_платежки           POS=0 LEN=9
FIELD Дата                 POS=9 LEN=6   TP=%DDMMGG
FIELD ДатаПлат             POS=15 LEN=6
FIELD Сумма                POS=21 LEN=15   TR=П   // прижать вправо
FIELD Код_банка            POS=36 LEN=9   TP=%09lu // с лидирующим 0
FIELD Р/счет               POS=45 LEN=25 //свой
FIELD СубСчетБанк          POS=70 LEN=25  // счет филиала банка
FIELD Р/сч_получ           POS=95 LEN=25   TR=П
FIELD Получатель2          POS=120 LEN=70
FIELD Цель_плат1           POS=190 LEN=70   // назначение платежа
FIELD Цель_плат2           POS=260 LEN=70
FIELD Сообщение1           POS=330 LEN=70
FIELD Отправка             POS=400 LEN=2    TP=%d  // число
FIELD ИНН_Получ            POS=402 LEN=12
FIELD БанкКорр             POS=414 LEN=60
FIELD Трасса               POS=474 LEN=1    TP=%d  //очередность
END

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 14.12.2002