예제 #1
0
        /*        /// <summary>
                /// recognizeDoc(wb)        - распознавание Документа в Листе[1] wb
                /// </summary>
                /// <param name="wb"></param>
                /// <returns>имя распознанного документа или null, если Документ не распознан</returns>
                /// <history> 14.12.2013
                /// 16.12.13 (ПХ) переписано распознавание с учетом if( is_wbSF(wb) )
                /// 18.01.14 (ПХ) с использование Matrix
                /// </history>
                public static string recognizeDoc(Excel.Workbook wb)
                {
                    Log.set("recognizeDoc(wb)");
                    Mtr wbMtr = FileOp.getSheetValue(wb.Worksheets[1]);
                    // вначале проверим где у wb Штамп - в теле или в пятке? Штамп в пятке бывает только у SF
                    // отделим от wbMtr область пятки SF -- переложим SFresLines строк wbMtr в wdSFsummary
                    int iEOL = wbMtr.iEOL();
                    int iEOC = wbMtr.iEOC();
                    object[,] tmp = new object [Decl.SFresLines + 1, iEOC + 1];
                    for (int rw = 1; rw <= Decl.SFresLines; rw++)
                        for (int col = 1; col <= iEOC; col++)
                           tmp[rw, col] = wbMtr.get(iEOL - Decl.SFresLines + rw - 1, col);
                    Mtr wbSFsummary = new Mtr(tmp);

                            Mtr rng = (Documents["SFDC"].stamp.Check(wbSFsummary))? wbSFsummary: wbMtr;

                    try 
                    {
                        foreach (var doc in Documents)  // ищем подходящий документ по Штампам
                            if (doc.Value.stamp.Check(rng)) return doc.Value.name;
                        return null;                    // если ничего не нашли -> вовращаем null
                    }
                    finally { Log.exit(); }                  
                }
        */ //2.1.16
#if FETCH
        /// <summary>
        /// инициирует Fetch-структуру Документа для Запроса fetch_rqst.
        /// Если fetch_rqst не указан - для всех Запросов Документа.
        /// </summary>
        /// <param name="fetch_rqst"></param>
        /// <history>11.1.2014 PKh
        /// 15.1.2014 - дописан FetchInit() - просмотр всех Fetch Документа</history>
        public void FetchInit()
        {
            Log.set("FetchInit");
            try
            {
                for (int col = 1; col <= ptrn.iEOC(); col++)
                {
                    string ftch = ptrn.Strng(Decl.PTRN_FETCH, col);
                    string[] ar = ftch.Split('/');
                    if (ar.Length <= 2) continue;
                    Document doc = getDoc(ar[0]);
                    doc.FetchInit(ftch);
                }
            }
            catch { Log.FATAL("ошибка FetchInit() для Документа \"" + name + "\""); }
            finally { Log.exit(); }
        }
예제 #2
0
        /// <summary>
        /// loadDoc(name, wb)   - загрузка содержимого Документа name из файла wb
        /// </summary>
        /// <param name="name"></param>
        /// <param name="wb"></param>
        /// <returns>Document   - при необходимости читает name из файла в match и сливает его с данными в wb</returns>
        /// <history> Не дописано
        /// 15.12.2013 - взаимодействие с getDoc(name)
        /// 7.1.13 - выделяем в Документе Body и пятку посредством splitBodySummary
        /// </history>
        public static Document loadDoc(string name, Excel.Workbook wb)
        {
            Log.set("loadDoc(" + name + ", " + wb.Name + ")");
            Document doc = getDoc(name);
            doc.LastUpdateFromFile = wb.Name;
            string oldRepName = "Old_" + doc.SheetN;
            try
            {
                /*                wb.Worksheets[1].Name = "TMP";
                                wb.Worksheets[1].Move(doc.Sheet);
                                 // если Old_ уже есть, но еще не обработан - уничтожаем прежний "частичный" отчет
                                if (FileOp.sheetExists(doc.Wb, oldRepName))
                                {
                                    FileOp.DisplayAlert(false);
                                    doc.Wb.Worksheets[doc.name].Delete();
                                    FileOp.DisplayAlert(true);
                                } else doc.Sheet.Name = "Old_" + doc.SheetN;
                                doc.Wb.Worksheets["TMP"].Name = doc.SheetN;
                */
            }
            catch
            {
                Log.FATAL("Не удалось перенести лист [1] из входного файла "
                    + doc.LastUpdateFromFile + " в Документ " + name);
            }
            ////           doc.Sheet = doc.Wb.Worksheets[name];
            doc.splitBodySummary();
            doc.FetchInit();

            ////// если есть --> запускаем Handler
            ////if (doc.Loader != null) Proc.Reset(doc.Loader);
            ////// если нужно --> делаем Merge name с oldRepName
            ////if (FileOp.sheetExists(doc.Wb, oldRepName))
            ////{
            ////    // еще не написано!!
            ////    // NB: в таблице Процессов есть Шаг MergeReps
            ////}
            Log.exit();
            return doc;
        }