Для централизации финансовой деятельности необходимо обработать выписки формата 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 (Андрей)