Конвертация выписки банка 1CClientBankExchange в собственный формат

Для централизации финансовой деятельности необходимо обработать выписки формата 1CClientBankExchange в формат собственной банковской системы (например записать в базу данных MS SQL или Oracle ). В частности подобные файлы обрабатываются в крупных корпорациях и финансовых организациях.

Первоначально мы имеем сетевую файловую структуру следующего вида

В папку «IN» поступают банковские выписки и после обработки попадают в папку «Archive».

Дополнительно необходимо предусмотреть папку «Error» для ошибочных файлов и папку «Log», где будут вестись логи обработки.

Программа будет написана на языке C#.

Кодировка исходных файлов — Windows-1251. Обработка файла выполняется следующем образом. Мы анализируем каталог, получаем общее количество файлов, потом возвращаемся к первому файлу, разбиваем строку на массив элементов по разделителю «=». После обработки файла он перемещается в архив, исходный файл удаляется.

public static bool ReadFile(string filename)
{
var srcEncoding = Encoding.GetEncoding(1251);
var dstEncoding = Encoding.UTF8;
bool success = false;
try
{
using (StreamReader sr = new StreamReader(filename, encoding: srcEncoding))
{
string headers = sr.ReadLine();
int count = System.IO.File.ReadAllLines(filename).Length;
int i = 0;
logger.Debug("Чтение данных");
PaymentP paymentP = new PaymentP();
while (i < count)
{
string onedouble = sr.ReadLine();
if (Check(onedouble) == true)
{
string[] lines = Regex.Split(onedouble, "[=]");
if (lines[0] != null)
                        {
                            if (lines[1] != null)
                            {
                                logger.Debug($"{lines[0]} {lines[1]}");
                                paymentP.TranslateToexport(lines[0], lines[1]);
                                i++;
                                success = true;
                            }
                            if (lines[1] == null)
                            {
                                logger.Debug($"{lines[0]}");
                                i++;
                                success = true;
                            }
                        }
                    }
                    else
                    {
                        i++;
                        success = true;
                    }
                }
                Export(paymentP);
                paymentP=null;

            }
        }
        catch
        {
            logger.Debug("Ошибка чтения файла");
        }
        return success;

После обработки данные записываются в структуру

public class PaymentP
{
public string Otpravitel;
public string Poluchatel;
public DateTime DataSozdaniya;
public DateTime VremyaSozdaniya;
public string RaschSchet;
public string Dokument;
public string Nomer;
public DateTime Data;
public string Summa;
public string PlatelshchikSchet;
public string PlatelshchikINN;
public string PlatelshchikKPP;
public string Platelshchik1;
public string PlatelshchikRaschSchet;
public string PlatelshchikBank1;
public string PlatelshchikBank2;
public string PlatelshchikBIK;
public string PlatelshchikKorschet;
public string PoluchatelSchet;
public string PoluchatelINN;
public string Poluchatel1;
public string PoluchatelRaschSchet;
public string PoluchatelBank1;
public string PoluchatelBank2;
public string PoluchatelBIK;
public string PoluchatelKorschet;
public string VidPlatezha;
public int VidOplaty;
public int Ocherednost;
public string NaznacheniePlatezha;

И обращаемся к конкретному полю ( реализация вывода выполнена в ознакомительных целях).

Настройки корневого пути файлов мы будем хранить в реестре операционной системы.

Обработанные поля в консоль выводятся следующем образом (для проверки).

Скачать приложение http://developcbs.ru/downloads/1C_Analizy.7z

Ознакомиться с проектом https://github.com/aovakur/Read1C_financial_doc

E-mail для связи: andrey@businessarchitecture.ru,

Телефон: +7 (930) 946-81-61 (Андрей)