}//FOLD01 // --------------------------------------------------------------- // Получить имя файла с помощью графической панели открытия файла static string SelectFileNameGUI( string SettingsPath ) {//fold01 string Result = CAbc.EMPTY; string SettingsFileName= null; if ( SettingsPath != null ) if ( SettingsPath.Trim().Length > 0 ) { SettingsFileName = SettingsPath.Trim() + "\\" + CCommon.GetUserName() + ".ldr"; if ( CCommon.FileExists( SettingsFileName ) ) Result = CCommon.LoadText( SettingsFileName , CAbc.CHARSET_WINDOWS ); if ( Result == null ) Result = CAbc.EMPTY; } Result = Result.Trim(); Result = __.OpenFileBox( "Выберите файл для обработки" , Result , "ведомости пенс.фонда|0*.0*" ); if ( Result == null ) return CAbc.EMPTY; Result = Result.Trim(); if ( __.IsEmpty( Result ) ) return Result; if ( SettingsFileName != null ) CCommon.SaveText( SettingsFileName , __.GetDirName( Result ) , CAbc.CHARSET_WINDOWS ) ; return Result; }//FOLD01
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Запуск EXE-файла в том же каталоге, что и данная программа static bool StartExeCopy(string SrcExeName, string Params) { if ((SrcExeName == null) || (Params == null)) { return(false); } SrcExeName = SrcExeName.Trim(); Params = Params.Trim(); if (SrcExeName == "") { return(false); } string Path = CCommon.GetTaskDir() + "\\"; string Mask = SrcExeName.Substring(0, SrcExeName.Length - 3) + "*"; string ExeName = Path + CCommon.GetFileName(SrcExeName); if (!CCommon.FileExists(ExeName)) { foreach (string FileName in CCommon.GetFileList(Mask)) { if (!CCommon.CopyFile(FileName, Path + CCommon.GetFileName(FileName))) { return(false); } } } if (!CCommon.FileExists(ExeName)) { return(false); } return(CCommon.Run(ExeName, Params)); }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Получить имя файла с помощью графической панели открытия файла static string SelectFileNameGUI(string SettingsPath, string DestPath) { string TmpS = CAbc.EMPTY; string Result = CAbc.EMPTY; string SettingsFileName = null; if (SettingsPath != null) { if (SettingsPath.Trim().Length > 0) { SettingsFileName = SettingsPath.Trim() + "\\" + CCommon.GetUserName() + ".ldr"; if (CCommon.FileExists(SettingsFileName)) { TmpS = CCommon.LoadText(SettingsFileName, CAbc.CHARSET_WINDOWS); } if (TmpS == null) { TmpS = CAbc.EMPTY; } } } TmpS = TmpS.Trim(); TmpS = CCommon.OpenFileBox( "Укажите А-файл для загрузки" , TmpS , "А-файлы (?A*.*)|?a*.*" ); if (TmpS == null) { return(Result); } TmpS = TmpS.Trim(); if (TmpS.Length == 0) { return(Result); } if (SettingsFileName != null) { CCommon.SaveText(SettingsFileName, CCommon.GetDirName(TmpS), CAbc.CHARSET_WINDOWS); } Result = DestPath.Trim() + "\\" + CCommon.GetFileName(TmpS); if (CCommon.FileExists(Result)) { CCommon.Print("", "Выбранный файл уже существует в целевом каталоге : ", Result, "", "Нажмите ENTER для выхода..."); CCommon.Input(); Result = CAbc.EMPTY; } else if (!CCommon.CopyFile(TmpS, Result)) { CCommon.Print("Ошибка копирования файла в целевой каталог : ", Result, "", "Нажмите ENTER для выхода..."); CCommon.Input(); Result = CAbc.EMPTY; } return(Result); }
} //FOLD00 // ------------------------------------------------------------- // Получить имя файла с помощью графической панели открытия файла static string SelectFileNameGUI(string SettingsPath) //fold00 { string Result = CAbc.EMPTY; string SettingsFileName = null; if (SettingsPath != null) { if (SettingsPath.Trim().Length > 0) { SettingsFileName = SettingsPath.Trim() + "\\" + CCommon.GetUserName() + ".ldr"; if (CCommon.FileExists(SettingsFileName)) { Result = CCommon.LoadText(SettingsFileName, CAbc.CHARSET_WINDOWS); } if (Result == null) { Result = CAbc.EMPTY; } } } Result = Result.Trim(); Result = __.OpenFileBox( "Укажите файл для обработки" , Result , "з/п ведомости (*.dif,*.dbf)|*.d?f" ); if (Result == null) { return(CAbc.EMPTY); } Result = Result.Trim(); if (__.IsEmpty(Result)) { return(Result); } if (SettingsFileName != null) { CCommon.SaveText(SettingsFileName, __.GetDirName(Result), CAbc.CHARSET_WINDOWS); } return(Result); } //FOLD00
//----------------------------------------------------------------------------------------- // основная программа 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 static void Main() { Err.LogToConsole(); int ErcDate = 0; bool UseErcRobot = false; // подключаться ли к серверу под логином ErcRobot string FileName = CAbc.EMPTY; const string ROBOT_LOGIN = "******"; const string ROBOT_PWD = "35162987"; const string TASK_CODE = "OpenGate"; string StatDir = null; string DataBase = null; string ServerName = null; string ScroogeDir = null; string SettingsDir = null; string ConnectionString = null; if (System.Console.BufferHeight > 50) { System.Console.WindowHeight = 25; System.Console.BufferHeight = 25; } System.Console.Title = "Загрузка в `Скрудж` платежей из А-файлов "; System.Console.BackgroundColor = 0; System.Console.Clear(); CCommon.Print("", " Загрузка в `Скрудж` платежей из А-файлов. Версия 3.03 от 29.08.2019г."); if (CCommon.ParamCount() < 2) { CCommon.Print(" В строке запуска нужно указатьть один из режимов :"); CCommon.Print(" /A диалоговый режим, для загрузки файлов для универсального шлюза ;"); CCommon.Print(" /С проверка одного файла, имя которого задано далее в строке ;"); CCommon.Print(" /D `браковка` заготовок из файла, имя которого задано далее в строке ;"); CCommon.Print(" /S пакетный режим , для загрузки файлов от САКР ( маска !A??_*.* ) ;"); CCommon.Print(" /U диалоговый режим, для загрузки файлов от ЕРЦ ( кроме !A??_*.* ) ;"); CCommon.Print(" /Z диалоговый режим, для загрузки файлов зарплаты( маска !A*.Z?? ) ."); CCommon.Print("", " /R дополнительная опция - подключаться под пользователем ErcRobot ."); return; } if (CCommon.ParamCount() == 0) { return; } for (int i = 1; i < CCommon.ParamCount(); i++) { if (CAbc.ParamStr[i].Trim().ToUpper() == "/R") { UseErcRobot = true; System.Console.Title = System.Console.Title + " * "; } else if (CAbc.ParamStr[i].Trim().Substring(0, 1) == "/") { WorkMode = CCommon.Upper(CAbc.ParamStr[i]).Trim(); } else { FileName = CAbc.ParamStr[i].Trim(); } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Вычитываем настройки "Скрудж-2" ErcAFile = new CErcAFile(); ErcEFile = new CErcEFile(); Scrooge2Config = new CScrooge2Config(); if (!Scrooge2Config.IsValid) { CCommon.Print(Scrooge2Config.ErrInfo); return; } ScroogeDir = (string)Scrooge2Config["Root"]; SettingsDir = (string)Scrooge2Config["Common"]; ServerName = (string)Scrooge2Config["Server"]; DataBase = (string)Scrooge2Config["DataBase"]; if (ScroogeDir == null) { CCommon.Print(" Не найдена переменная `Root` в настройках `Скрудж-2` "); return; } if (ServerName == null) { CCommon.Print(" Не найдена переменная `Server` в настройках `Скрудж-2` "); return; } if (DataBase == null) { CCommon.Print(" Не найдена переменная `Database` в настройках `Скрудж-2` "); return; } ScroogeDir = ScroogeDir.Trim(); if (SettingsDir != null) { SettingsDir = ScroogeDir + "\\" + SettingsDir; } ServerName = ServerName.Trim(); DataBase = DataBase.Trim(); CCommon.Print(" Беру настройки `Скрудж-2` здесь : " + ScroogeDir); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Подключаемся к базе данных ConnectionString = "Server=" + ServerName + ";Database=" + DataBase; if (UseErcRobot) { ConnectionString += ";UID=" + ROBOT_LOGIN + ";PWD=" + ROBOT_PWD + ";"; } else { ConnectionString += ";Integrated Security=TRUE;"; } Connection = new CConnection(ConnectionString); if (Connection.IsOpen()) { /* CCommon.Print(" Сервер : " + ServerName ) */; } else { CCommon.Print(" Ошибка подключения к серверу !"); return; } Command = new CCommand(Connection); if (Command.IsOpen()) { /* CCommon.Print(" База данных : " + DataBase ) */; } else { CCommon.Print(" Ошибка подключения к базе данных !"); return; } System.Console.Title = System.Console.Title + " | " + ServerName + "." + DataBase; // - - - - - - - - - - - - - - - - - // считываем настройки шлюза в ЕРЦ AppSettings = new CAppSettings(Connection); ErcDate = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;7 "), (int)0); if (ErcDate < 1) { CCommon.Print(" Ошибка определения даты текущего рабочего дня. "); return; } switch (WorkMode) { case WorkModes.CHECK: { SeanceNum = 1; ErcConfig = new COpenwayConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["InputDir"]; break; } case WorkModes.DISABLE: { SeanceNum = 1; ErcConfig = new COpenwayConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["InputDir"]; break; } case WorkModes.SALARY: { SeanceNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='ErcGate',@ParamCode='NumSeance' "), (int)0); ErcConfig = new CSalaryConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["SalaryDir"] + "\\IN\\"; break; } case WorkModes.OPENGATE: { SeanceNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='OpenGate',@ParamCode='NumSeance' "), (int)0); ErcConfig = new COpenwayConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["InputDir"]; break; } case WorkModes.SAKR: case WorkModes.ERC: { SeanceNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='ErcGate',@ParamCode='NumSeance' "), (int)0); ErcConfig = new CErcConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["InputDir"]; break; } default: { CCommon.Print("", "Ошибка в строке параметров программы ! "); return; break; } } if (!ErcConfig.IsValid()) { CCommon.Print(" Ошибка чтения настроек программы из " + ErcConfig.Config_FileName()); System.Console.WriteLine(ErcConfig.ErrInfo()); return; } if (SeanceNum < 1) { CCommon.Print(" Ошибка определения номера сеанса "); return; } TodayDir = (string)ErcConfig.TodayDir(); TmpDir = (string)ErcConfig.TmpDir(); StatDir = (string)ErcConfig.StatDir(); if ((TodayDir == null) || (InputDir == null)) { CCommon.Print(" Ошибка чтения настроек программы из " + ErcConfig.Config_FileName()); return; } TodayDir = TodayDir.Trim(); InputDir = InputDir.Trim(); if ((TodayDir == "") || (InputDir == "")) { CCommon.Print(" Ошибка чтения настроек программы из " + ErcConfig.Config_FileName()); return; } if (!CCommon.DirExists(StatDir)) { CCommon.MkDir(StatDir); } if (!CCommon.SaveText(StatDir + "\\" + "test.dat", "test.dat", CAbc.CHARSET_DOS)) { CCommon.Print(" Ошибка записи в каталог " + StatDir); return; } CCommon.DeleteFile(StatDir + "\\" + "test.dat"); LogFileName = ErcConfig.LogDir() + "\\" + ((WorkMode == WorkModes.CHECK) ? "W" + CCommon.Hour(CCommon.Now()).ToString("00") + CCommon.Minute(CCommon.Now()).ToString("00") + CCommon.Second(CCommon.Now()).ToString("00") : "SEANS" + SeanceNum.ToString("000") ) + ".TXT"; CCommon.Print(" Беру настройки шлюза здесь : " + ErcConfig.Config_FileName()); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // основной блог работы программы switch (WorkMode) { // - - - - - - - - - - - - - - - - - - - - - - - // Загружаем сторонние платежи case WorkModes.SAKR: { foreach (string FName in CCommon.GetFileList(InputDir + "!A??_*.*")) { if (FName != null) { if (FileName.Trim() != "") { ProcessAFile(Command, FileName, false); } } } // Загружаем допреквизиты foreach (string FName in CCommon.GetFileList(InputDir + "!E*.*")) { if (FName != null) { if (FName.Trim() != "") { if (ErcEFile.Load(Command, FileName)) { CCommon.MoveFile(FileName, TodayDir + CAbc.SLASH + CCommon.GetFileName(FileName)); } } } } // Завершающие действия CCommon.Print(" Пересчет промежуточных данных ..."); Command.Execute("exec dbo.pMega_OpenGate_PalvisBind "); break; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Загружаем коммунальные платежи из файла, который выбирает пользователь case WorkModes.ERC: { FileName = SelectFileName(InputDir + "!A*.*"); while (FileName != "") { if (ErcAFile.UserAccepted(FileName)) { ProcessAFile(Command, FileName, true); } FileName = SelectFileName(InputDir + "!A*.*"); } break; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Загружаем зарплатные платежи из файла, который выбирает пользователь case WorkModes.SALARY: { FileName = SelectFileName(InputDir + "!A*.Z*"); while (FileName != "") { if (ErcAFile.UserAccepted(FileName)) { ProcessAFile(Command, FileName, true); } FileName = SelectFileName(InputDir + "!A*.*"); } break; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Загружаем платежи по универсальному шлюзу из файла, который выбирает пользователь case WorkModes.OPENGATE: { if (FileName != "") { if (CCommon.FileExists(FileName)) { if (ErcAFile.UserAccepted(FileName)) { ProcessAFile(Command, FileName, true); } } } else { FileName = SelectFileNameGUI(SettingsDir, InputDir); if (FileName != "") { if (ErcAFile.UserAccepted(FileName)) { ProcessAFile(Command, FileName, true); if (CCommon.FileExists(FileName)) { CCommon.DeleteFile(FileName); } } } } break; } // - - - - - - - - - - - - // Только проверка файла case WorkModes.CHECK: { string AboutError = ""; if (FileName.Length > 0) { if (!CCommon.FileExists(FileName)) { CCommon.Print("", "Не найден файл " + FileName); FileName = ""; } } if (FileName != "") { Err.LogToConsole(); AboutError = ErcAFile.Check(Command, FileName); CConsole.Clear(); if (AboutError == "") { CCommon.Print("", " " + ErcAFile.String_Count.ToString() + " строк на общую суммму " + CCommon.StrN(ErcAFile.Total_Credit, 11).Replace(",", "."), "" , " Ошибок не найдено."); } else { CCommon.AppendText(LogFileName, CCommon.Now() + " " + CCommon.Upper(CCommon.GetUserName()) + " проверяет файл " + CCommon.GetFileName(FileName) + CAbc.CRLF + CAbc.CRLF + AboutError + CAbc.CRLF, CAbc.CHARSET_WINDOWS); CCommon.Print(AboutError); } } else { FileName = SelectFileNameGUI(SettingsDir, InputDir); if (FileName != "") { if (ErcAFile.UserAccepted(FileName)) { AboutError = ErcAFile.Check(Command, FileName); CConsole.Clear(); if (AboutError == "") { CCommon.Print("", " " + ErcAFile.String_Count.ToString() + " строк на общую суммму " + CCommon.StrN(ErcAFile.Total_Credit, 11).Replace(",", "."), "" , " Ошибок не найдено."); } else { CCommon.AppendText(LogFileName, CCommon.Now() + " " + CCommon.Upper(CCommon.GetUserName()) + " проверяет файл " + CCommon.GetFileName(FileName) + CAbc.CRLF + CAbc.CRLF + AboutError + CAbc.CRLF, CAbc.CHARSET_WINDOWS); CCommon.Print(AboutError); } } if (CCommon.FileExists(FileName)) { CCommon.DeleteFile(FileName); } } } break; } // - - - - - - - - - - - - - - - - - - // `запретить` заготовки из А-файла case WorkModes.DISABLE: { CConsole.Clear(); Err.LogToConsole(); if (CCommon.ParamCount() > 2) { FileName = CAbc.ParamStr[2].Trim(); } if (FileName == "") { CCommon.Print("", "Не задано имя файла !"); } else { FileName = CCommon.GetFileName(FileName); if (Command.Execute("exec dbo.pMega_OpenGate_Disable @TaskCode='OpenGate',@FileName='" + FileName + "'")) { CCommon.Print("", "заготовки из файла " + FileName + " запрещены ."); } else { CCommon.Print("", "Ошибка выполнения команды на сервере !"); } } break; } } Command.Close(); Connection.Close(); }
// - - - - - - - - - - - - - - - - - - - - - - - - - - static void ProcessAFile(CCommand Command, string FileName, bool IsCheckNeeded) { string ShortFileName = null; string BranchCode = null; string TmpFileName = null; string AboutError = null; bool Result = false; byte SavedColor = CConsole.BoxColor; if (FileName == null) { return; } if (FileName.Trim() == "") { return; } ShortFileName = CCommon.GetFileName(FileName); CCommon.AppendText(LogFileName, CCommon.Now() + " " + CCommon.Upper(CCommon.GetUserName()) + " загружает файл " + ShortFileName + CAbc.CRLF, CAbc.CHARSET_WINDOWS); if (ShortFileName.IndexOf("_") < 0) { BranchCode = ""; } else { BranchCode = ShortFileName.Substring(2, 2); } TmpFileName = TodayDir + CAbc.SLASH + ShortFileName; if (!CCommon.FileExists(TmpFileName)) { CCommon.CopyFile(FileName, TmpFileName); } if (!CCommon.FileExists(TmpFileName)) { return; } TmpFileName = TmpDir + CAbc.SLASH + CCommon.Right("0" + CCommon.Hour(CCommon.Clock()).ToString(), 2) + CCommon.Right("0" + CCommon.Minute(CCommon.Clock()).ToString(), 2) + CCommon.Right("0" + CCommon.Second(CCommon.Clock()).ToString(), 2); if (!CCommon.DirExists(TmpFileName)) { CCommon.MkDir(TmpFileName); } TmpFileName = TmpFileName + CAbc.SLASH + ShortFileName; if (CCommon.FileExists(TmpFileName)) { CCommon.DeleteFile(TmpFileName); } if (CCommon.FileExists(TmpFileName)) { CConsole.GetBoxChoice("", "Ошибка при удалении файла ", TmpFileName, "", " Для выхода нажмите Esc."); return; } CCommon.CopyFile(FileName, TmpFileName); if (!CCommon.FileExists(TmpFileName)) { CConsole.GetBoxChoice("", "Ошибка при создании файла ", TmpFileName, "", " Для выхода нажмите Esc."); return; } Err.LogTo(LogFileName); CCommon.DeleteFile(FileName); CConsole.BoxColor = SavedColor; if (IsCheckNeeded) { AboutError = ErcAFile.Check(Command, TmpFileName); CConsole.Clear(); if (AboutError != null) { if (AboutError.Trim() != "") { CCommon.AppendText(LogFileName, AboutError + CAbc.CRLF, CAbc.CHARSET_WINDOWS); CCommon.Print(AboutError); CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; if (!CConsole.GetBoxChoice("Внимание ! При проверке " + ShortFileName + " обнаружены ошибки !" , "", "Для отмены загрузки нажмите Esc , для продолжения - Enter" ) ) { CCommon.CopyFile(TmpFileName, FileName); CCommon.Print(AboutError); CConsole.BoxColor = SavedColor; return; } } } } CConsole.BoxColor = SavedColor; if (WorkMode == WorkModes.OPENGATE) { Result = ErcAFile.Load(Command, TmpFileName, BranchCode, "OpenGate"); if (Result) { // добавление в PayRoll информации о файле CConsole.BoxColor = SavedColor; CConsole.Clear(); CConsole.ShowBox("", " Подождите...", ""); Command.Execute(" exec pMega_OpenGate_PayRoll;2 @FileName='" + CCommon.GetFileName(TmpFileName) + "'"); } } else { Result = ErcAFile.Load(Command, TmpFileName, BranchCode, "ErcGate"); } if (Result) { CCommon.AppendText(LogFileName, CCommon.Now() + " загрузка закончена." + CAbc.CRLF, CAbc.CHARSET_WINDOWS); } else { CCommon.CopyFile(TmpFileName, FileName); CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; CConsole.GetBoxChoice("", " При загрузке " + ShortFileName + " возникли ошибки !", ""); } CConsole.BoxColor = SavedColor; CConsole.Clear(); Err.LogToConsole(); }