public override string TodayDir() { string TmpS = CCommon.DtoC(Erc_Date); TmpS = TmpS.Substring(6, 2) + TmpS.Substring(4, 2) + TmpS.Substring(2, 2); return(CfgFile["SalaryDir"] + "\\" + TmpS + "\\"); }
public virtual string TodayDir() { string TmpS = CCommon.DtoC(Erc_Date); TmpS = TmpS.Substring(6, 2) + TmpS.Substring(4, 2) + TmpS.Substring(2, 2); return(CfgFile["DaysDir"] + "\\" + TmpS + "\\"); }
// Kinds - типы полей: // -1 = редактируемое, обязательное для заполнения; // -2 = постоянное, нередактируемое; // -3 = номер документа; // -4 = редактируемое, необязтельное для заполнения; // иначе - номер столбца из вход. данных. // public CSepAModel() { string DateStr = CCommon.DtoC(CCommon.Today()).Substring(2, 6); string TimeStr = CCommon.Hour(CCommon.Now()).ToString("00") + CCommon.Minute(CCommon.Now()).ToString("00") + CCommon.Second(CCommon.Now()).ToString("00"); try { NumberDoc += CCommon.CLng(TimeStr) * 1000; } catch (System.Exception Excpt) { NumberDoc = 1; } Kinds[CSepAFileInfo.L_DEBITMFO] = -1; Values[CSepAFileInfo.L_DEBITMFO] = "351629"; Infos[CSepAFileInfo.L_DEBITMFO] = "МФО Дб. сч."; Aliases[CSepAFileInfo.L_DEBITMFO] = "MFOA_Text"; Kinds[CSepAFileInfo.L_DEBITACC] = -1; Values[CSepAFileInfo.L_DEBITACC] = ""; Infos[CSepAFileInfo.L_DEBITACC] = "Номер Дб. сч."; Aliases[CSepAFileInfo.L_DEBITACC] = "AccountA_Text"; Kinds[CSepAFileInfo.L_CREDITMFO] = -1; Values[CSepAFileInfo.L_CREDITMFO] = "351629"; Infos[CSepAFileInfo.L_CREDITMFO] = "МФО Кт. сч."; Aliases[CSepAFileInfo.L_CREDITMFO] = "MFOCl3_Text"; Kinds[CSepAFileInfo.L_CREDITACC] = -1; Values[CSepAFileInfo.L_CREDITACC] = ""; Infos[CSepAFileInfo.L_CREDITACC] = "Номер Кт. сч."; Aliases[CSepAFileInfo.L_CREDITACC] = "AccCl3_Text"; Kinds[CSepAFileInfo.L_FLAG] = -2; Values[CSepAFileInfo.L_FLAG] = "1"; Infos[CSepAFileInfo.L_FLAG] = null; Aliases[CSepAFileInfo.L_FLAG] = ""; Kinds[CSepAFileInfo.L_SUMA] = -1; Values[CSepAFileInfo.L_SUMA] = ""; Infos[CSepAFileInfo.L_SUMA] = "Сумма "; Aliases[CSepAFileInfo.L_SUMA] = ""; Kinds[CSepAFileInfo.L_DTYPE] = -2; Values[CSepAFileInfo.L_DTYPE] = "1"; Infos[CSepAFileInfo.L_DTYPE] = null; Aliases[CSepAFileInfo.L_DTYPE] = ""; Kinds[CSepAFileInfo.L_NDOC] = -3; Values[CSepAFileInfo.L_NDOC] = ""; Infos[CSepAFileInfo.L_NDOC] = null; Aliases[CSepAFileInfo.L_NDOC] = ""; Kinds[CSepAFileInfo.L_CURRENCY] = -1; Values[CSepAFileInfo.L_CURRENCY] = "980"; Infos[CSepAFileInfo.L_CURRENCY] = "Числовой код валюты"; Aliases[CSepAFileInfo.L_CURRENCY] = ""; Kinds[CSepAFileInfo.L_DATE1] = -2; Values[CSepAFileInfo.L_DATE1] = DateStr; Infos[CSepAFileInfo.L_DATE1] = null; Aliases[CSepAFileInfo.L_DATE1] = ""; Kinds[CSepAFileInfo.L_DATE2] = -2; Values[CSepAFileInfo.L_DATE2] = DateStr; Infos[CSepAFileInfo.L_DATE2] = null; Aliases[CSepAFileInfo.L_DATE2] = ""; Kinds[CSepAFileInfo.L_DEBITNAME] = -1; Values[CSepAFileInfo.L_DEBITNAME] = "АТ \"МЕГАБАНК\""; Infos[CSepAFileInfo.L_DEBITNAME] = "Название Дб. сч."; Aliases[CSepAFileInfo.L_DEBITNAME] = "AName_Text"; Kinds[CSepAFileInfo.L_CREDITNAME] = -1; Values[CSepAFileInfo.L_CREDITNAME] = ""; Infos[CSepAFileInfo.L_CREDITNAME] = "Название Кт. сч."; Aliases[CSepAFileInfo.L_CREDITNAME] = "NameCl3_Text"; Kinds[CSepAFileInfo.L_PURPOSE] = -1; Values[CSepAFileInfo.L_PURPOSE] = ""; Infos[CSepAFileInfo.L_PURPOSE] = "Назначение платежа"; Aliases[CSepAFileInfo.L_PURPOSE] = "Argument_Text"; Kinds[CSepAFileInfo.L_RESERVED1] = -2; Values[CSepAFileInfo.L_RESERVED1] = ""; Infos[CSepAFileInfo.L_RESERVED1] = null; Aliases[CSepAFileInfo.L_RESERVED1] = ""; Kinds[CSepAFileInfo.L_DEBITACC_EXT] = -2; Values[CSepAFileInfo.L_DEBITACC_EXT] = ""; Infos[CSepAFileInfo.L_DEBITACC_EXT] = null; Aliases[CSepAFileInfo.L_DEBITACC_EXT] = ""; Kinds[CSepAFileInfo.L_CREDITACC_EXT] = -2; Values[CSepAFileInfo.L_CREDITACC_EXT] = ""; Infos[CSepAFileInfo.L_CREDITACC_EXT] = null; Aliases[CSepAFileInfo.L_CREDITACC_EXT] = ""; Kinds[CSepAFileInfo.L_SYMBOL] = -4; Values[CSepAFileInfo.L_SYMBOL] = ""; Infos[CSepAFileInfo.L_SYMBOL] = "Кассовый символ"; Aliases[CSepAFileInfo.L_SYMBOL] = ""; Kinds[CSepAFileInfo.L_RESERVED2] = -2; Values[CSepAFileInfo.L_RESERVED2] = ""; Infos[CSepAFileInfo.L_RESERVED2] = null; Aliases[CSepAFileInfo.L_RESERVED2] = ""; Kinds[CSepAFileInfo.L_OKPO1] = -1; Values[CSepAFileInfo.L_OKPO1] = "09804119"; Infos[CSepAFileInfo.L_OKPO1] = "Идент код Дб. сч."; Aliases[CSepAFileInfo.L_OKPO1] = "OKPOA_Text"; Kinds[CSepAFileInfo.L_OKPO2] = -1; Values[CSepAFileInfo.L_OKPO2] = ""; Infos[CSepAFileInfo.L_OKPO2] = "Идент код Кт. сч."; Aliases[CSepAFileInfo.L_OKPO2] = "OKPOCl3_Text"; Kinds[CSepAFileInfo.L_ID] = -3; Values[CSepAFileInfo.L_ID] = ""; Infos[CSepAFileInfo.L_ID] = null; Aliases[CSepAFileInfo.L_ID] = ""; Kinds[CSepAFileInfo.L_RESERVED3] = -2; Values[CSepAFileInfo.L_RESERVED3] = ""; Infos[CSepAFileInfo.L_RESERVED3] = null; Aliases[CSepAFileInfo.L_RESERVED3] = ""; Kinds[CSepAFileInfo.L_DES] = -2; Values[CSepAFileInfo.L_DES] = ""; Infos[CSepAFileInfo.L_DES] = null; Aliases[CSepAFileInfo.L_DES] = ""; Kinds[CSepAFileInfo.L_DEBITIBAN] = -4; Values[CSepAFileInfo.L_DEBITIBAN] = ""; Infos[CSepAFileInfo.L_DEBITIBAN] = "IBAN Дб.сч."; Aliases[CSepAFileInfo.L_DEBITIBAN] = ""; Kinds[CSepAFileInfo.L_CREDITIBAN] = -4; Values[CSepAFileInfo.L_CREDITIBAN] = ""; Infos[CSepAFileInfo.L_CREDITIBAN] = "IBAN Кт.сч."; Aliases[CSepAFileInfo.L_CREDITIBAN] = ""; Kinds[CSepAFileInfo.L_RESERVED4] = -2; Values[CSepAFileInfo.L_RESERVED4] = ""; Infos[CSepAFileInfo.L_RESERVED4] = null; Aliases[CSepAFileInfo.L_RESERVED4] = ""; Kinds[CSepAFileInfo.L_CRLF] = -2; Values[CSepAFileInfo.L_CRLF] = CAbc.CRLF; Infos[CSepAFileInfo.L_CRLF] = null; Aliases[CSepAFileInfo.L_CRLF] = ""; }
//----------------------------------------------------------------------------------------- // основная программа public static void Main() { const bool DEBUG = false; const int MAX_COLUMNS = 299; // максимальное количество столбцов int[] ColWidth = new int[MAX_COLUMNS]; // ширины столбцов int ColNumber = 0; int ALineNumber = 0; int AFieldNumber = 0; string AFileName = ""; string ModelFileName = CCommon.GetTempDir() + "\\" + "AMaker.mod"; string Now_Date_Str = CCommon.DtoC(CCommon.Today()).Substring(2, 6); string Now_Time_Str = CCommon.Hour(CCommon.Now()).ToString("00") + CCommon.Minute(CCommon.Now()).ToString("00"); CTsvWriter TsvWriter = new CTsvWriter(); CTextReader TextReader = new CTextReader(); string TsvFileName = "$"; string InpFileName = ""; int InpColCount = 0; int I, SourceMode = -2; // откуда читать данные : 0=ClipBoard , 1=CSV , 2=DIF string Tmps = ""; string[] SubTmps; //---------------------------------------------------------- CCommon.Print(" Программа для cоздания А-файлов с платежами на основе форматных данных,"); CCommon.Print(" полученных из электронной таблицы (CVS/DIF). Версия 2.03 от 17.09.2019г."); if (DEBUG) { InpFileName = "F:\\Trash\\Kazna1.csv"; } else if (CCommon.ParamCount() < 2) { CCommon.Print(""); CCommon.Print(" Формат запуска : "); CCommon.Print(" AMaker3 Имя_файла "); CCommon.Print(" где : "); CCommon.Print(" Имя_файла - имя файла данных в формате CSV или DIF "); CCommon.Print(""); return; } else { InpFileName = CAbc.ParamStr[1].Trim(); } if (InpFileName == "*") { SourceMode = 0; } else { switch (CCommon.GetExtension(InpFileName).ToUpper()) { case ".CSV": { SourceMode = 1; break; } case ".DIF": { SourceMode = 2; break; } case ".MOD": { SourceMode = -1; break; } default: { CCommon.Print("Неправильный тип файла !"); SourceMode = -2; break; } } } //---------------------------------------------------------- // если выбран файл с шаблоном, то выводим его на экран if (SourceMode == -1) { if (AModel.LoadFromFile(InpFileName)) { AModel.PrintConstValues(); if (CConsole.GetBoxChoice("Использовать теперь этот шаблон ?", " Да = Enter . Нет = Esc .")) { if (CCommon.FileExists(ModelFileName)) { CCommon.DeleteFile(ModelFileName); } if (CCommon.FileExists(ModelFileName)) { CCommon.Print("Ошибка удаления файла " + ModelFileName); } else if (!CCommon.CopyFile(InpFileName, ModelFileName)) { CCommon.Print("Ошибка записи файла " + ModelFileName); } return; } } } else if (CCommon.FileExists(ModelFileName)) { AModel.LoadFromFile(ModelFileName); } if ((SourceMode < 0) || (SourceMode > 2)) { CCommon.Print("Неправильная строка параметров !"); return; } //---------------------------------------------------------- // скидываем информацию в промежуточный Tsv-файл TsvFileName = CCommon.GetTempName(); if (TsvFileName == null) { TsvFileName = InpFileName + ".$$$"; } else if (TsvFileName.Trim() == "") { TsvFileName = InpFileName + ".$$$"; } if (SourceMode == 0) { TsvWriter.LoadFromClipboard(); if (!TsvWriter.SaveToFile(TsvFileName)) { CCommon.Print("Ошибка записи в файл " + TsvFileName); return; } } if (SourceMode > 0) { if (!CCommon.FileExists(InpFileName)) { CCommon.Print("Не найден файл " + InpFileName); return; } } if (SourceMode == 1) { if (TsvWriter.LoadFromCsvFile(InpFileName)) { if (!TsvWriter.SaveToFile(TsvFileName)) { CCommon.Print("Ошибка записи в файл " + TsvFileName); return; } } else { CCommon.Print("Ошибка чтения файла " + InpFileName); return; } } if (SourceMode == 2) { if (TsvWriter.LoadFromDifFile(InpFileName)) { if (!TsvWriter.SaveToFile(TsvFileName)) { CCommon.Print("Ошибка записи в файл " + TsvFileName); return; } } else { CCommon.Print("Ошибка чтения файла " + InpFileName); return; } } //---------------------------------------------------------- // подсчитываем количество столбцов во входящем файле , а также ширину этих столбцов for (I = 0; I < MAX_COLUMNS; I++) { ColWidth[I] = 0; } for (I = 0; I < (MAX_LINES * MAX_FILES); I++) { Cents[I] = 0; } if (!TextReader.Open(TsvFileName, CAbc.CHARSET_WINDOWS)) { CCommon.Print("Ошибка чтения файла" + TsvFileName); TsvFile.Close(); CCommon.DeleteFile(TsvFileName); return; } if (!TextReader.Read()) { CCommon.Print("Ошибка чтения файла" + TsvFileName); TsvFile.Close(); CCommon.DeleteFile(TsvFileName); return; } for (I = 0; I < 20; I++) { Tmps = TextReader.Value; SubTmps = Tmps.Split(CCommon.Chr(9)); if (SubTmps != null) { if (SubTmps.Length > InpColCount) { InpColCount = SubTmps.Length; } for (ColNumber = 0; ColNumber < SubTmps.Length; ColNumber++) { if (SubTmps[ColNumber].Length > ColWidth[ColNumber]) { ColWidth[ColNumber] = SubTmps[ColNumber].Length; } } } else { InpColCount = 0; } if (!TextReader.Read()) { break; } } TextReader.Close(); if (InpColCount == 0) { CCommon.Print("Не получается распознать входные данные "); CCommon.DeleteFile(TsvFileName); return; } //---------------------------------------------------------- // выводим столбцы на экран и запрос пользователю ( помним , что в Csv - файле нумерация столбцов начинается с 1 ) CConsole.Clear(); if (!TsvFile.Open(TsvFileName, CAbc.CHARSET_WINDOWS)) { CCommon.Print("Ошибка чтения файла " + TsvFileName); return; } for (I = 0; I < (System.Console.WindowHeight - 1); I++) { if (!TsvFile.Read()) { break; } Tmps = ""; for (ColNumber = 0; ColNumber < InpColCount; ColNumber++) { Tmps += CCommon.Left(TsvFile[ColNumber + 1], ColWidth[ColNumber]) + "¦"; } if (Tmps.Length > 0) { if (Tmps.Length < System.Console.WindowWidth - 1) { CCommon.Print(Tmps); } else { CCommon.Print(Tmps.Substring(0, System.Console.WindowWidth - 2)); } } } TsvFile.Close(); if (!CConsole.GetBoxChoice("Для продолжения обработки нажмите Enter.", "", "Для выхода нажмите Esc. ")) { CCommon.DeleteFile(TsvFileName); return; } CConsole.Clear(); //---------------------------------------------------------- // распознавание столбцов во входящем файле ( помним , что в Csv - файле нумерация столбцов начинается с 1 ) for (ColNumber = 0; ColNumber < InpColCount; ColNumber++) { CConsole.Clear(); CCommon.Print(""); if (!TsvFile.Open(TsvFileName, CAbc.CHARSET_WINDOWS)) { CCommon.Print("Ошибка чтения файла " + TsvFileName); TsvFile.Close(); CCommon.DeleteFile(TsvFileName); return; } for (I = 0; I < (System.Console.WindowHeight - 1); I++) { if (!TsvFile.Read()) { break; } else { CCommon.Print(" " + TsvFile[ColNumber + 1]); } } TsvFile.Close(); if (!AModel.RecognizeColumn(ColNumber + 1)) { CCommon.DeleteFile(TsvFileName); return; } } CConsole.Clear(); //---------------------------------------------------------- // запрашиваем у пользователя значения постоянных полей AModel.AskFixedValues(); //---------------------------------------------------------- // подсчитываем количество строк и общую сумму по входному файлу TotalLines = 0; TotalCents = 0; if (!TsvFile.Open(TsvFileName, CAbc.CHARSET_WINDOWS)) { CCommon.Print("Ошибка чтения файла " + TsvFileName); TsvFile.Close(); CCommon.DeleteFile(TsvFileName); return; } while (TsvFile.Read()) { if (IsLineEmpty()) { continue; } Cents[TotalLines] = CCommon.CLng(GetColValue(CSepAFileInfo.L_SUMA).Trim()); TotalCents += Cents[TotalLines]; TotalLines++; } TsvFile.Close(); //----------------------------------------------------------- // запрашиваем у пользователя имя файла , в который будет записан результат string ShortName = ConstPartOfName; CCommon.Write("Краткое имя результирующего файла ( " + ShortName + " ) : "); ShortName = CCommon.Input().Trim(); if (ShortName.Length > 0) { ConstPartOfName = CCommon.Left(ShortName, 8); } //----------------------------------------------------------- // сверяем с пользователем общее количество строк и общую сумму if (!CConsole.GetBoxChoice(" Всего строк : " + CCommon.Right(TotalLines.ToString(), 11) , " Общая сумма : " + CCommon.StrN(TotalBucks, 11).Replace(",", ".") , "_________________________________" , "Для продолжения нажмите Enter." , "Для выхода - Esc. " ) ) { CCommon.DeleteFile(TsvFileName); return; } CConsole.Clear(); //----------------------------------------------------------- // записываем результатов работы программы в файлы if (!TsvFile.Open(TsvFileName, CAbc.CHARSET_WINDOWS)) { CCommon.Print("Ошибка чтения файла " + TsvFileName); TsvFile.Close(); CCommon.DeleteFile(TsvFileName); return; } BatchNum = 0; // while (TotalLines > 0) { AFileName = GetAFileName(); if (!AFile.Create(AFileName, CAbc.CHARSET_DOS)) { CCommon.Print("Ошибка создания файла " + AFileName); break; } else { CCommon.Print(AFileName); } // AFile.Head[CSepAFileInfo.H_EMPTYSTR] = ""; AFile.Head[CSepAFileInfo.H_CRLF1] = CAbc.CRLF; AFile.Head[CSepAFileInfo.H_FILENAME] = CCommon.Left(AFileName, 12); AFile.Head[CSepAFileInfo.H_DATE] = Now_Date_Str; AFile.Head[CSepAFileInfo.H_TIME] = Now_Time_Str; AFile.Head[CSepAFileInfo.H_STRCOUNT] = TotalLinesInBatch().ToString(); AFile.Head[CSepAFileInfo.H_TOTALDEBET] = "0"; AFile.Head[CSepAFileInfo.H_TOTALCREDIT] = TotalCentsInBatch().ToString(); AFile.Head[CSepAFileInfo.H_DES] = "0"; AFile.Head[CSepAFileInfo.H_DES_ID] = "UIAB00"; AFile.Head[CSepAFileInfo.H_DES_OF_HEADER] = ""; AFile.Head[CSepAFileInfo.H_CRLF2] = CAbc.CRLF; // if (!AFile.WriteHeader()) { CCommon.Print("Ошибка записи файла " + AFileName); AFile.Close(); break; } // for (ALineNumber = 0; ALineNumber < TotalLinesInBatch(); ALineNumber++) { do { if (!TsvFile.Read()) { break; } }while (IsLineEmpty()); for (AFieldNumber = 0; AFieldNumber < AModel.TotalFields; AFieldNumber++) { AFile.Line[AFieldNumber] = GetColValue(AFieldNumber); } if (!AFile.WriteLine()) { CCommon.Print("Ошибка записи файла " + AFileName); break; } AModel.IncNumber(); } AFile.Close(); BatchNum++; TotalLines -= TotalLinesInBatch(); } TsvFile.Close(); CCommon.DeleteFile(TsvFileName); }
public override string TodayDir() { string TmpS = CCommon.DtoC(Erc_Date); return(CfgFile["DaysDir"] + "\\" + TmpS.Substring(2, 6) + "\\"); }
public static bool WriteBFiles(int DayDate, string DestinationFolder) { if (DestinationFolder == null) { return(false); } int FileId; CRecordSet Data_Line = new CRecordSet(Connection1); CRecordSet Data_Header = new CRecordSet(Connection2); string DebitAcc, CreditAcc , CmdText = "exec pMega_OpenGate_Export;2 @TaskCode = 'ErcGate' " + ", @Date=" + DayDate.ToString() + ", @SeansNum=" + BFileNum.ToString() + ", @FileName=''"; if (Data_Header.Open(CmdText)) { while (Data_Header.Read()) { FileId = CCommon.CInt32(Data_Header["FileId"]); if (Data_Line.Open("exec dbo.pMega_OpenGate_Export;3 @FileId=" + FileId.ToString())) { if (BFile.Create(DestinationFolder + "\\" + Data_Header["FileName"].Trim(), CAbc.CHARSET_DOS)) { BFile.Head[CSepAFileInfo.H_EMPTYSTR] = ""; // char[100] // Пеpвые 100 - пpобелы BFile.Head[CSepAFileInfo.H_CRLF1] = CAbc.CRLF; // char[ 2]; // Символ концец строки BFile.Head[CSepAFileInfo.H_FILENAME] = Data_Header["FileName"].Trim(); // char[ 12]; // Наименование файла BFile.Head[CSepAFileInfo.H_DATE] = Now_Date_Str; // char[ 6]; // Дата создания файла BFile.Head[CSepAFileInfo.H_TIME] = Now_Time_Str; // char[ 4]; // Дата создания файла BFile.Head[CSepAFileInfo.H_STRCOUNT] = Data_Header["TotalLines"].Trim(); // char[ 6]; // Количество ИС в файле BFile.Head[CSepAFileInfo.H_TOTALDEBET] = "0"; // char[ 16]; // Сумма дебета по файлу BFile.Head[CSepAFileInfo.H_TOTALCREDIT] = Data_Header["TotalCents"].Trim(); // char[ 16]; // Сумма кpедита по файлу BFile.Head[CSepAFileInfo.H_DES] = Md5.GetHash(BFile.GetHeader().Substring(102, 60)); // char[ 64]; // ЕЦП BFile.Head[CSepAFileInfo.H_DES_ID] = "UIAB00"; // char[ 6]; // ID ключа ЕЦП BFile.Head[CSepAFileInfo.H_DES_OF_HEADER] = ""; // char[ 64]; // ЕЦП заголовка BFile.Head[CSepAFileInfo.H_CRLF2] = CAbc.CRLF; // char[ 2]; // Символ конец строки if (!BFile.WriteHeader()) { Data_Header.Close(); Data_Line.Close(); BFile.Close(); return(false); } while (Data_Line.Read()) { DebitAcc = Data_Line["DebitAcc"].Trim(); CreditAcc = Data_Line["CreditAcc"].Trim(); BFile.Line[CSepAFileInfo.L_DEBITMFO] = Data_Line["DebitMfo"].Trim(); // char[ 9]; // Дебет-МФО BFile.Line[CSepAFileInfo.L_DEBITACC] = DebitAcc; // char[ 14]; // Дебет-счет BFile.Line[CSepAFileInfo.L_DEBITACC_EXT] = (DebitAcc.Length > 14 ? DebitAcc : ""); // char[ 20]; // Расширенный Дебет-счет BFile.Line[CSepAFileInfo.L_DEBITIBAN] = Data_Line["DebitIBAN"].Trim(); // char[ 34]; // Дебет-IBAN BFile.Line[CSepAFileInfo.L_OKPO1] = Data_Line["DebitState"].Trim(); // char[ 14]; // Идент.код клиента А BFile.Line[CSepAFileInfo.L_DEBITNAME] = Data_Line["DebitName"].Trim().Replace("?", "i"); // char[ 38]; // Наименование дебет-счета BFile.Line[CSepAFileInfo.L_CREDITMFO] = Data_Line["CreditMfo"].Trim(); // char[ 9]; // Кредит-МФО BFile.Line[CSepAFileInfo.L_CREDITACC] = CreditAcc; // char[ 14]; // Кредит счет BFile.Line[CSepAFileInfo.L_CREDITACC_EXT] = (CreditAcc.Length > 14 ? CreditAcc : ""); // char[ 20]; // Расширенный Кредит счет BFile.Line[CSepAFileInfo.L_OKPO2] = Data_Line["CreditState"].Trim(); // char[ 14]; // Идент.код клиента Б BFile.Line[CSepAFileInfo.L_CREDITIBAN] = Data_Line["CreditIBAN"].Trim(); // char[ 34]; // Кредит-IBAN BFile.Line[CSepAFileInfo.L_CREDITNAME] = Data_Line["CreditName"].Trim().Replace("?", "i"); // char[ 38]; // Наименование кредит-счета BFile.Line[CSepAFileInfo.L_FLAG] = "1"; // char[ 1]; // Флаг `дебет/кредит` BFile.Line[CSepAFileInfo.L_SUMA] = Data_Line["Cents"].Trim(); // char[ 16]; // Сумма в копейках BFile.Line[CSepAFileInfo.L_DTYPE] = "6"; // char[ 2]; // Вид документа BFile.Line[CSepAFileInfo.L_NDOC] = Data_Line["Code"].Trim(); // char[ 10]; // Номер документа BFile.Line[CSepAFileInfo.L_CURRENCY] = Data_Line["CurrencyId"].Trim(); // char[ 3]; // Валюта BFile.Line[CSepAFileInfo.L_DATE1] = CCommon.DtoC(CCommon.CInt32(Data_Line["DayDate"].Trim())).Substring(2, 6); // char[ 6]; Дата платежа BFile.Line[CSepAFileInfo.L_DATE2] = CCommon.DtoC(CCommon.CInt32(Data_Line["OrgDate"].Trim())).Substring(2, 6); // char[ 6]; Дата пуступления документа BFile.Line[CSepAFileInfo.L_PURPOSE] = Data_Line["Purpose"].Trim().Replace("?", "i"); // char[160]; // Назначение платежа BFile.Line[CSepAFileInfo.L_SYMBOL] = Data_Line["Ctrls"].Trim(); // char[ 3]; // Кассовый символ BFile.Line[CSepAFileInfo.L_ID] = Data_Line["TransferId"].Trim(); // char[ 9]; // Идентификатор документа BFile.Line[CSepAFileInfo.L_DES] = Md5.GetHash(BFile.GetFullLine().Substring(0, 444)); // char[ 64]; // ЕЦП BFile.Line[CSepAFileInfo.L_CRLF] = CAbc.CRLF; // char[ 2]; // Символ `конец строки` if (!BFile.WriteLine()) { Data_Header.Close(); Data_Line.Close(); BFile.Close(); return(false); } } } BFile.Close(); } } Data_Line.Close(); } Data_Header.Close(); return(true); }
public static bool WriteVFiles(int DayDate, string DestinationFolder, int VMode) { CSepVWriter A = new CSepVWriter(); string File_Name = "!" + (VMode == 0 ? "V" : "W") + "UUIA" + CCommon.StrY(CCommon.Month(DayDate), 1) + CCommon.StrY(CCommon.Day(DayDate), 1) + "." + CCommon.Right("0" + CCommon.Hour(CCommon.Clock()), 2) + CCommon.StrY(CCommon.Minute(CCommon.Clock()) >> 1, 1); if (!A.Create(DestinationFolder + "\\" + File_Name, CAbc.CHARSET_DOS)) { return(false); } CRecordSet Data = new CRecordSet(Connection1); if (Data.Open("exec dbo.pMega_OpenGate_Report;3 @TaskCode='ErcGate', @DateFrom = " + DayDate.ToString() + " , @Mode = " + VMode.ToString())) { if (!Data.Read()) { A.Head[CSepVFileInfo.H_EMPTYSTR] = ""; // char[100] // Пеpвые 100 - пpобелы A.Head[CSepVFileInfo.H_CRLF1] = CAbc.CRLF; // char[ 2]; // Символ концец строки A.Head[CSepVFileInfo.H_FILENAME] = CCommon.Left(File_Name.Trim(), 12); // char[ 12]; // Наименование файла A.Head[CSepVFileInfo.H_DATE] = Now_Date_Str; // char[ 6]; // Дата создания файла A.Head[CSepVFileInfo.H_TIME] = Now_Time_Str; // char[ 4]; // Дата создания файла A.Head[CSepVFileInfo.H_STRCOUNT] = "0"; // char[ 6]; // Количество ИС в файле A.Head[CSepVFileInfo.H_TOTALDEBET] = "0"; // char[ 16]; // Сумма дебета по файлу A.Head[CSepVFileInfo.H_TOTALCREDIT] = "0"; // char[ 16]; // Сумма кpедита по файлу A.Head[CSepVFileInfo.H_EMPTYSTR2] = ""; // char[ 64]; // Пустое пространство A.Head[CSepVFileInfo.H_CRLF2] = CAbc.CRLF; // char[ 2]; // Символ конец строки if (!A.WriteHeader()) { Data.Close(); A.Close(); return(false); } } else { A.Head[CSepVFileInfo.H_EMPTYSTR] = ""; // char[100] // Пеpвые 100 - пpобелы A.Head[CSepVFileInfo.H_CRLF1] = CAbc.CRLF; // char[ 2]; // Символ концец строки A.Head[CSepVFileInfo.H_FILENAME] = CCommon.Left(File_Name.Trim(), 12); // char[ 12]; // Наименование файла A.Head[CSepVFileInfo.H_DATE] = Now_Date_Str; // char[ 6]; // Дата создания файла A.Head[CSepVFileInfo.H_TIME] = Now_Time_Str; // char[ 4]; // Дата создания файла A.Head[CSepVFileInfo.H_STRCOUNT] = Data["TotalLines"].Trim(); // char[ 6]; // Количество ИС в файле A.Head[CSepVFileInfo.H_TOTALDEBET] = "0"; // char[ 16]; // Сумма дебета по файлу A.Head[CSepVFileInfo.H_TOTALCREDIT] = Data["TotalCents"].Trim(); // char[ 16]; // Сумма кpедита по файлу A.Head[CSepVFileInfo.H_EMPTYSTR2] = ""; // char[ 64]; // Пустое пространство A.Head[CSepVFileInfo.H_CRLF2] = CAbc.CRLF; // char[ 2]; // Символ конец строки if (!A.WriteHeader()) { Data.Close(); A.Close(); return(false); } do { A.Line[CSepVFileInfo.L_DEBITMFO] = Data["SourceCode"].Trim(); // char[ 9]; // Дебет-МФО A.Line[CSepVFileInfo.L_DEBITACC] = Data["DebitMoniker"].Trim(); // char[ 14]; // Дебет-счет A.Line[CSepVFileInfo.L_CREDITMFO] = Data["TargetCode"].Trim(); // char[ 9]; // Кредит-МФО A.Line[CSepVFileInfo.L_CREDITACC] = Data["CreditMoniker"].Trim(); // char[ 14]; // Кредит счет A.Line[CSepVFileInfo.L_FLAG] = "1"; // char[ 1]; // Флаг `дебет/кредит` A.Line[CSepVFileInfo.L_SUMA] = Data["CrncyCents"].Trim(); // char[ 16]; // Сумма в копейках A.Line[CSepVFileInfo.L_DTYPE] = Data["Kind"].Trim(); // char[ 2]; // Вид документа A.Line[CSepVFileInfo.L_NDOC] = Data["DocNum"].Trim(); // char[ 10]; // Номер документа A.Line[CSepVFileInfo.L_CURRENCY] = Data["CurrencyId"].Trim(); // char[ 3]; // Валюта A.Line[CSepVFileInfo.L_DATE1] = CCommon.DtoC(CCommon.CInt32(Data["DayDate"].Trim())).Substring(2, 6); // char[ 6]; // Дата платежа A.Line[CSepVFileInfo.L_ID] = Data["Id"].Trim(); // char[ 9]; // Идентификатор документа A.Line[CSepVFileInfo.L_FILENAME1] = Data["FileName"].Trim(); // char[ 12]; // Имя файла N 1 A.Line[CSepVFileInfo.L_LINENUM1] = Data["LineNum"].Trim(); // char[ 6]; // Номер строки в файле N 1 A.Line[CSepVFileInfo.L_FILENAME2] = Data["FileName"].Trim(); // char[ 12]; // Имя файла N 2 A.Line[CSepVFileInfo.L_LINENUM2] = Data["LineNum"].Trim(); // char[ 6]; // Номер строки в файле N 2 A.Line[CSepVFileInfo.L_STATUS] = (((CCommon.CInt32(Data["ProcessFlag"].Trim()) & 3) == 3) ? "Y" : "N"); // char[ 1]; // Флаг квитовки платежа A.Line[CSepVFileInfo.L_TIME] = Now_Time_Str; // char[ 4]; // Время A.Line[CSepVFileInfo.L_NOL1] = "0"; // char[ 1]; // A.Line[CSepVFileInfo.L_NOL2] = "0"; // char[ 1]; // A.Line[CSepVFileInfo.L_CRLF] = CAbc.CRLF; // char[ 2]; // Символы конца строки if (!A.WriteLine()) { Data.Close(); A.Close(); return(false); } } while (Data.Read()); } } Data.Close(); A.Close(); return(true); }