// - - - - - - - - - - - - - - - - - - - - - - - - - // Запуск команды на Sql-сервере static bool StartSqlCmd(string CmdText) { if (CmdText == null) { return(false); } if (CmdText.Trim() == "") { return(false); } CConsole.ShowBox("", "Выполнение команды на сервере", ""); Connection = new CConnection(ConnectionString); Command = new CCommand(Connection); Command.Timeout = 599; bool Result = Command.Execute(CmdText); Command.Close(); Connection.Close(); CConsole.Clear(); CCommon.Print(CAbc.EMPTY, "Для продолжения нажмите Enter."); CConsole.ClearKeyboard(); CConsole.Flash(); CConsole.ReadChar(); return(Result); }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Вычитка истории вполнения пунктов открытия/закрытия дня static bool SaveHistory(int Mode, int Choice) { Connection = new CConnection(ConnectionString); Command = new CCommand(Connection); bool Result = Command.Execute(" exec dbo.Mega_Day_Close;11 @DayDate=" + DayDate.ToString() + " , @FlagCode= " + Choice.ToString() + " , @Mode= " + Mode.ToString()); Command.Close(); Connection.Close(); return(Result); }
//FOLD00 public void Close() { if (Conn1 != null) { Conn1.Close(); Conn1 = null; } if (Conn2 != null) { Conn2.Close(); Conn2 = null; } }
// - - - - - - - - - - - - - - - - - - - - - - - - // Запуск выборки на Sql-сервере static bool StartSqlRS(string CmdText) { if (CmdText == null) { return(false); } if (CmdText.Trim() == "") { return(false); } CConsole.ShowBox("", "Выполнение команды на сервере", ""); Connection = new CConnection(ConnectionString); RecordSet = new CRecordSet(Connection); bool Result; RecordSet.Timeout = 599; if (RecordSet.Open(CmdText)) { CConsole.Clear(); int FieldCount = RecordSet.FieldCount(); while (RecordSet.Read()) { for (int Index = 0; Index < FieldCount; Index++) { CCommon.Print(RecordSet[Index]); } } } else { CConsole.Clear(); } RecordSet.Close(); Connection.Close(); CCommon.Print(CAbc.EMPTY, "Для продолжения нажмите Enter."); CConsole.ClearKeyboard(); CConsole.Flash(); CConsole.ReadChar(); return(true); }
// ------------------------------------------------------ static void Chk_Misc(int PrevDate, int DayDate) { int Kind = 0; int OldKind = 0; money Acc1200Main = 0; //money Acc1200Brc = 0; money AccVFile = 0; string BugInfo = CAbc.EMPTY; string BugName = CAbc.EMPTY; CTextWriter TextWriter = new CTextWriter(); CConnection Connection2 = null; CRecordSet RecordSet2 = null; string DELIMITER1 = "--------------------------------+--------------------------------------------" + CAbc.CRLF; string DELIMITER2 = "-----------+--------------+-----------------------" + CAbc.CRLF; string DELIMITER3 = "--------------------------------+-------------+------------------+------------------+-------------------------" + CAbc.CRLF; string DELIMITER4 = "--------------+--------------+--------------------+--------------------+--------------------------------------" + CAbc.CRLF; string DELIMITER5 = "---------------------------------------------------+------------------" + CAbc.CRLF; string DELIMITER6 = "...................................................." + CAbc.CRLF; string ReportFileName = ScroogeOut + "\\" + __.StrD(DayDate, 10, 10).Replace("/", "").Replace(".", ""); string VFileName = __.StrD(PrevDate, 8, 8).Substring(6, 2) + __.StrD(PrevDate, 8, 8).Substring(3, 2) + __.StrD(PrevDate, 8, 8).Substring(0, 2); TextWriter.Create(ReportFileName + ".err", CAbc.CHARSET_DOS); TextWriter.Add(__.Now().ToString() + CAbc.CRLF); TextWriter.Close(); // ------------------------------------------------------------- Connection = new CConnection(ConnectionString); if (!Connection.IsOpen()) { __.Print(" Ошибка подключения к серверу !"); return; } LookForSertificates(); RecordSet = new CRecordSet(Connection); RecordSet.Timeout = 599; // ------------------------------------------------------------- if (!MainBank) { goto CHECK_MISC; } // ------------------------------------------------------------- if (RecordSet.Open(" exec dbo.Mega_Day_Open;7 ")) { if (RecordSet.Read()) { VFileName = RecordSet[0].Trim() + "\\" + VFileName; } } VFileName += "\\$V*.G*"; string[] VFiles = __.GetFileList(VFileName); string Tmps = CAbc.EMPTY; VFileName = CAbc.EMPTY; if (VFiles != null) { if (VFiles.Length > 0) { VFileName = VFiles[VFiles.Length - 1]; } } if (VFileName != CAbc.EMPTY) { CVFileReader VFileReader = new CVFileReader(); if (VFileReader.Open(VFileName, CAbc.CHARSET_DOS)) { if (VFileReader.Read()) { AccVFile = __.CCur(VFileReader.Head().Substring(264, 16)) / 100; } } VFileReader.Close(); } // ------------------------------------------------------------- __.Print(" Результаты проверки сводного баланса - в " + ReportFileName + ".err"); if (RecordSet.Open(" exec dbo.Mega_Check_Balance;2 @FromDate = " + PrevDate.ToString() + " , @ToDate = " + PrevDate.ToString())) { if (RecordSet.Read()) { TextWriter.OpenForAppend(ReportFileName + ".err", CAbc.CHARSET_DOS); TextWriter.Add(CAbc.CRLF, CAbc.CRLF, " ОШИБКИ ПРИ ПРОВЕРКЕ СВОДНОГО БАЛАНСА " + CAbc.CRLF); TextWriter.Add(DELIMITER6, CAbc.CRLF); do { TextWriter.Add(RecordSet[0], CAbc.CRLF); }while (RecordSet.Read()); TextWriter.Add(DELIMITER6, CAbc.CRLF, CAbc.CRLF); TextWriter.Close(); } } // ------------------------------------------------------------- __.Print(" Сверяю корсчета на ГК и БРЦ "); if (RecordSet.Open(" exec Mega_Day_Close;4 " + PrevDate.ToString())) { if (RecordSet.Read()) { Acc1200Main = __.CCur(RecordSet[0]); } } /* Сверка корсчета с БРЦ * Connection2 = new CConnection( BrcConnStr ); * if ( Connection.IsOpen() ) { * RecordSet2 = new CRecordSet( Connection2 ); * if ( RecordSet2.Open(" exec Mega_Day_Close;4 " + PrevDate.ToString() ) ) * if ( RecordSet2.Read() ) * Acc1200Brc = __.CCur( RecordSet2[0] ); * if ( Acc1200Brc == 0 ) * __.Print(" Ошибка вычитки корсчета на БРЦ "); * else * if ( Acc1200Brc != Acc1200Main ) * CConsole.GetBoxChoice("","Неравенство корсчетов на ГК и БРЦ !",""); * RecordSet2.Close(); * } * else * __.Print(" Ошибка подключения к БРЦ !"); * Connection2.Close(); */ TextWriter.OpenForAppend(ReportFileName + ".err", CAbc.CHARSET_DOS); TextWriter.Add(CAbc.CRLF + "..... Сверка корсчетов ....." + CAbc.CRLF); TextWriter.Add("Корсчет на конец " + __.StrD(PrevDate, 8, 8) + " ( ГК ) =" + __.StrM(Acc1200Main, 19) + CAbc.CRLF); // TextWriter.Add( "Корсчет на конец " + __.StrD( PrevDate , 8 , 8 ) + " ( БРЦ ) =" + __.StrM( Acc1200Brc , 19 ) + CAbc.CRLF ); if (AccVFile != 0) { TextWriter.Add("Корсчет по последнему V-файлу =" + __.StrM(AccVFile, 19) + CAbc.CRLF); } TextWriter.Add("........................................................." + CAbc.CRLF); TextWriter.Close(); // ------------------------------------------------------------- __.Print(" Вывожу черный список ЕМА в файл " + ReportFileName + ".ema"); if (RecordSet.Open(" exec dbo.Mega_CheckEMA_StopList ")) { if (RecordSet.Read()) { TextWriter.OpenForAppend(ReportFileName + ".ema", CAbc.CHARSET_DOS); TextWriter.Add(CAbc.CRLF + " Клиенты, включеные в черный список ЕМА " + CAbc.CRLF); TextWriter.Add(" По состоянию на " + __.Now().ToString() + CAbc.CRLF); TextWriter.Add(DELIMITER2); TextWriter.Add(" Внутр.код | Идент.код кл.| Имя клиента " + CAbc.CRLF); TextWriter.Add(DELIMITER2); do { TextWriter.Add(__.Left(RecordSet[1], 11)); TextWriter.Add("|"); TextWriter.Add(__.Left(RecordSet[0], 14)); TextWriter.Add("|"); TextWriter.Add(__.Left(__.FixUkrI(RecordSet[2]), 64)); TextWriter.Add(CAbc.CRLF); } while (RecordSet.Read()); TextWriter.Add(DELIMITER2); TextWriter.Close(); } } // ------------------------------------------------------------- CHECK_MISC: __.Print(" Выполняются проверки дня " + __.StrD(PrevDate, 8, 8) + " (Check_Misc) ..."); if (RecordSet.Open(" exec dbo.Mega_Check_Misc " + PrevDate.ToString())) { if (RecordSet.Read()) { TextWriter.OpenForAppend(ReportFileName + ".err", CAbc.CHARSET_DOS); TextWriter.Add(CAbc.CRLF + " Ошибки,обнаруженные при проверке дня " + __.StrD(PrevDate, 8, 8) + CAbc.CRLF); TextWriter.Add(CAbc.CRLF); do { Kind = __.CInt(RecordSet[0]); BugInfo = RecordSet[2]; BugName = __.FixUkrI(RecordSet[3]); if ((OldKind > 0) && (OldKind == Kind)) { BugInfo = CAbc.EMPTY; } else { TextWriter.Add(DELIMITER1); } OldKind = Kind; TextWriter.Add(__.Left(BugInfo, 32)); TextWriter.Add("|"); TextWriter.Add(__.Left(BugName, 44)); TextWriter.Add(CAbc.CRLF); } while (RecordSet.Read()); TextWriter.Add(DELIMITER1); TextWriter.Add(CAbc.CRLF); TextWriter.Close(); } } // ---------------------------------------------------------- __.Print(" Выполняются проверки дня " + __.StrD(PrevDate, 8, 8) + " (Check_Heap) ..."); if (RecordSet.Open(" exec dbo.Mega_Check_Heap " + PrevDate.ToString())) { if (RecordSet.Read()) { TextWriter.OpenForAppend(ReportFileName + ".err", CAbc.CHARSET_DOS); TextWriter.Add(" ...дополнительные проверки... "); TextWriter.Add(CAbc.CRLF); do { Kind = __.CInt(RecordSet[0]); BugInfo = RecordSet[2]; BugName = __.FixUkrI(RecordSet[3]); if ((OldKind > 0) && (OldKind == Kind)) { BugInfo = CAbc.EMPTY; } else { TextWriter.Add(DELIMITER1); } OldKind = Kind; TextWriter.Add(__.Left(BugInfo, 32)); TextWriter.Add("|"); TextWriter.Add(__.Left(BugName, 44)); TextWriter.Add(CAbc.CRLF); } while (RecordSet.Read()); TextWriter.Add(DELIMITER1); TextWriter.Add(CAbc.CRLF); TextWriter.Close(); } } // ---------------------------------------------------------- if (!MainBank) { goto END_OF_PROC; } // ---------------------------------------------------------- __.Print(" Ошибки в настройках регуляных платежей - в " + ReportFileName + ".err"); if (RecordSet.Open(" exec dbo.Mega_Pst_ERC_CheckReport")) { if (RecordSet.Read()) { TextWriter.OpenForAppend(ReportFileName + ".err", CAbc.CHARSET_DOS); TextWriter.Add(CAbc.CRLF + " Ошибки в настройках регуляных платежей " + CAbc.CRLF); TextWriter.Add(DELIMITER3); TextWriter.Add(" Название ошибки | Код клиента | Номер счета | Название клиента " + CAbc.CRLF); TextWriter.Add(DELIMITER3); do { TextWriter.Add(__.Left(RecordSet["ErrorText"], 32)); TextWriter.Add("|"); TextWriter.Add(__.Left(RecordSet["Code"], 12)); TextWriter.Add(" | "); TextWriter.Add(__.Left(RecordSet["Moniker"], 17)); TextWriter.Add("| "); TextWriter.Add(__.FixUkrI(RecordSet["Name"])); TextWriter.Add(CAbc.CRLF); } while (RecordSet.Read()); TextWriter.Add(DELIMITER3); TextWriter.Add(CAbc.CRLF); TextWriter.Close(); } } // -------------------------------------------------------- __.Print(" Ошибки в договорах залогов - в " + ReportFileName + ".err"); if (RecordSet.Open(" exec dbo.Mega_CheckTreatyPawnDate ")) { if (RecordSet.Read()) { TextWriter.OpenForAppend(ReportFileName + ".err", CAbc.CHARSET_DOS); TextWriter.Add(CAbc.CRLF + CAbc.CRLF + " Ошибки в договорах залогов " + CAbc.CRLF); TextWriter.Add(DELIMITER4); TextWriter.Add(" Id договора | Id залога | Номер договора | Номер залога | Название клиента" + CAbc.CRLF); TextWriter.Add(DELIMITER4); do { TextWriter.Add(__.Right(RecordSet[0], 13)); TextWriter.Add(" |"); TextWriter.Add(__.Right(RecordSet[3], 13)); TextWriter.Add(" |"); TextWriter.Add(__.Left(RecordSet[1], 20)); TextWriter.Add("|"); TextWriter.Add(__.Left(RecordSet[4], 20)); TextWriter.Add("|"); TextWriter.Add(__.FixUkrI(RecordSet[2])); TextWriter.Add(CAbc.CRLF); } while (RecordSet.Read()); TextWriter.Add(DELIMITER4); TextWriter.Add(CAbc.CRLF); TextWriter.Close(); } } // -------------------------------------------------------- __.Print(" Ведомость невынесенных на просрочку - в " + ReportFileName + ".err"); if (RecordSet.Open(" exec dbo.Mega_Treaty_Check_Prosroch_Control ")) { if (RecordSet.Read()) { TextWriter.OpenForAppend(ReportFileName + ".err", CAbc.CHARSET_DOS); TextWriter.Add(CAbc.CRLF + " Не вынесенные на просрочку договора " + CAbc.CRLF); TextWriter.Add(DELIMITER5); TextWriter.Add(" Описание ошибки ¦ ID договора " + CAbc.CRLF); TextWriter.Add(DELIMITER5); do { TextWriter.Add(__.Left(RecordSet[0], 51)); TextWriter.Add("| "); TextWriter.Add(__.Right(RecordSet[1], 13)); TextWriter.Add(CAbc.CRLF); } while (RecordSet.Read()); TextWriter.Add(DELIMITER5); TextWriter.Add(CAbc.CRLF); TextWriter.Close(); } } // -------------------------------------------------------- END_OF_PROC: RecordSet.Close(); Connection.Close(); }
static void Main() { const bool DEBUG = false; CParam Param = new CParam(); int Mode = 0; // 1=today, 2=chk_via; 3=chk_misc ; 4=copy for MStat int PrevDate = 0; int DayDate = __.Today(); int NextDate = __.Today() - 1; string LogFileName = CAbc.EMPTY; //string REQUEST_GET_BRC_CONNECTIONSTRING = " select 'Server='+Ltrim(Rtrim([Server]))+';Database='+Ltrim(Rtrim([Base]))+';Integrated Security=TRUE;' from dbo.sv_Branchs with (NoLock) where kind=3"; string REQUEST_GET_BRANCH_KIND = " select BranchKind from dbo.vMega_Common_MyBankInfo with ( NoLock ) "; if (DEBUG) { Mode = 4; } else { switch (Param["MODE"].Trim().ToUpper()) { case "TODAY": { Mode = 1; break; } case "CHK_VIA": { Mode = 2; break; } case "CHK_MISC": { Mode = 3; break; } case "COPY4MSTAT": { Mode = 4; break; } case "CHK_ISCARD": { Chk_ISCard(); return; } default: { Mode = 0; break; } } } if (Param["DAYDATE"].Trim() != CAbc.EMPTY) { if (__.CInt(Param["DAYDATE"].Trim()) > 0) { DayDate = __.CInt(Param["DAYDATE"].Trim()); } } if (Param["NEXTDATE"].Trim() != CAbc.EMPTY) { if (__.CInt(Param["NEXTDATE"].Trim()) > 0) { NextDate = __.CInt(Param["NEXTDATE"].Trim()); } } if (Mode == 0) { __.Print("Не задан режим работы !"); return; } // ------------------------------------------------------- CScrooge2Config Scrooge2Config = new CScrooge2Config(); if (!Scrooge2Config.IsValid) { CCommon.Print(Scrooge2Config.ErrInfo); return; } ScroogeDir = (string)Scrooge2Config["Root"].Trim(); DayOutDir = (string)Scrooge2Config["Output"].Trim(); ScroogeOut = ScroogeDir + "\\" + DayOutDir; ServerName = (string)Scrooge2Config["Server"].Trim(); DataBase = (string)Scrooge2Config["DataBase"].Trim(); if (ScroogeDir == null) { CCommon.Print(" Не найдена переменная `Root` в настройках `Скрудж-2` "); return; } if (ServerName == null) { CCommon.Print(" Не найдена переменная `Server` в настройках `Скрудж-2` "); return; } if (DataBase == null) { CCommon.Print(" Не найдена переменная `Database` в настройках `Скрудж-2` "); return; } CCommon.Print(" Беру настройки `Скрудж-2` здесь : " + ScroogeDir); __.Print(" Сервер : " + ServerName); __.Print(" База данных : " + DataBase + CAbc.CRLF); ConnectionString = "Server=" + ServerName + ";Database=" + DataBase + ";Integrated Security=TRUE;" ; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (DayOutDir != null) { DayOutDir = ScroogeDir + "\\" + DayOutDir.Trim(); if (!CCommon.DirExists(DayOutDir)) { CCommon.MkDir(DayOutDir); } if (CCommon.DirExists(DayOutDir)) { DayOutDir += "\\" + CCommon.StrD(DayDate, 8, 8).Replace("/", "").Replace(".", ""); if (!CCommon.DirExists(DayOutDir)) { CCommon.MkDir(DayOutDir); } if (!CCommon.DirExists(DayOutDir)) { DayOutDir = ScroogeDir + "\\"; } } LogFileName = DayOutDir + "\\" + "dayopen.log"; } else { LogFileName = ScroogeDir + "\\" + "dayopen.log"; } Err.LogTo(LogFileName); // -------------------------------------------------------------- Connection = new CConnection(ConnectionString); if (!Connection.IsOpen()) { __.Print(" Ошибка подключения к серверу !"); return; } Command = new CCommand(Connection); __.Print("Определяю режим банк\\филиал."); int BranchKind = ( int )CCommon.IsNull(Command.GetScalar(REQUEST_GET_BRANCH_KIND), -1); if (BranchKind == -1) { __.Print(" Ошибка выполнения команды на сервере !"); } else if (BranchKind != 0) { MainBank = false; } /* Выборка адреса БД БРЦ * if ( MainBank ) { * __.Print("Вычитываю адрес БД БРЦ."); * BrcConnStr = ( string ) CCommon.IsNull( Command.GetScalar( REQUEST_GET_BRC_CONNECTIONSTRING ) , CAbc.EMPTY ); * } */ __.Print("Определяю дату предыдущего рабочего дня."); PrevDate = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.Mega_Day_Close;2 " + DayDate.ToString()), (int)0); if (PrevDate == 0) { __.Print(" Ошибка определения даты предыдущего рабочего дня !"); return; } else { __.Print("Предыдущий рабочий день - " + __.StrD(PrevDate, 8, 8)); } switch (Mode) { case 4: { CopyXML4Mebius(NextDate, ""); // CopyXML4Mebius( NextDate , "kv" ); // Это перекладывание киевских отчетов очетов отключено 18 июля 2019г. return; } } Command.Close(); Connection.Close(); // ------------------------------------------------------ switch (Mode) { case 1: { Today(PrevDate, DayDate); break; } case 2: { Chk_VIA(PrevDate , (__.Month(DayDate) != __.Month(PrevDate)) ); break; } case 3: { Chk_Misc(PrevDate, DayDate); break; } default: { __.Print("Неверно указан режим работы !"); break; } } }
// ------------------------------------------------------ static void Today(int PrevDate, int DayDate) { int NeedRecalc = 0; string ScInputDir = CAbc.EMPTY; Connection = new CConnection(ConnectionString); if (!Connection.IsOpen()) { __.Print(" Ошибка подключения к серверу !"); return; } LookForSertificates(); __.Print("Ищу обороты за выходные дни."); RecordSet = new CRecordSet(Connection); byte SavedColor = CConsole.BoxColor; CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; if (RecordSet.Open(" exec dbo.Mega_Day_Open;8 ")) { while (RecordSet.Read()) { CConsole.GetBoxChoice("", "Обнаружены проводки за выходной день " + __.StrD(__.CInt(RecordSet[0]), 8, 8), ""); } } RecordSet.Close(); CConsole.BoxColor = SavedColor; Command = new CCommand(Connection); Command.Timeout = 599; __.Print("Добавляю в таблицу 'Сегодня' новый день " + __.StrD(PrevDate, 8, 8)); if (!Command.Execute(" exec dbo.Mega_Day_Open;1 " + PrevDate.ToString() + " , 0 ")) { __.Print("Ошибка выполнения команды на сервере !"); } __.Print("Снимаю запреты с даты " + __.StrD(DayDate, 8, 8)); if (!Command.Execute(" exec dbo.Mega_Day_Open;10 " + DayDate.ToString())) { __.Print("Ошибка выполнения команды на сервере !"); } if (MainBank) { __.Print("Переставляю дату работы БРЦ и EMP. "); if (!Command.Execute(" exec dbo.Mega_Day_Open;11 " + DayDate.ToString())) { __.Print("Ошибка выполнения команды на сервере !"); } } if (DayDate > (PrevDate + 1)) { for (int Date = (PrevDate + 1); Date < DayDate; Date++) { __.Print("Копирую курсы валют в дату " + __.StrD(Date, 8, 8)); if (!Command.Execute(" exec dbo.Mega_Day_Open;2 " + Date.ToString())) { __.Print("Ошибка выполнения команды на сервере !"); } __.Print("Добавляю в таблицу 'Сегодня' новый день " + __.StrD(Date, 8, 8)); NeedRecalc = ( int )__.IsNull(Command.GetScalar(" exec dbo.Mega_Day_Open;1 " + Date.ToString() + ",1,0x14703 "), (int)0); if (NeedRecalc > 0) { __.Print("Пересчитываю день " + __.StrD(Date, 8, 8) + "..."); if (!Command.Execute(" exec dbo.SC_EndOfDay " + Date.ToString() + " , 0 , 0 ")) { __.Print("Ошибка выполнения команды на сервере !"); } } } } //-------------------------------------------------------- Command.Close(); Connection.Close(); /* На БРЦ снимаем запреты с даты * if ( MainBank ) { * Connection = new CConnection( BrcConnStr ) ; * if ( ! Connection.IsOpen() ) { * __.Print(" Ошибка подключения к БРЦ !"); * return; * } * Command = new CCommand( Connection ); * __.Print("На БРЦ снимаю запреты с даты " + __.StrD( DayDate , 8, 8 ) ); * if ( ! Command.Execute(" update dbo.SV_Today set Flag=0 where DayDate= " + DayDate.ToString() ) ) * __.Print("Ошибка выполнения команды на сервере !"); * if ( ! Command.Execute(" exec dbo.Mega_Day_Open;11 " + DayDate.ToString() ) ) * __.Print("Ошибка выполнения команды на сервере !"); * Command.Close(); * Connection.Close(); * } */ }
public static void Main() {//FOLD01 const bool DEBUG = false ; bool UseErcRobot = false ; // подключаться ли к серверу под логином ErcRobot const string ROBOT_LOGIN= "******" ; const string ROBOT_PWD = "35162987" ; const string TASK_CODE = "OpenGate" ; byte SavedColor ; COpengateConfig OgConfig ; string ConnectionString= CAbc.EMPTY , CleanFileName = CAbc.EMPTY , TmpFileName = CAbc.EMPTY , LogFileName = CAbc.EMPTY , ScroogeDir = CAbc.EMPTY , SettingsDir = CAbc.EMPTY , ServerName = CAbc.EMPTY , DataBase = CAbc.EMPTY , FileName = CAbc.EMPTY , AboutError = CAbc.EMPTY , InputDir = CAbc.EMPTY , TodayDir = CAbc.EMPTY , StatDir = CAbc.EMPTY , TmpDir = CAbc.EMPTY ; int WorkDate = -1 , SeanceNum = -1 , UniqNum = 0 , i = 0 ; CConnection Connection = null ; System.Console.BackgroundColor = 0 ; System.Console.Clear() ; Err.LogToConsole() ; CCommon.Print( ""," Загрузка в `Скрудж` выплат от пенс.фонда. Версия 1.04 от 06.03.2018г." ); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // считываем конфигурацию Скрудж-2 CScrooge2Config 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 ( ServerName == null ) { CCommon.Print(" Не найдена переменная `Server` в настройках `Скрудж-2` "); return; } if ( DataBase == null ) { CCommon.Print(" Не найдена переменная `Database` в настройках `Скрудж-2` "); return; } System.Console.Title="Загрузка в `Скрудж` выплат от пенс.фонда"; __.DeleteOldTempDirs("??????" , __.Today() - 1 ); if ( DEBUG ) FileName ="D:\\WorkShop\\0000105.015"; else if ( __.ParamCount() > 1 ) for ( i= 1 ; i< __.ParamCount() ; i++ ) if ( CAbc.ParamStr[ i ].Trim().ToUpper() == "/R" ) { UseErcRobot = true; System.Console.Title = System.Console.Title + " * "; } else FileName = CAbc.ParamStr[ i ].Trim(); if ( __.IsEmpty( FileName ) ) { __.Print( " Формат запуска : PfuImporter.exe [/R] <FileName> " ); __.Print( " Пример : PfuImporter.exe * " ); return; } if ( ( ! __.IsEmpty( ScroogeDir ) ) && ( ! __.IsEmpty( SettingsDir ) ) ) SettingsDir = ScroogeDir.Trim() + CAbc.SLASH + SettingsDir.Trim(); else SettingsDir = CAbc.EMPTY; if ( FileName == "*" ) FileName = SelectFileNameGUI( SettingsDir ); if ( ! __.FileExists( FileName ) ) { __.Print( " Не найден указанный файл ! " ); return; } CleanFileName = __.GetFileName( FileName ); UniqNum = GetUniqNum( FileName ); if ( __.GetExtension( CleanFileName ).Trim().ToUpper() == ".MOD" ) { if ( __.FileExists( ModelFileName ) ) __.DeleteFile( ModelFileName ) ; __.CopyFile( FileName , ModelFileName ); return; } if ( ! __.IsDigit( CleanFileName.Replace(".","") ) ) { __.Print( " Указан неправильный файл ! " ); return; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // подключаемся к SQL-серверу ConnectionString = "Server=" + ServerName + ";Database=" + DataBase ; if ( UseErcRobot ) ConnectionString += ";UID=" + ROBOT_LOGIN + ";PWD=" + ROBOT_PWD + ";" ; else ConnectionString += ";Integrated Security=TRUE;" ; try { Connection = new CConnection( ConnectionString ); } catch ( System.Exception Excpt ) { CCommon.Print( Excpt.ToString() ); CCommon.Print( ""," Ошибка подключения к серверу !" ); } if ( ! Connection.IsOpen() ) { CCommon.Print( ""," Ошибка подключения к серверу !" ); return; } else if ( DEBUG ) CCommon.Print(" Сервер : " + ServerName ); Command = new CCommand(Connection) ; if ( ! Command.IsOpen() ) { CCommon.Print( " Ошибка подключения к базе данных !" ); return; } else if ( DEBUG ) CCommon.Print(" База данных : " + DataBase ); System.Console.Title=System.Console.Title+" | "+ServerName+"."+DataBase ; CConsole.Clear(); LoadModel( ModelFileName ) ; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // считываем настройки универсального шлюза WorkDate = ( int ) __.IsNull( Command.GetScalar( " exec dbo.pMega_OpenGate_Days;7 " ) , (int) 0 ); if ( WorkDate < 1 ) { __.Print( " Ошибка определения даты текущего рабочего дня. " ); Command.Close(); Connection.Close(); return ; } OgConfig = new COpengateConfig(); OgConfig.Open( WorkDate ); if ( ! OgConfig.IsValid() ) { __.Print( " Ошибка чтения настроек программы из " + OgConfig.Config_FileName() ); __.Print( OgConfig.ErrInfo()) ; Command.Close(); Connection.Close(); return; } SeanceNum = ( int ) __.IsNull( Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='" + TASK_CODE + "',@ParamCode='NumSeance' ") , (int) 0 ); if ( SeanceNum < 1 ) { __.Print( " Ошибка определения номера сеанса " ); Command.Close(); Connection.Close(); return ; } TodayDir = (string)OgConfig.TodayDir() ; TmpDir = (string)OgConfig.TmpDir() ; StatDir = (string)OgConfig.StatDir() ; if ( (TodayDir == null) || (InputDir == null) ) { __.Print( " Ошибка чтения настроек программы из " + OgConfig.Config_FileName() ); Command.Close(); Connection.Close(); return; } TodayDir = TodayDir.Trim() ; StatDir = StatDir.Trim(); TmpDir = TmpDir.Trim(); if ( ! __.DirExists( TodayDir ) ) __.MkDir( TodayDir ); if ( ! __.DirExists( StatDir ) ) __.MkDir( StatDir ); if ( ! __.DirExists( TmpDir ) ) __.MkDir( TmpDir ); if ( ! __.SaveText( StatDir + "\\" + "test.dat" , "test.dat" , CAbc.CHARSET_DOS ) ) { __.Print( " Ошибка записи в каталог " + StatDir ); Command.Close(); Connection.Close(); return ; } __.DeleteFile(StatDir + "\\" + "test.dat"); LogFileName = OgConfig.LogDir() + "\\SEANS" + SeanceNum.ToString("000") + ".TXT"; Err.LogTo( LogFileName ); __.AppendText( LogFileName , __.Now() + " " + USER_NAME + " загружает файл " + CleanFileName + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); TmpFileName = TodayDir + CAbc.SLASH + CleanFileName ; if ( ! __.FileExists( TmpFileName ) ) __.CopyFile( FileName , TmpFileName ) ; if ( ! __.FileExists( TmpFileName ) ) { __.Print( " Ошибка записи файла " + TmpFileName ); Command.Close(); Connection.Close(); return ; } TmpFileName = TmpDir + CAbc.SLASH + __.Right( "0" + __.Hour(__.Clock()).ToString() , 2 ) + __.Right( "0" + __.Minute( __.Clock()).ToString() , 2 ) + __.Right( "0" + __.Second( __.Clock()).ToString() , 2 ) ; if( ! __.DirExists( TmpFileName ) ) __.MkDir( TmpFileName ) ; TmpFileName = TmpFileName + CAbc.SLASH + CleanFileName ; if ( __.FileExists( TmpFileName ) ) __.DeleteFile( TmpFileName ) ; if ( __.FileExists( TmpFileName ) ) { __.Print("Ошибка удаления файла ",TmpFileName) ; Command.Close(); Connection.Close(); return ; } __.CopyFile( FileName , TmpFileName ) ; if ( DEBUG ) __.Print(" Беру настройки шлюза здесь : " + OgConfig.Config_FileName() ); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // проверяем пачку AboutError = CheckPfuFile( FileName , UniqNum ) ; if ( __.IsEmpty( AboutError ) ) { if ( ! CConsole.GetBoxChoice( " Всего строк : " + TotalLines.ToString() , " Общая сумма : " + ( __.CCur( TotalCents ) / 100 ).ToString().Replace(",",".") , " Дебет.счет : " + __.Left(DebitMoniker , 26 ) , __.Left( DebitName , 42 ) , "__________________________________________" , " Для загрузки нажмите ENTER . " , " Для выхода - ESC." ) ) { __.AppendText( LogFileName , CAbc.CRLF + __.Now() + " загрузка отменена. " + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); Command.Close(); Connection.Close(); return; } } else { __.Print( AboutError ); __.AppendText( LogFileName , CAbc.CRLF + AboutError + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); SavedColor = CConsole.BoxColor ; CConsole.BoxColor = CConsole.RED*16 + CConsole.WHITE ; if ( ! CConsole.GetBoxChoice( " При проверке файла обнаружены ошибки !" , "__________________________________________" , " Всего строк : " + TotalLines.ToString() , " Общая сумма : " + ( __.CCur( TotalCents ) / 100 ).ToString().Replace(",",".") , " Дебет.счет : " + __.Left(DebitMoniker , 26 ) , __.Left( DebitName , 42 ) , "__________________________________________" , " Для отмены загрузки нажмите ESC . " , " Для выполнения загрузки - ENTER ." ) ) { __.AppendText( LogFileName , CAbc.CRLF + __.Now() + " загрузка отменена. " + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); CConsole.BoxColor = SavedColor ; Command.Close(); Connection.Close(); return; } CConsole.BoxColor = SavedColor ; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // загружаем пачку LoadPfuFile( FileName , UniqNum ); __.AppendText( LogFileName , CAbc.CRLF + __.Now() + " загрузка завершена. " + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); CConsole.ShowBox(CAbc.EMPTY," Подождите..." ,CAbc.EMPTY) ; Command.Execute(" exec pMega_OpenGate_PayRoll;2 " + " @FileName='" + CleanFileName + "-" + UniqNum.ToString().Trim() + "'" + ", @DayDate=" + WorkDate.ToString() ) ; CConsole.Clear(); Connection.Close(); }//FOLD01
static void Main() { string ScroogeDir = CAbc.EMPTY; string ServerName = CAbc.EMPTY; string DataBase = CAbc.EMPTY; string ConnectionString = CAbc.EMPTY; if (!DEBUG) { if (__.ParamCount() < 2) { PrintAboutMe(); return; } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - CCommon.Print("", " Построитель сальдовок для Фонда Гарантирования. Версия 1.03 от 12.03.2018г.", ""); CScrooge2Config Scrooge2Config = new CScrooge2Config(); if (!Scrooge2Config.IsValid) { CCommon.Print(Scrooge2Config.ErrInfo); return; } ScroogeDir = (string)Scrooge2Config["Root"]; 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; } CCommon.Print(" Беру настройки `Скрудж-2` здесь : " + ScroogeDir); __.Print(" Сервер : " + ServerName); __.Print(" База данных : " + DataBase + CAbc.CRLF); ConnectionString = "Server=" + ServerName + ";Database=" + DataBase + ";Integrated Security=TRUE;" ; Connection = new CConnection(ConnectionString); if (!Connection.IsOpen()) { CCommon.Print(" Ошибка подключения к источнику данных !"); return; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - string TODAY_STR = CCommon.StrD(CCommon.Today(), 10, 10).Substring(6) + CCommon.StrD(CCommon.Today(), 10, 10).Substring(2, 4) + CCommon.StrD(CCommon.Today(), 10, 10).Substring(0, 2); CParam Param = new CParam(); if (!__.IsEmpty(Param["DEBUG"])) { DEBUG = true; } bool NeedCorrection = ((Param["COR"]).ToUpper() == "Y"); string Date; if (__.IsEmpty(Param["DATE"])) { Date = TODAY_STR; } else { Date = (Param["DATE"]); } string DateStr = Date.Trim().Replace(",", "").Replace(".", "").Replace("/", ""); if (!__.IsEmpty(Param["SEP"])) { switch (Param["SEP"].ToUpper()[0]) { case 'C': { MetaData[0] = 44; break; } case 'S': { MetaData[0] = 59; break; } case 'T': { MetaData[0] = 9; break; } default: { __.Print("Указан неизвестный разделитель полей."); break; } } } if (__.IsEmpty(Param["MODE"])) { __.Print("Не указано `mode` - какой отчет строить ."); } else { switch (Param["MODE"].ToUpper().Trim()) { case "N63": { WriteDataToCsv( "exec dbo.Mega_Report_SaldoFGV;2 '" + Date + "','2903'" + (NeedCorrection ? ",1" : "") , DateStr + "-63.csv" ); break; } case "N64": { WriteDataToCsv( "exec dbo.Mega_Report_SaldoFGV;2 '" + Date + "','2620,2622,2625,2628,2630,2635,2638,2903,3320,3328,3330,3338,3340,3348'" + (NeedCorrection ? ",1" : "") , DateStr + ".csv" ); break; } case "N65": { WriteDataToCsv( "exec dbo.Mega_Report_SaldoFGV;2 '" + Date + "','2600,2602,2603,2604,2605,2608,2610,2615,2618'" + (NeedCorrection ? ",1" : "") , DateStr + "-65.csv" ); break; } default: { __.Print("Указан неправильный код отчета."); break; } } } if (DEBUG) { WriteDataToCsv( "exec dbo.Mega_Report_SaldoFGV;2 '2015.12.01','2903',1" , "20160801-63.csv" ); } Connection.Close(); __.Print("Готово."); return; }
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(); }
public static void Main() { const bool DEBUG = false; int WorkMode = 0; // 1 = выгружать B ; 2 = выгружать V const int WORK_MODE_B = 1; // для WorkMode : 1 = выгружать B const int WORK_MODE_V = 2; // для WorkMode : 2 = выгружать V int DayStatus = 0; // &1 = стоп по B ; &2 = стоп по V int ErcDate = CCommon.Today(); string TmpDir = null; string StatDir = null; string TodayDir = null; string OutputDir = null; string DataBase = null; string ServerName = null; string ScroogeDir = null; string LogFileName = null; string SimpleFileName = null; string ConfigFileName = null; string ConnectionString = null; Err.LogToConsole(); CCommon.Print("", " Создание файлов для ЕРЦ. Версия 3.02 от 23.05.2019г."); if (!DEBUG) { if (CCommon.ParamCount() < 2) { CCommon.Print(" Режим работы программы (задаются в строке запуска программы):"); CCommon.Print(" /E - выполнить выгрузку файлов для ЕРЦ ."); CCommon.Print(" Примеры запуска программы : "); CCommon.Print(" ErcExport /E"); CCommon.Print(" ErcExport /E 2019/05/20"); return; } if (CCommon.Upper(CAbc.ParamStr[1]).Trim() != "/E") { CCommon.Print(" Ошибка ! Неправильный режим работы - " + CAbc.ParamStr[1]); return; } if (CCommon.ParamCount() > 2) { ErcDate = CCommon.GetDate(CAbc.ParamStr[2].Trim()); if (ErcDate < 10000) { CCommon.Print(" Ошибка ! Неправильная дата - " + CAbc.ParamStr[2]); return; } } } else { CCommon.Print("--- DEBUG ---"); } CCommon.Print(" Рабочая дата " + CCommon.StrD(ErcDate, 10, 10)); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Scrooge2Config = new CScrooge2Config(); if (!Scrooge2Config.IsValid) { CCommon.Print(Scrooge2Config.ErrInfo); return; } ScroogeDir = (string)Scrooge2Config["Root"]; 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; } CCommon.Print(" Беру настройки `Скрудж-2` здесь : " + ScroogeDir); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - ConnectionString = "Server=" + ServerName + ";Database=" + DataBase + ";Integrated Security=TRUE;" ; Connection1 = new CConnection(ConnectionString); Connection2 = new CConnection(ConnectionString); if (Connection1.IsOpen()) { CCommon.Print(" Сервер : " + ServerName); CCommon.Print(" База данных : " + DataBase + CAbc.CRLF); } else { CCommon.Print(CAbc.CRLF + " Ошибка подключения к серверу !"); return; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CCommand Command = new CCommand(Connection1); DayStatus = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;8 @TaskCode = 'ErcGate' , @DayDate = " + ErcDate.ToString()), (int)0); switch ((DayStatus & 3)) { case 0: { // разрешена отправка и B и V WorkMode = WORK_MODE_B; // отправлять B break; } case 1: { // запрещена отправка B ; разрешена отправка V WorkMode = WORK_MODE_V; // отправлять V break; } case 2: { // разрешена отправка B ; запрещена отправка V WorkMode = WORK_MODE_B; // отправлять B break; } case 3: { CCommon.Print(" На " + CCommon.StrD(ErcDate, 10, 10) + " отправка пачек B и V завершена (см. признак текущего дня)."); Connection1.Close(); Connection2.Close(); return; break; } } SeanceNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode = 'ErcGate' , @ParamCode = 'NumSeance' , @DayDate = " + ErcDate.ToString()), (int)0); if (WorkMode == WORK_MODE_B) { BFileNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode = 'ErcGate' , @ParamCode = 'NumOutFile' , @DayDate = " + ErcDate.ToString()), (int)0); CCommon.Print(" Выполняется формирование B-файлов "); } else { CCommon.Print(" Выполняется формирование V и W -файлов "); } Command.Close(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - ConfigFileName = ScroogeDir + CAbc.SLASH + "EXE" + CAbc.SLASH + "GLOBAL.ERC"; ErcConfig = new CErcConfig(); ErcConfig.Open(ErcDate); if (!ErcConfig.IsValid()) { CCommon.Print(" Ошибка чтения настроек из файла " + ConfigFileName); System.Console.WriteLine(ErcConfig.ErrInfo()); Connection1.Close(); Connection2.Close(); return; } TodayDir = (string)ErcConfig.TodayDir(); StatDir = (string)ErcConfig.StatDir(); TmpDir = (string)ErcConfig.TmpDir(); OutputDir = (string)ErcConfig["OutputDir"]; if ((TodayDir == null) || (OutputDir == null)) { CCommon.Print(" Ошибка чтения настроек из файла " + ConfigFileName); Connection1.Close(); Connection2.Close(); return; } TodayDir = TodayDir.Trim(); OutputDir = OutputDir.Trim(); StatDir = StatDir.Trim(); if ((TodayDir == "") || (OutputDir == "") || (StatDir == "")) { CCommon.Print(" Ошибка чтения настроек из файла " + ConfigFileName); Connection1.Close(); Connection2.Close(); return; } if (!CCommon.DirExists(StatDir)) { CCommon.MkDir(StatDir); } if (!CCommon.SaveText(StatDir + "\\" + "test.dat", "test.dat", CAbc.CHARSET_DOS)) { CCommon.Print(" Ошибка записи в каталог " + StatDir); Connection1.Close(); Connection2.Close(); return; } CCommon.DeleteFile(StatDir + "\\" + "test.dat"); CCommon.Print(" Беру настройки шлюза здесь : " + ConfigFileName); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - TmpDir = TmpDir + "\\" + SeanceNum.ToString("000000"); CCommon.MkDir(TmpDir); if (!CCommon.SaveText(TmpDir + "\\" + "test.dat", "test.dat", CAbc.CHARSET_DOS)) { CCommon.Print(" Ошибка записи в каталог " + TmpDir); Connection1.Close(); Connection2.Close(); } LogFileName = ErcConfig.LogDir() + "\\SE" + SeanceNum.ToString("000000") + ".TXT"; if (!CCommon.AppendText(LogFileName, CCommon.Now() + " , " + CCommon.Upper(CCommon.GetUserName()) + CAbc.CRLF, CAbc.CHARSET_DOS)) { CCommon.Print(" Ошибка записи в файл " + LogFileName); Connection1.Close(); Connection2.Close(); } Err.LogTo(LogFileName); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Отправка B if (WorkMode == WORK_MODE_B) { if (!WriteBFiles(ErcDate, TmpDir)) { CCommon.Print(" Ошибка записи B-файлов!"); } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Отправка V if (WorkMode == WORK_MODE_V) { WriteVFiles(ErcDate, TmpDir, 0); WriteVFiles(ErcDate, TmpDir, 1); Command = new CCommand(Connection1); if (!Command.Execute(" exec dbo.pMega_OpenGate_Days;9 @TaskCode = 'ErcGate' , @DayDate = " + ErcDate.ToString())) { CCommon.Print(" Ошибка установки запрета на отправку V-файла!"); CCommon.AppendText(LogFileName, " Ошибка установки запрета на отправку V-файла!", CAbc.CHARSET_DOS); CCommon.AppendText(LogFileName, CAbc.CRLF, CAbc.CHARSET_DOS); Connection1.Close(); Connection2.Close(); return; } Command.Close(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - foreach (string ResultFile in CCommon.GetFileList(TmpDir + "\\" + "!*.*")) { if (ResultFile != null) { SimpleFileName = CCommon.GetFileName(ResultFile); CCommon.CopyFile(ResultFile, TodayDir + "\\" + SimpleFileName); CCommon.CopyFile(ResultFile, OutputDir + "\\" + SimpleFileName); CCommon.AppendText(LogFileName, "Записываю файл " + SimpleFileName, CAbc.CHARSET_DOS); CCommon.Print(" Записываю файл " + SimpleFileName); } } CCommon.AppendText(LogFileName, CAbc.CRLF, CAbc.CHARSET_DOS); Connection1.Close(); Connection2.Close(); }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Запуск списка регламентных процедур на Sql-сервере static bool StartSqlRoutine(string CmdText) { CConnection Connection2; bool Result = true; if (CmdText == null) { return(false); } if (CmdText.Trim() == "") { return(false); } CArray CommandList = new CArray(); CArray NamesList = new CArray(); CConsole.ShowBox("", "Выполнение команды на сервере", ""); Connection = new CConnection(ConnectionString); RecordSet = new CRecordSet(Connection); if (RecordSet.Open(CmdText)) { while (RecordSet.Read()) { NamesList.Add(RecordSet["Name"]); CommandList.Add(RecordSet["Command"]); } } else { Result = false; } CConsole.Clear(); RecordSet.Close(); string Cmd = CAbc.EMPTY , Msg = CAbc.EMPTY , Results = CAbc.EMPTY; CCommand Command = new CCommand(Connection); for (int I = 0; I < NamesList.Count; I++) { CCommon.Print(NamesList[I] + " - выполняется."); CConsole.ShowBox("", "Выполнение команды на сервере", ""); Cmd = DateSubstitution((string)CommandList[I]); CmdText = " exec dbo.Mega_Common_WriteToLoginfo " + " @TaskCode='Mega_Day_Routine-" + Mode.ToString().Trim() + "'" + ",@Info='start : " + Cmd + "'"; Command.Execute(CmdText); Connection2 = new CConnection(ConnectionString); RecordSet = new CRecordSet(Connection2); RecordSet.Timeout = 599; if (RecordSet.Open(Cmd)) { Msg = (string)NamesList[I]; int Count = 0; if (RecordSet.Read()) { do { Count++; }while (RecordSet.Read()); } Msg = NamesList[I] + " - OK." + ((Count > 0) ? " ( " + Count.ToString() + " row(s) affected )" : ""); } else { Result = false; Msg = NamesList[I] + " - Ошибка !"; } RecordSet.Close(); Connection2.Close(); CmdText = " exec dbo.Mega_Common_WriteToLoginfo " + " @TaskCode='Mega_Day_Routine-" + Mode.ToString().Trim() + "'" + ",@Info='stop : " + Cmd + "'"; Command.Execute(CmdText); CmdText = " exec dbo.Mega_Common_WriteToLoginfo " + " @TaskCode='Mega_Day_Routine-" + Mode.ToString().Trim() + "'" + ",@Info='" + Msg.Replace("'", "`") + "'"; Command.Execute(CmdText); Err.Print(CAbc.TAB + CAbc.TAB + Msg + CAbc.CRLF); CConsole.Clear(); Results += Msg + CAbc.CRLF; CCommon.Write(Results); } Connection.Close(); CCommon.Print(CAbc.EMPTY, CAbc.EMPTY, "Готово. Для продолжения нажмите Enter."); CConsole.ClearKeyboard(); CConsole.Flash(); CConsole.ReadChar(); return(Result); }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Вычитка списка пунктов открытия/закрытия дня static bool LoadHistory(int Mode) { int MenuItemWidth = (Mode == 1) ? 32 : 25; Connection = new CConnection(ConnectionString); RecordSet = new CRecordSet(Connection); bool Result = false; if (RecordSet.Open("exec Mega_Day_Close;10 @DayDate=" + DayDate.ToString() + " , @Mode= " + Mode.ToString())) { while (RecordSet.Read()) { if (CCommon.CInt(RecordSet["Cnt"]) == 0) { MNames.Add(CCommon.Left(RecordSet["Name"], MenuItemWidth) + "*"); } else { MNames.Add(CCommon.Left(RecordSet["Name"], MenuItemWidth) + "* " + RecordSet["Cnt"].Trim()); } MCommands.Add(RecordSet["Command"]); MParams.Add(RecordSet["Params"]); MKinds.Add(RecordSet["Kind"]); Result = true; } } else { Result = false; } RecordSet.Close(); int MenuCount = MNames.Count; MenuNames = new string[MenuCount]; MenuKinds = new string[MenuCount]; MenuParams = new string[MenuCount]; MenuCommands = new string[MenuCount]; MenuCount = 0; foreach (string MenuName in MNames) { MenuNames[MenuCount++] = MenuName; } MenuCount = 0; foreach (string MenuKind in MKinds) { MenuKinds[MenuCount++] = MenuKind; } MenuCount = 0; foreach (string MenuParam in MParams) { MenuParams[MenuCount++] = MenuParam; } MenuCount = 0; foreach (string MenuCommand in MCommands) { MenuCommands[MenuCount++] = MenuCommand; } MCommands.Clear(); MParams.Clear(); MKinds.Clear(); MNames.Clear(); Connection.Close(); return(Result); }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - public static void Main() { const bool DEBUG = false; CParam Param = new CParam(); int Choice = 0; bool Result = false; byte SavedColor = 7; string OutputDir = CAbc.EMPTY; string ScroogeDir = CAbc.EMPTY; string ServerName = CAbc.EMPTY; string DataBase = CAbc.EMPTY; string LogFileName = CAbc.EMPTY; string UnsolverBillsCmdText = CAbc.EMPTY; int UnsolvedBillsExists = 0; string[] Titles = { "ОТКРЫТИЕ ДНЯ", "ЗАКРЫТИЕ ДНЯ" }; string[] LogFileNames = { "dayopen.log", "dayclose.log" }; string NOW_STR = CCommon.StrD(CCommon.Today(), 10, 10).Substring(6) + CCommon.StrD(CCommon.Today(), 10, 10).Substring(2, 4) + CCommon.StrD(CCommon.Today(), 10, 10).Substring(0, 2); Err.LogToConsole(); CConsole.Clear(); CCommon.Print(" Оболочка открытия и закрытия дня в `Скрудже`. Версия 3.13 от 02.10.2018г.", ""); if (DEBUG) { Mode = 1; } else if (CCommon.IsEmpty(Param["Mode"])) { CCommon.Print("Не указан режим работы программы !"); } else { switch (Param["Mode"].ToUpper()) { case "OPEN": { Mode = 1; break; } case "CLOSE": { Mode = 2; break; } default: { CCommon.Print("Неверно указан режим работы программы !"); break; } } } if ((Mode != 1) && (Mode != 2)) { return; } if ((Mode == 2) && (!CCommon.DirExists("Z:\\"))) { SavedColor = CConsole.BoxColor; CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; CConsole.ShowBox("", "Не подключен Z:\\", ""); CConsole.ClearKeyboard(); CConsole.ReadChar(); CConsole.BoxColor = SavedColor; CConsole.Clear(); CConsole.ShowCursor(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Запрос пользователю на ввод даты дня, который открывается или закрывается while (DayDate == 0) { switch (Mode) { case 1: { CCommon.Write("Какую дату открываем ? ( " + NOW_STR.Replace("/", ".") + " ) "); break; } default: { CCommon.Write("Какую дату закрываем ? ( " + NOW_STR.Replace("/", ".") + " ) "); break; } } Answer = CCommon.Input().Trim(); if (Answer == "") { DayDate = CCommon.Today(); } else { DayDate = CCommon.GetDate(Answer); } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - Scrooge2Config = new CScrooge2Config(); if (!Scrooge2Config.IsValid) { CCommon.Print(Scrooge2Config.ErrInfo); return; } ScroogeDir = (string)Scrooge2Config["Root"]; OutputDir = (string)Scrooge2Config["Output"]; 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; } CCommon.Print(" Беру настройки `Скрудж-2` здесь : " + ScroogeDir); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ConnectionString = "Server=" + ServerName + ";Database=" + DataBase + ";Integrated Security=TRUE;"; Connection = new CConnection(ConnectionString); if (Connection.IsOpen()) { CCommon.Print(" Сервер " + ServerName); CCommon.Print(" База " + DataBase + CAbc.CRLF); } else { CCommon.Print(CAbc.CRLF + " Ошибка подключения к серверу !"); return; } System.Console.Title = " " + Titles[Mode - 1] + " | " + ServerName + "." + DataBase; Command = new CCommand(Connection); int IsFullAccess = ( int )CCommon.IsNull(Command.GetScalar(" select dbo.Fn_IsFullAccess( DEFAULT ) "), (int)0); string InfNBU_OutPath = ( string )CCommon.IsNull(Command.GetScalar(" exec dbo.Mega_Day_Open;5 @Mode=2 ; "), (string)CAbc.EMPTY); if (Mode == 2) { // Записываю в историю логин пользователя, который закрывает день Command.Execute(" exec dbo.Mega_Day_Close;12 @DayDate = " + DayDate.ToString() + " , @UserCode = '" + UserCode + "' "); // Проверка : имеются ли непроведенные документы ? UnsolverBillsCmdText = " If Exists ( select 1 from dbo.Mega_SV_WaitingBills with (NoLock) where (DayDate=" + DayDate.ToString() + " ) and ((PermitFlag & 255 )!=255) and ((ProcessFlag & 3)!=3) ) select Convert(Integer,1) else select Convert(Integer,0) "; UnsolvedBillsExists = ( int )CCommon.IsNull(Command.GetScalar(UnsolverBillsCmdText), (int)0); } Command.Close(); Connection.Close(); if (IsFullAccess < 1) { CCommon.Print(CAbc.CRLF + " Для работы программы пользователю необходим полный доступ в Скрудже !"); return; } InfNBU_OutPath = InfNBU_OutPath.Trim(); if (InfNBU_OutPath.Length == 0) { Err.Print(CCommon.Now().ToString() + "Ошибка определения выходного каталога для ОДБ." + CAbc.CRLF + CAbc.CRLF); } if (UnsolvedBillsExists == 1) { SavedColor = CConsole.BoxColor; CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; CConsole.ShowBox("", "Имеются непpоведенные документы", "", " Пpоведите их или удалите !", ""); CConsole.ClearKeyboard(); CConsole.ReadChar(); CConsole.BoxColor = SavedColor; CConsole.Clear(); CConsole.ShowCursor(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (OutputDir != null) { OutputDir = ScroogeDir + "\\" + OutputDir.Trim(); if (!CCommon.DirExists(OutputDir)) { CCommon.MkDir(OutputDir); } if (CCommon.DirExists(OutputDir)) { OutputDir += "\\" + CCommon.StrD(DayDate, 8, 8).Replace("/", "").Replace(".", ""); if (!CCommon.DirExists(OutputDir)) { CCommon.MkDir(OutputDir); } if (!CCommon.DirExists(OutputDir)) { OutputDir = ScroogeDir + "\\"; } } LogFileName = OutputDir + "\\" + LogFileNames[Mode - 1]; } else { LogFileName = ScroogeDir + "\\" + LogFileNames[Mode - 1]; } Err.LogTo(LogFileName); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Основной цикл программы do { System.Console.Title = " " + Titles[Mode - 1] + " " + CCommon.StrD(DayDate, 8, 8) + " | " + ServerName + "." + DataBase; string[] FilesForMEDOC = CCommon.GetFileList(InfNBU_OutPath + "\\@*.*"); if (FilesForMEDOC != null) { if (FilesForMEDOC.Length > 0) { CConsole.GetBoxChoice( "" , "В каталоге " + InfNBU_OutPath , "Найдены файлы для налоговой @*.*" , "Не забудьте их отправить!" , "" ); } } if (!LoadHistory(Mode)) { Err.Print(CCommon.Now().ToString() + "Ошибка получения с сервера истории работы программы !"); } Choice = CConsole.GetMenuChoice(MenuNames); if (Choice > 0) { Err.Print(CCommon.Now().ToString() + "\t< " + MenuNames[Choice - 1] + " ( " + UserCode + " ) " + CAbc.CRLF); if (!SaveHistory(Mode, Choice)) { Err.Print("Ошибка сохранения на сервере истории работы программы !"); } switch (MenuKinds[Choice - 1].Trim().ToUpper()) { case "EXE.COPY": { Result = StartExeCopy( MacroSubstitution(MenuCommands[Choice - 1]) , MacroSubstitution( DateSubstitution( MenuParams[Choice - 1] ) ) ); break; } case "SQL.CMD": { Result = StartSqlCmd( DateSubstitution( MenuCommands[Choice - 1] ) ); break; } case "SQL.RS": { Result = StartSqlRS( DateSubstitution( MenuCommands[Choice - 1] ) ); break; } case "SQL.ROUTINE": { Result = StartSqlRoutine( DateSubstitution( MenuCommands[Choice - 1] ) ); break; } case "EXC": { Result = StartExc(ScroogeDir , MacroSubstitution( DateSubstitution( MenuCommands[Choice - 1] ) ) ); break; } case "URL.IE": { Result = StartUrl( DateSubstitution( MenuCommands[Choice - 1] ) ); break; } default: { break; } } Err.Print(CCommon.Now().ToString() + "\t " + MenuNames[Choice - 1] + " ( " + Result.ToString() + " ) > " + CAbc.CRLF); } } while (Choice != 0); }
static void Main() //FOLD00 { const bool DEBUG = false; bool UseErcRobot = false; // подключаться ли к серверу под логином ErcRobot const string ROBOT_LOGIN = "******"; const string ROBOT_PWD = "35162987"; const string TASK_CODE = "OpenGate"; CPayRoll PayRoll; CCommand Command; CConnection Connection; COpengateConfig OgConfig; CScrooge2Config Scrooge2Config; byte SavedColor; int ErcDate = 0 , SeanceNum = 0; string TmpDir = CAbc.EMPTY , StatDir = CAbc.EMPTY , BankCode = "351629" , FileName = CAbc.EMPTY , TodayDir = CAbc.EMPTY , InputDir = CAbc.EMPTY , DataBase = CAbc.EMPTY , ScroogeDir = CAbc.EMPTY , SettingsDir = CAbc.EMPTY , ServerName = CAbc.EMPTY , AboutError = CAbc.EMPTY , LogFileName = CAbc.EMPTY , TmpFileName = CAbc.EMPTY , CleanFileName = CAbc.EMPTY , ConnectionString = CAbc.EMPTY; CConsole.Clear(); __.Print(CAbc.EMPTY, " Загрузка зарплатных ведомостей в `Скрудж`. Версия 2.01 от 21.08.2019г.", CAbc.EMPTY); System.Console.Title = "Загрузка в `Скрудж` зарплатных ведомостей"; __.DeleteOldTempDirs("??????", __.Today() - 1); if (DEBUG) { FileName = "D:\\WorkShop\\zkm.dif"; Err.LogTo("D:\\WorkShop\\zkm.log"); } else if (__.ParamCount() > 1) { for (int i = 1; i < __.ParamCount(); i++) { if (CAbc.ParamStr[i].Trim().ToUpper() == "/R") { UseErcRobot = true; System.Console.Title = System.Console.Title + " * "; } else { FileName = CAbc.ParamStr[i].Trim(); } } } if (__.IsEmpty(FileName)) { __.Print(" Не указано имя файла для обработки ! "); __.Print(" Формат запуска : PayrollImporter.exe <FileName> [/R]"); __.Print(" Пример : PayrollImporter.exe * "); return; } // ----------------------------------------------------- // Вычитываем настройки "Скрудж-2" Scrooge2Config = new CScrooge2Config(); if (!Scrooge2Config.IsValid) { __.Print(Scrooge2Config.ErrInfo); return; } ScroogeDir = (string)Scrooge2Config["Root"]; SettingsDir = (string)Scrooge2Config["Common"]; ServerName = (string)Scrooge2Config["Server"]; DataBase = (string)Scrooge2Config["DataBase"]; if (ScroogeDir == null) { __.Print(" Не найдена переменная `Root` в настройках `Скрудж-2` "); return; } if (ServerName == null) { __.Print(" Не найдена переменная `Server` в настройках `Скрудж-2` "); return; } if (DataBase == null) { __.Print(" Не найдена переменная `Database` в настройках `Скрудж-2` "); return; } ScroogeDir = ScroogeDir.Trim(); if (SettingsDir != null) { SettingsDir = ScroogeDir + "\\" + SettingsDir; } ServerName = ServerName.Trim(); DataBase = DataBase.Trim(); if (DEBUG) { __.Print(" Беру настройки `Скрудж-2` здесь : " + ScroogeDir); } if (FileName == "*") { FileName = SelectFileNameGUI(SettingsDir); } if (FileName == null) { return; } if (__.IsEmpty(FileName)) { return; } if (!__.FileExists(FileName)) { __.Print(" Не найден указанный файл ! ", "", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } CleanFileName = __.GetFileName(FileName); PayRoll = new CPayRoll(); if (!PayRoll.Open(FileName)) { __.Print("Ошибка открытия исходного файла !", "", "Для выхода нажмите ENTER."); PayRoll.Close(); CConsole.WaitForEscOrEnter(); return; } if (!PayRoll.Preview()) { PayRoll.Close(); return; } // ----------------------------------------------------- // Подключаемся к базе данных 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()) { if (DEBUG) { __.Print(" Сервер : " + ServerName); } } else { __.Print("", " Ошибка подключения к серверу !"); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } Command = new CCommand(Connection); if (Command.IsOpen()) { if (DEBUG) { __.Print(" База данных : " + DataBase); } } else { __.Print("", " Ошибка подключения к базе данных !"); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } System.Console.Title = System.Console.Title + " | " + ServerName + "." + DataBase; // ----------------------------------------------------- // Вычитываем из БД информацию про МФО и дебет-счет BankCode = ( string )__.IsNull(Command.GetScalar(" select Code from dbo.vMega_Common_MyBankInfo with ( NoLock ) "), CAbc.EMPTY); if (BankCode == null) { BankCode = "351629"; } else if (__.IsEmpty(BankCode)) { BankCode = "351629"; } if (!PayRoll.GetDebitInfo(Command)) { Command.Close(); Connection.Close(); PayRoll.Close(); return; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // считываем настройки шлюза в ЕРЦ ErcDate = ( int )__.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;7 "), (int)0); if (ErcDate < 1) { __.Print(" Ошибка определения даты текущего рабочего дня. "); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } OgConfig = new COpengateConfig(); OgConfig.Open(ErcDate); if (!OgConfig.IsValid()) { __.Print(" Ошибка чтения настроек программы из " + OgConfig.Config_FileName()); __.Print(OgConfig.ErrInfo()); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } SeanceNum = ( int )__.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='" + TASK_CODE + "',@ParamCode='NumSeance' "), (int)0); if (SeanceNum < 1) { __.Print(" Ошибка определения номера сеанса "); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } TodayDir = (string)OgConfig.TodayDir(); TmpDir = (string)OgConfig.TmpDir(); StatDir = (string)OgConfig.StatDir(); if ((TodayDir == null) || (InputDir == null)) { __.Print(" Ошибка чтения настроек программы из " + OgConfig.Config_FileName()); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } TodayDir = TodayDir.Trim(); StatDir = StatDir.Trim(); TmpDir = TmpDir.Trim(); if (!__.DirExists(TodayDir)) { __.MkDir(TodayDir); } if (!__.DirExists(StatDir)) { __.MkDir(StatDir); } if (!__.DirExists(TmpDir)) { __.MkDir(TmpDir); } if (!__.SaveText(StatDir + "\\" + "test.dat", "test.dat", CAbc.CHARSET_DOS)) { __.Print(" Ошибка записи в каталог " + StatDir); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } __.DeleteFile(StatDir + "\\" + "test.dat"); LogFileName = OgConfig.LogDir() + "\\SEANS" + SeanceNum.ToString("000") + ".TXT"; Err.LogTo(LogFileName); __.AppendText(LogFileName, __.Now() + " " + __.Upper(__.GetUserName()) + " загружает файл " + CleanFileName + CAbc.CRLF, CAbc.CHARSET_WINDOWS); TmpFileName = TodayDir + CAbc.SLASH + CleanFileName; if (!__.FileExists(TmpFileName)) { __.CopyFile(FileName, TmpFileName); } if (!__.FileExists(TmpFileName)) { __.Print(" Ошибка записи файла " + TmpFileName); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } TmpFileName = TmpDir + CAbc.SLASH + __.Right("0" + __.Hour(__.Clock()).ToString(), 2) + __.Right("0" + __.Minute(__.Clock()).ToString(), 2) + __.Right("0" + __.Second(__.Clock()).ToString(), 2); if (!__.DirExists(TmpFileName)) { __.MkDir(TmpFileName); } PayRoll.CopyTempFile(TmpFileName); TmpFileName = TmpFileName + CAbc.SLASH + CleanFileName; PayRoll.CopyTempFile(TmpFileName); if (__.FileExists(TmpFileName)) { __.DeleteFile(TmpFileName); } if (__.FileExists(TmpFileName)) { __.Print("Ошибка удаления файла ", TmpFileName); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } __.CopyFile(FileName, TmpFileName); if (DEBUG) { __.Print(" Беру настройки шлюза здесь : " + OgConfig.Config_FileName()); } // ----------------------------------------------------- // Проверяем пачку AboutError = PayRoll.CheckAll(Command, BankCode); if (AboutError != CAbc.EMPTY) { __.Print(AboutError); __.AppendText(LogFileName, CAbc.CRLF + AboutError + CAbc.CRLF, CAbc.CHARSET_WINDOWS); SavedColor = CConsole.BoxColor; CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; if (!CConsole.GetBoxChoice(" При проверке файла обнаружены ошибки !" , " Для отмены загрузки нажмите ESC . " , " Для продолжения - ENTER ." ) ) { __.AppendText(LogFileName, CAbc.CRLF + __.Now() + " загрузка отменена. " + CAbc.CRLF, CAbc.CHARSET_WINDOWS); CConsole.BoxColor = SavedColor; Command.Close(); Connection.Close(); PayRoll.Close(); return; } CConsole.BoxColor = SavedColor; } else { if (!CConsole.GetBoxChoice(" При проверке файла ошибок не найдено." , " Для загрузки нажмите ENTER . " , " Для выхода - ESC." ) ) { __.AppendText(LogFileName, CAbc.CRLF + __.Now() + " загрузка отменена. " + CAbc.CRLF, CAbc.CHARSET_WINDOWS); Command.Close(); Connection.Close(); PayRoll.Close(); return; } } // ----------------------------------------------------- // Загружаем пачку if (!PayRoll.InsertAll(Command, BankCode)) { SavedColor = CConsole.BoxColor; CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; CConsole.GetBoxChoice(CAbc.EMPTY, " При загрузке файла были ошибки !", CAbc.EMPTY); CConsole.BoxColor = SavedColor; } // ----------------------------------------------------- Command.Close(); Connection.Close(); PayRoll.Close(); __.AppendText(LogFileName, CAbc.CRLF + __.Now() + " загрузка завершена. " + CAbc.CRLF, CAbc.CHARSET_WINDOWS); } //FOLD00