/// <summary>
        /// Создать новый подзаголовок
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <returns></returns>
        private TableRow NewSubtitle(TablesRow NewRow)
        {
            UInt32 RowHeight        = 284U;
            int    LeftIndentation  = -113;
            int    RightIndentation = -113;
            JustificationValues JustificationValue = JustificationValues.Center;
            int      FontSize = 11;
            TableRow tableRow = CalibrationLib.NewTableRow(RowHeight);

            int[] CellWidthValues = GetCellWidthValues(NewRow);

            TableCell TableCell1 = tableRow.AddTableCell(CellWidthValues[0], NewRow.Values[0], LeftIndentation, RightIndentation, JustificationValue, FontSize, NewRow.GridSpan[0]);

            TableCell1.SetBorders(BorderValues.Single, BorderValues.Single, BorderValues.Single, BorderValues.Single);
            TableCell TableCell2 = tableRow.AddTableCell(CellWidthValues[1], NewRow.Values[1], LeftIndentation, RightIndentation, JustificationValue, FontSize, NewRow.GridSpan[1]);

            TableCell2.SetBorders(BorderValues.Single, BorderValues.Single, BorderValues.Single, BorderValues.Single);
            TableCell TableCell3 = tableRow.AddTableCell(CellWidthValues[2], NewRow.Values[2], LeftIndentation, RightIndentation, JustificationValue, FontSize, NewRow.GridSpan[2]);

            TableCell3.SetBorders(BorderValues.Single, BorderValues.Single, BorderValues.Single, BorderValues.Single);
            TableCell TableCell4 = tableRow.AddTableCell(CellWidthValues[3], NewRow.Values[3], LeftIndentation, RightIndentation, JustificationValue, FontSize, NewRow.GridSpan[3]);

            TableCell4.SetBorders(BorderValues.Single, BorderValues.Single, BorderValues.Single, BorderValues.Single);
            return(tableRow);
        }
        /// <summary>
        /// Добавить новую таблицу в документ
        /// </summary>
        /// <param name="Protocol">Документ протокола.</param>
        /// <param name="NewTable">Объект таблицы.</param>
        /// <param name="InsertElement">Объект документа, перед которым требуется вставить таблицу.</param>
        static void AddNewTable(WordprocessingDocument Protocol, Table NewTable, OpenXmlElement InsertElement)
        {
            InsertElement.InsertBeforeSelf(CalibrationLib.NewParagraph(-113, -133, JustificationValues.Left, 11));
            InsertElement.InsertBeforeSelf((OpenXmlElement)NewTable);

            /*if (Protocol.MainDocumentPart.Document.Body.Elements<Table>().Count() > 0)
             * {
             *
             *  List<OpenXmlElement> NewList = Protocol.MainDocumentPart.Document.Body.Elements().ToList();
             *  int Index = NewList.Count - 4;
             *  NewList.Insert(Index, CalibrationLib.NewParagraph(-113, -133, JustificationValues.Left, 11));
             *  NewList.Insert(Index, (OpenXmlElement)NewTable);
             *  Protocol.MainDocumentPart.Document.Body.RemoveAllChildren();
             *  foreach (OpenXmlElement Element in NewList)
             *  { Protocol.MainDocumentPart.Document.Body.Append(Element); }
             *
             *
             * }
             * else
             * {
             *  SdtBlock Block = Protocol.MainDocumentPart.Document.Body.Elements<SdtBlock>().First();
             *  SdtContentBlock ContentBlock = Block.Elements<SdtContentBlock>().First();
             *  List<OpenXmlElement> NewList = ContentBlock.Elements().ToList();
             *  int Index = NewList.Count - 4;
             *  NewList.Insert(Index, CalibrationLib.NewParagraph(-113, -133, JustificationValues.Left, 11));
             *  NewList.Insert(Index, (OpenXmlElement)NewTable);
             *  ContentBlock.RemoveAllChildren();
             *  foreach (OpenXmlElement Element in NewList)
             *  { ContentBlock.Append(Element); }
             * }*/
        }
        /// <summary>
        /// Сформировать таблицу с данными измерений датчика.
        /// </summary>
        /// <param name="ParentDocument"> Родительский документ (из которого выгружаются данные). </param>
        /// <param name="SensorsNumber"> Заводской номер датчика. </param>
        /// <returns></returns>
        public Table GetSensorsTable(WordprocessingDocument ParentDocument, string SensorsNumber)
        {
            const int TableWidth = 9782;

            int[] ColumnsWidth = new int [] { 1277, 284, 1275, 5103, 1666, 177 };

            Table            table     = CalibrationLib.NewTable(ColumnsWidth);
            List <TablesRow> TableRows = GetRows(ParentDocument, SensorsNumber);

            TableRow tableRow1 = CalibrationLib.NewTableRow((UInt32Value)198U);

            tableRow1.AddTableCell(ColumnsWidth[0], TableRows[0].Values[0], -113, -113, JustificationValues.Right, 8, 1, true, true);
            tableRow1.AddTableCell(ColumnsWidth[1], TableRows[0].Values[1], -113, -113, JustificationValues.Center, 8, 1, true, true);
            tableRow1.AddTableCell(ColumnsWidth[2], TableRows[0].Values[2], -113, -113, JustificationValues.Center, 8, 1, true, true).SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Single, BorderValues.Nil);
            tableRow1.AddTableCell(ColumnsWidth[3] + ColumnsWidth[4] + ColumnsWidth[5], TableRows[0].Values[3], -113, -113, JustificationValues.Left, 8, 3, true, true);

            TableRow tableRow2 = CalibrationLib.NewTableRow((UInt32Value)198U);

            tableRow2.AddTableCell(ColumnsWidth[0] + ColumnsWidth[1] + ColumnsWidth[2] + ColumnsWidth[3], TableRows[1].Values[0], -113, -113, JustificationValues.Left, 8, 4);
            tableRow2.AddTableCell(ColumnsWidth[4] + ColumnsWidth[5], TableRows[1].Values[1], -113, -113, JustificationValues.Center, 12, 2, false, true).SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Dotted, BorderValues.Nil);

            table.Append(tableRow1);
            table.Append(tableRow2);

            return(table);
        }
        /// <summary>
        /// Сформировать таблицу с данными измерений датчика.
        /// </summary>
        /// <param name="ParentDocument"> Родительский документ (из которого выгружаются данные).</param>
        /// <param name="SensorsNumber"> Заводской номер прибора. </param>
        /// <returns></returns>
        public Table GetSensorsTable(WordprocessingDocument ParentDocument, string SensorsNumber)
        {
            Table            table     = CalibrationLib.NewTable(ColumnsWidth, 108);
            List <TablesRow> TableRows = GetRows(ParentDocument, SensorsNumber);

            int i = 0;

            foreach (TablesRow Row in TableRows)
            {
                i++;
                switch (Row.Type)
                {
                case TablesRow.RowsType.Title:
                    table.Append(NewTitle(Row));
                    break;

                case TablesRow.RowsType.Subtitle:
                    table.Append(NewSubtitle(Row));
                    break;

                case TablesRow.RowsType.Header:
                    table.Append(NewHeader(Row));
                    break;

                case TablesRow.RowsType.SimpleRow:
                    table.Append(NewSimpleRow(Row));
                    break;

                case TablesRow.RowsType.Result:
                    table.Append(NewResult(Row));
                    break;
                }
            }
            return(table);
        }
示例#5
0
        static void AddDeviceTables(WordprocessingDocument Certificate, UserSession Session, TablesCreator Creator, string DeviceType, CardData DeviceCard,
                                    DateTime StartDateOfService)
        {
            //WordprocessingDocument CalibrationProtocol = GetDocument(Session, DeviceCard, StartDateOfService, CalibrationProtocolCategoryID);
            //XtraMessageBox.Show("DeviceType = " + DeviceType);
            IEnumerable <CertificateTableLook> TablesCollection = Creator.CertificateDeviceTablesCollection.Where(r => r.DeviceTypes.Any(s => s == DeviceType));

            if (TablesCollection.Count() == 0)
            {
                XtraMessageBox.Show("Для прибра '" + DeviceType + "' не найден шаблон таблицы. Обратитесь к системному администратору.");
            }
            else
            {
                Dictionary <String, Table> TablesList = new Dictionary <String, Table>();
                foreach (CertificateTableLook CurrentTable in TablesCollection)
                {
                    WordprocessingDocument ParentDocument;
                    string TempPath = "";
                    switch (CurrentTable.ParentDocumentCategory)
                    {
                    case CertificateTableLook.DocumentCategory.AcceptanceTestingProtocol:
                        ParentDocument = CalibrationLib.GetDocument(Session, DeviceCard, CalibrationLib.AcceptanceTestingProtocolCategoryID, out TempPath);
                        break;

                    case CertificateTableLook.DocumentCategory.CalibrationProtocol:
                        ParentDocument = CalibrationLib.GetDocument(Session, DeviceCard, CalibrationLib.CalibrationProtocolCategoryID, out TempPath);
                        break;

                    case CertificateTableLook.DocumentCategory.MeasuringData:
                        ParentDocument = CalibrationLib.GetDocument(Session, DeviceCard, CalibrationLib.MeasuringDataCategoryID, out TempPath);
                        break;

                    default:
                        ParentDocument = null;
                        break;
                    }
                    if (TablesList.Any(r => r.Key == CurrentTable.TableName))
                    {
                        CurrentTable.AdditionDeviceTable(ParentDocument, TablesList.First(r => r.Key == CurrentTable.TableName).Value);
                    }
                    else
                    {
                        TablesList.Add(CurrentTable.TableName, CurrentTable.GetDeviceTable(ParentDocument));
                    }
                    //Certificate.MainDocumentPart.Document.Body.Append(CurrentTable.GetDeviceTable(ParentDocument));
                    //Certificate.MainDocumentPart.Document.Body.Append(CalibrationLib.NewParagraph(0, 0, JustificationValues.Left, 10));
                    if (ParentDocument != null)
                    {
                        ParentDocument.Close();
                        File.Delete(TempPath);
                    }
                }
                foreach (KeyValuePair <String, Table> T in TablesList)
                {
                    Certificate.MainDocumentPart.Document.Body.Append(T.Value);
                }
            }
        }
        /// <summary>
        /// Дополнить таблицу с данными измерений прибора.
        /// </summary>
        /// <param name="ParentDocument"> Родительский документ (из которого выгружаются данные). </param>
        /// <returns></returns>
        public Table AdditionDeviceTable(WordprocessingDocument ParentDocument, Table CurrentTable)
        {
            int TableWidth   = 9782;
            int ColumnsWidth = TableWidth / (ColumnsCount);

            int[] ColumnsWidthList = new int[ColumnsCount];
            for (int i = 0; i < ColumnsWidthList.Length; i++)
            {
                if (i == 0)
                {
                    ColumnsWidthList[i] = ColumnsWidth;
                }
                else
                {
                    ColumnsWidthList[i] = ColumnsWidth;
                }
            }

            Table table = CalibrationLib.NewTable(ColumnsWidthList);

            foreach (TablesRow Row in GetRows(ParentDocument))
            {
                if (Row.JoinToRow == 0)
                {
                    switch (Row.Type)
                    {
                    case TablesRow.RowsType.Title:
                        CurrentTable.Append(CreateTitle(Row, TableWidth));
                        break;

                    case TablesRow.RowsType.Header:
                        CurrentTable.Append(CreateHeader(Row, ColumnsWidthList));
                        break;

                    case TablesRow.RowsType.Subtitle:
                        CurrentTable.Append(CreateSubTitle(Row, TableWidth));
                        break;

                    case TablesRow.RowsType.SimpleRow:
                        CurrentTable.Append(CreateSimpleRow(Row, ColumnsWidthList));
                        break;

                    case TablesRow.RowsType.Result:
                        CurrentTable.Append(CreateResult(Row, TableWidth));
                        break;
                    }
                }
                else
                {
                    if (CurrentTable.Elements <TableRow>().Count() >= Row.JoinToRow)
                    {
                        TableRow CangingTableRow = CurrentTable.Elements <TableRow>().ElementAt(Row.JoinToRow - 1);
                        ChangingRow(Row, CangingTableRow);
                    }
                }
            }
            return(CurrentTable);
        }
示例#7
0
        static void AddTitle(WordprocessingDocument Certificate)
        {
            Paragraph paragraph = CalibrationLib.NewParagraph(-284, 141, JustificationValues.Center, 8);
            Run       run       = CalibrationLib.NewRun(14);

            run.Append(CalibrationLib.NewText("Действительные значения метрологических характеристик"));
            paragraph.Append(run);
            Certificate.MainDocumentPart.Document.Body.Append(paragraph);
            Certificate.MainDocumentPart.Document.Body.Append(CalibrationLib.NewParagraph(0, 0, JustificationValues.Center, 8));
        }
示例#8
0
        static void FillBookmarks(WordprocessingDocument Certificate, string DeviceType, string DeviceNumber, string DeviceNumber2, string ReceiptDate, string ClientName,
                                  string CalibrationDate, string CalibrationMethods, string Temperature, string Humidity, string AtmospherePressure, string CalibrationMeans)
        {
            CalibrationLib.ChangeCellsWidth(Certificate.GetTable("СЕРТИФИКАТ О КАЛИБРОВКЕ №"), 3, 0, DeviceType.Length);

            Dictionary <String, BookmarkStart> BookmarkDic = new Dictionary <String, BookmarkStart>();

            foreach (BookmarkStart Bookmark in Certificate.MainDocumentPart.RootElement.Descendants <BookmarkStart>())
            {
                BookmarkDic[Bookmark.Name] = Bookmark;
            }

            /* Запись закладочных полей */
            BookmarkDic["DeviceType"].WriteText(DeviceType);
            BookmarkDic["DeviceNumber"].WriteText(DeviceNumber);
            BookmarkDic["DeviceNumber2"].WriteText(DeviceNumber2);
            BookmarkDic["ReceiptDate"].WriteText(ReceiptDate);

            /*if (ClientName.Length > 55)
             * {
             *  int Length1 = ClientName.Substring(0, 50).LastIndexOf(" ");
             *  string Text1 = ClientName.Substring(0, Length1);
             *  BookmarkDic["ClientName"].WriteText(Text1);
             *
             *  ClientName = ClientName.Substring(Length1 + 1);
             *  Paragraph paragraph = (Paragraph)BookmarkDic["ClientName"].Parent;
             *  TableCell tableCell = (TableCell)paragraph.Parent;
             *  TableRow tableRow = (TableRow)tableCell.Parent;
             *  Table table = (Table)tableRow.Parent;
             *  int RowIndex = table.Elements().ToList().IndexOf(tableRow);
             *
             *  while (ClientName.Length > 90)
             *  {
             *      int LineLength = ClientName.Substring(0, 90).LastIndexOf(" ");
             *      string Text = ClientName.Substring(0, LineLength);
             *      ClientName = ClientName.Substring(LineLength + 1);
             *
             *      table.InsertLineForClient(RowIndex + 1, Text);
             *      RowIndex++;
             *  }
             *  table.InsertLineForClient(RowIndex + 1, ClientName);
             * }
             * else
             * {
             *  BookmarkDic["ClientName"].WriteText(ClientName);
             * }*/

            BookmarkDic["CalibrationDate"].WriteText(CalibrationDate);
            BookmarkDic["CalibrationMethods"].WriteText(CalibrationMethods);
            BookmarkDic["Temperature"].WriteText(Temperature);
            BookmarkDic["Humidity"].WriteText(Humidity);
            BookmarkDic["AtmospherePressure"].WriteText(AtmospherePressure);
            BookmarkDic["CalibrationMeans"].WriteText(CalibrationMeans);
        }
        /// <summary>
        /// Создать шапку таблицы.
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <param name="TableWidth"> Ширина столбца. </param>
        /// <returns></returns>
        internal TableRow CreateHeader(TablesRow NewRow, int[] ColumnsWidthList)
        {
            TableRow NewTableRow = CalibrationLib.NewTableRow((UInt32Value)284U);

            for (int i = 0; i < NewRow.ColumnsCount; i++)
            {
                TableCell NewTableCell = NewTableRow.AddTableCell(ColumnsWidthList[i], NewRow.Values[i], -113, -113, JustificationValues.Center, 12,
                                                                  NewRow.GridSpan[i], false, false, NewRow.VerticalMerge[i]);
                NewTableCell.SetBorders(BorderValues.Single, BorderValues.Single, BorderValues.Single, BorderValues.Single);
            }
            return(NewTableRow);
        }
        /// <summary>
        /// Создать заголовок таблицы.
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <param name="TableWidth"> Ширина столбца. </param>
        /// <returns></returns>
        internal TableRow CreateTitle(TablesRow NewRow, int TableWidth)
        {
            TableRow NewTableRow = CalibrationLib.NewTableRow((UInt32Value)284U);

            for (int i = 0; i < NewRow.ColumnsCount; i++)
            {
                TableCell NewTableCell = NewTableRow.AddTableCell(TableWidth / NewRow.ColumnsCount, NewRow.Values[i], -113, -113, JustificationValues.Left, 12,
                                                                  ColumnsCount, false, false);
                NewTableCell.SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Nil, BorderValues.Nil);
            }
            return(NewTableRow);
        }
        /// <summary>
        /// Создать результирующую строку таблицы.
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <param name="TableWidth"> Ширина столбца. </param>
        /// <returns></returns>
        internal TableRow CreateResult(TablesRow NewRow, int TableWidth)
        {
            TableRow NewTableRow = CalibrationLib.NewTableRow((UInt32Value)198U);

            for (int i = 0; i < NewRow.ColumnsCount; i++)
            {
                TableCell NewTableCell = NewTableRow.AddTableCell(TableWidth / NewRow.ColumnsCount, NewRow.Values[i], -113, -113, JustificationValues.Center, 8,
                                                                  NewRow.GridSpan[i], false, true, NewRow.VerticalMerge[i]);
                NewTableCell.SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Nil, BorderValues.Nil);
            }
            return(NewTableRow);
        }
        /// <summary>
        /// Создать подзаголовок таблицы.
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <param name="TableWidth"> Ширина столбца. </param>
        /// <returns></returns>
        internal TableRow CreateSubTitle(TablesRow NewRow, int TableWidth)
        {
            TableRow NewTableRow = CalibrationLib.NewTableRow((UInt32Value)198U);

            for (int i = 0; i < NewRow.ColumnsCount; i++)
            {
                TableCell NewTableCell = NewTableRow.AddTableCell(TableWidth / NewRow.ColumnsCount, NewRow.Values[0], -113, -113, JustificationValues.Center, 8,
                                                                  ColumnsCount, false, true);
                NewTableCell.SetBorders(BorderValues.Single, BorderValues.Single, BorderValues.Single, BorderValues.Single);
            }
            return(NewTableRow);
        }
        /// <summary>
        /// Создать обычную строку таблицы.
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <param name="TableWidth"> Ширина столбца. </param>
        /// <returns></returns>
        internal TableRow CreateSimpleRow(TablesRow NewRow, int[] ColumnsWidthList)
        {
            TableRow NewTableRow = CalibrationLib.NewTableRow((UInt32Value)198U);

            for (int i = 0; i < NewRow.ColumnsCount; i++)
            {
                bool      Italic       = i == 0 ? false : true;
                TableCell NewTableCell = NewTableRow.AddTableCell(ColumnsWidthList[i], NewRow.Values[i], -113, -113, JustificationValues.Center, 8,
                                                                  NewRow.GridSpan[i], false, Italic, NewRow.VerticalMerge[i]);
                NewTableCell.SetBorders(BorderValues.Single, BorderValues.Single, BorderValues.Single, BorderValues.Single);
            }
            return(NewTableRow);
        }
        /// <summary>
        /// Сформировать таблицу с данными измерений прибора.
        /// </summary>
        /// <param name="ParentDocument"> Родительский документ (из которого выгружаются данные). </param>
        /// <returns></returns>
        public Table GetDeviceTable(WordprocessingDocument ParentDocument)
        {
            int TableWidth = 9782;
            //if (ColumnsWidthList)
            int ColumnsWidth = TableWidth / (ColumnsCount);

            int[] ColumnsWidthList = new int[ColumnsCount];
            for (int i = 0; i < ColumnsWidthList.Length; i++)
            {
                if (i == 0)
                {
                    ColumnsWidthList[i] = ColumnsWidth;
                }
                else
                {
                    ColumnsWidthList[i] = ColumnsWidth;
                }
            }

            Table table = CalibrationLib.NewTable(ColumnsWidthList);

            foreach (TablesRow Row in GetRows(ParentDocument))
            {
                switch (Row.Type)
                {
                case TablesRow.RowsType.Title:
                    table.Append(CreateTitle(Row, TableWidth));
                    break;

                case TablesRow.RowsType.Header:
                    table.Append(CreateHeader(Row, ColumnsWidthList));
                    break;

                case TablesRow.RowsType.Subtitle:
                    table.Append(CreateSubTitle(Row, TableWidth));
                    break;

                case TablesRow.RowsType.SimpleRow:
                    table.Append(CreateSimpleRow(Row, ColumnsWidthList));
                    break;

                case TablesRow.RowsType.Result:
                    table.Append(CreateResult(Row, TableWidth));
                    break;
                }
            }
            return(table);
        }
        /// <summary>
        /// Создать новую шапку таблицы.
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <returns></returns>
        private TableRow NewHeader(TablesRow NewRow)
        {
            UInt32 RowHeight        = 284U;
            int    LeftIndentation  = -113;
            int    RightIndentation = -113;
            JustificationValues JustificationValue = JustificationValues.Left;
            int      FontSize = 11;
            TableRow tableRow = CalibrationLib.NewTableRow(RowHeight);

            int[] CellWidthValues = GetCellWidthValues(NewRow);

            TableCell TableCell1 = tableRow.AddTableCell(CellWidthValues[0], NewRow.Values[0], LeftIndentation, RightIndentation, JustificationValue, FontSize, NewRow.GridSpan[0]);

            TableCell1.SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Nil, BorderValues.Nil);
            return(tableRow);
        }
示例#16
0
        /// <summary>
        /// Сформировать таблицу с данными измерений прибора.
        /// </summary>
        /// <param name="JsonData"> Данные в формате json.. </param>
        /// <returns></returns>
        public Table GetDeviceTable(RootObject JsonData)
        {
            int TableWidth   = 10065;
            int ColumnsWidth = TableWidth / (ColumnsCount);

            int[] ColumnsWidthList = new int[ColumnsCount];
            for (int i = 0; i < ColumnsWidthList.Length; i++)
            {
                if (i == 0)
                {
                    ColumnsWidthList[i] = ColumnsWidth;
                }
                else
                {
                    ColumnsWidthList[i] = ColumnsWidth;
                }
            }

            Table table = CalibrationLib.NewTable(ColumnsWidthList, 108);

            foreach (TablesRow Row in GetRows(JsonData))
            {
                switch (Row.Type)
                {
                case TablesRow.RowsType.Title:
                    table.Append(CreateTitle(Row, TableWidth));
                    break;

                case TablesRow.RowsType.Header:
                    table.Append(CreateHeader(Row, ColumnsWidthList));
                    break;

                case TablesRow.RowsType.Subtitle:
                    table.Append(CreateSubTitle(Row, TableWidth));
                    break;

                case TablesRow.RowsType.SimpleRow:
                    table.Append(CreateSimpleRow(Row, ColumnsWidthList));
                    break;

                case TablesRow.RowsType.Result:
                    table.Append(CreateResult(Row, TableWidth));
                    break;
                }
            }
            return(table);
        }
        static void AddSensorTables(WordprocessingDocument Protocol, UserSession Session, TablesCreator Creator, string SensorType, CardData SensorCard,
                                    DateTime StartDateOfService, string DeviceTypeName)
        {
            string SensorNumber = SensorCard.GetDeviceNumber();
            IEnumerable <VerificationProtocolTableLook> TablesCollection = Creator.VerificationProtokolSensorTablesCollection.Where(r => r.DeviceTypes.Any(s => s == SensorType));

            if (TablesCollection.Count() == 0)
            {
                XtraMessageBox.Show("Для датчика '" + SensorType + "' не найден шаблон таблицы. Обратитесь к системному администратору.");
            }
            else
            {
                foreach (VerificationProtocolTableLook CurrentTable in TablesCollection)
                {
                    WordprocessingDocument ParentDocument;
                    string TempPath = "";
                    switch (CurrentTable.ParentDocumentCategory)
                    {
                    case VerificationProtocolTableLook.DocumentCategory.AcceptanceTestingProtocol:
                        ParentDocument = CalibrationLib.GetDocument(Session, SensorCard, CalibrationLib.AcceptanceTestingProtocolCategoryID, out TempPath);
                        break;

                    case VerificationProtocolTableLook.DocumentCategory.CalibrationProtocol:
                        ParentDocument = CalibrationLib.GetDocument(Session, SensorCard, CalibrationLib.CalibrationProtocolCategoryID, out TempPath);
                        break;

                    case VerificationProtocolTableLook.DocumentCategory.MeasuringData:
                        ParentDocument = CalibrationLib.GetDocument(Session, SensorCard, CalibrationLib.MeasuringDataCategoryID, out TempPath);
                        break;

                    default:
                        ParentDocument = null;
                        break;
                    }

                    Table NewSensorTable = CurrentTable.GetSensorsTable(ParentDocument, SensorNumber, DeviceTypeName);

                    AddNewTable(Protocol, NewSensorTable, Protocol.GetTable("Заключение:").ElementsBefore().Last());
                    if (ParentDocument != null)
                    {
                        ParentDocument.Close();
                        File.Delete(TempPath);
                    }
                }
            }
            return;
        }
示例#18
0
        public static void ReFill(CardData FileCard, ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                  DateTime CalibrationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, DateTime StartDateOfCalibration)
        {
            string ClientName = Client.Equals(Guid.Empty) ? "СКБ ЭП" : Context.GetObject <PartnersCompany>(Client).Name;

            WordprocessingDocument Certificate = CalibrationLib.GetCalibrationCertificateTemplate(CardScript.Session);

            // Заполнение данных сертификата
            FillData(Certificate, CardScript, Context, DeviceCard, ClientName, CalibrationDate, AdditionalWaresList, StartDateOfService, StartDateOfCalibration);
            // Сохранение изменений
            Certificate.MainDocumentPart.Document.Save();
            // Закрытие сертификата
            Certificate.Close();
            // Замена файла в карточке сертификата
            CalibrationLib.RefreshFileCard(Context, CardScript, FileCard, CalibrationLib.TempFolder + "\\" + "Сертификат о калибровке.docx", CalibrationDate, DeviceCard, ClientName, "", true);
            return;
        }
        /// <summary>
        /// Создать обычную строку
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <returns></returns>
        private TableRow NewSimpleRow(TablesRow NewRow)
        {
            UInt32 RowHeight        = 284U;
            int    LeftIndentation  = -113;
            int    RightIndentation = -113;
            JustificationValues JustificationValue = JustificationValues.Center;
            int      FontSize = 11;
            TableRow tableRow = CalibrationLib.NewTableRow(RowHeight);

            int[] CellWidthValues = GetCellWidthValues(NewRow);

            for (int i = 0; i < NewRow.Values.Count(); i++)
            {
                TableCell tableCell = tableRow.AddTableCell(CellWidthValues[i], NewRow.Values[i], LeftIndentation, RightIndentation, JustificationValue, FontSize, NewRow.GridSpan[i]);
                tableCell.SetBorders(BorderValues.Single, BorderValues.Single, BorderValues.Single, BorderValues.Single);
            }
            return(tableRow);
        }
示例#20
0
 static void InsertLineForClient(this Table table, int Index, string Text)
 {
     try
     {
         TableRow  newTableRow = CalibrationLib.NewTableRow();
         int       CellWidth1  = 10065;
         TableCell TableCell1  = newTableRow.AddTableCell(CellWidth1, Text, -113, -113, JustificationValues.Left, 12, 12);
         TableCell1.SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Single, BorderValues.Nil);
         List <OpenXmlElement> NewList = table.Elements().ToList();
         NewList.Insert(Index, newTableRow);
         table.RemoveAllChildren();
         foreach (OpenXmlElement Element in NewList)
         {
             table.Append(Element);
         }
     }
     catch { }
 }
        /// <summary>
        /// Обновление "Извещения о непригодности".
        /// </summary>
        /// <param name="FileCard"> Карточка файла, содержащая "Извещение о непригодности".</param>
        /// <param name="CardScript"> Скрипт карточки.</param>
        /// <param name="Context"> Объектный контекст.</param>
        /// <param name="DeviceCard"> Карточка паспорта прибора.</param>
        /// <param name="Client"> Наименование клиента.</param>
        /// <param name="VerificationDate"> Дата проведения поверки.</param>
        /// <param name="AdditionalWaresList"> Перечень дополнительных изделий.</param>
        /// <param name="StartDateOfService"> Дата передачи прибора на поверку.</param>
        /// <param name="CausesOfUnfitness"> Причина непригодности.</param>
        /// <returns></returns>
        public static void ReFill(CardData FileCard, ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                  DateTime VerificationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, string CausesOfUnfitness)
        {
            string ClientName = Client.Equals(Guid.Empty) ? "ООО \"СКБ ЭП\"" : Context.GetObject <PartnersCompany>(Client).Name;
            // Серия и номер знака предыдущей поверки
            string PreviousVerifySerialNumber = "отсутствует";
            // Получаем последнее свидетельство о поверке
            CardData PreviousVerificationCertificate = CalibrationLib.GetDocumentCard(CardScript.Session, DeviceCard, CalibrationLib.VerificationCertificateCategoryID);

            if (PreviousVerificationCertificate != null)
            {
                if (PreviousVerificationCertificate.Id == FileCard.Id)
                {
                    PreviousVerifySerialNumber = "отсутствует";
                }
                else
                {
                    try
                    {
                        if (PreviousVerificationCertificate.GetDocumentProperty(CalibrationLib.DocumentProperties.VerifySerialNumber) != null)
                        {
                            String OldSerialNumber = PreviousVerificationCertificate.GetDocumentProperty(CalibrationLib.DocumentProperties.VerifySerialNumber).ToString();
                            PreviousVerifySerialNumber = OldSerialNumber == "" ? PreviousVerifySerialNumber : OldSerialNumber;
                        }
                    }
                    catch
                    { PreviousVerifySerialNumber = "отсутствует"; }
                }
            }

            WordprocessingDocument Document = CalibrationLib.GetNoticeOfUnfitnessTemplate(CardScript.Session);

            // Заполнение данных Извещения
            FillData(Document, CardScript, Context, DeviceCard, ClientName, VerificationDate, AdditionalWaresList, StartDateOfService, PreviousVerifySerialNumber, CausesOfUnfitness);
            // Сохранение изменений
            Document.MainDocumentPart.Document.Save();
            // Закрытие Извещения
            Document.Close();
            // Замена файла в карточке Извещения
            CalibrationLib.RefreshFileCard(Context, CardScript, FileCard, CalibrationLib.TempFolder + "\\" + "Извещение о непригодности.docx", VerificationDate, DeviceCard, ClientName, "отсутствует", false,
                                           CalibrationLib.NoticeOfUnfitnessCategoryID);
            return;
        }
示例#22
0
        static void AddSensorTables(WordprocessingDocument Certificate, UserSession Session, TablesCreator Creator, string DeviceType, string DeviceNumber,
                                    CardData DeviceCard, DateTime StartDateOfService)
        {
            IEnumerable <CertificateTableLook> TablesCollection = Creator.CertificateSensorTablesCollection.Where(r => r.DeviceTypes.Any(s => s == DeviceType));

            if (TablesCollection.Count() == 0)
            {
                XtraMessageBox.Show("Для датчика '" + DeviceType + "' не найден шаблон таблицы. Обратитесь к системному администратору.");
            }
            else
            {
                foreach (CertificateTableLook CurrentTable in TablesCollection)
                {
                    WordprocessingDocument ParentDocument;
                    string TempPath = "";
                    switch (CurrentTable.ParentDocumentCategory)
                    {
                    case CertificateTableLook.DocumentCategory.AcceptanceTestingProtocol:
                        ParentDocument = CalibrationLib.GetDocument(Session, DeviceCard, CalibrationLib.AcceptanceTestingProtocolCategoryID, out TempPath);
                        break;

                    case CertificateTableLook.DocumentCategory.CalibrationProtocol:
                        ParentDocument = CalibrationLib.GetDocument(Session, DeviceCard, CalibrationLib.CalibrationProtocolCategoryID, out TempPath);
                        break;

                    case CertificateTableLook.DocumentCategory.MeasuringData:
                        ParentDocument = CalibrationLib.GetDocument(Session, DeviceCard, CalibrationLib.MeasuringDataCategoryID, out TempPath);
                        break;

                    default:
                        ParentDocument = null;
                        break;
                    }
                    Certificate.MainDocumentPart.Document.Body.Append(CurrentTable.GetSensorsTable(ParentDocument, DeviceNumber));
                    //Certificate.MainDocumentPart.Document.Body.Append(CalibrationLib.NewParagraph(0, 0, JustificationValues.Left, 10));
                    if (ParentDocument != null)
                    {
                        ParentDocument.Close();
                        File.Delete(TempPath);
                    }
                }
            }
        }
示例#23
0
        /// <summary>
        /// Переформировать свидетельство о поверке.
        /// </summary>
        /// <param name="FileCard"> Карточка файла.</param>
        /// <param name="CardScript"> Скрипт.</param>
        /// <param name="Context"> Объектный контекст.</param>
        /// <param name="DeviceCard"> Карточка прибора.</param>
        /// <param name="Client"> Идентификатор клиента.</param>
        /// <param name="CalibrationDate"> Дата проведения поверки.</param>
        /// <param name="AdditionalWaresList"> Перечень дополнительных изделий.</param>
        /// <param name="StartDateOfService"> Дата передачи на поверку.</param>
        /// <param name="VerifySerialNumber"> Серийный номер поверки.</param>
        public static void ReFill(CardData FileCard, ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                  DateTime CalibrationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, string VerifySerialNumber)
        {
            string ClientName = Client.Equals(Guid.Empty) ? "ООО \"СКБ ЭП\"" : Context.GetObject <PartnersCompany>(Client).Name;

            string PreviousVerifySerialNumber = "-";
            // Получаем последнее свидетельство о поверке
            CardData PreviousVerificationCertificate = CalibrationLib.GetDocumentCard(CardScript.Session, DeviceCard, CalibrationLib.VerificationCertificateCategoryID);

            if (PreviousVerificationCertificate != null)
            {
                if (PreviousVerificationCertificate.Id == FileCard.Id)
                {
                    PreviousVerifySerialNumber = "-";
                }
                else
                {
                    try
                    {
                        if (PreviousVerificationCertificate.GetDocumentProperty(CalibrationLib.DocumentProperties.VerifySerialNumber) != null)
                        {
                            String OldSerialNumber = PreviousVerificationCertificate.GetDocumentProperty(CalibrationLib.DocumentProperties.VerifySerialNumber).ToString();
                            PreviousVerifySerialNumber = OldSerialNumber == "" ? PreviousVerifySerialNumber : OldSerialNumber;
                        }
                    }
                    catch
                    { PreviousVerifySerialNumber = "-"; }
                }
            }

            WordprocessingDocument Certificate = CalibrationLib.GetVerificationCertificateTemplate(CardScript.Session);

            // Заполнение данных сертификата
            FillData(Certificate, CardScript, Context, DeviceCard, ClientName, CalibrationDate, AdditionalWaresList, StartDateOfService, PreviousVerifySerialNumber);
            // Сохранение изменений
            Certificate.MainDocumentPart.Document.Save();
            // Закрытие сертификата
            Certificate.Close();
            // Замена файла в карточке сертификата
            CalibrationLib.RefreshFileCard(Context, CardScript, FileCard, CalibrationLib.TempFolder + "\\" + "Свидетельство о поверке.docx", CalibrationDate, DeviceCard, ClientName, VerifySerialNumber,
                                           false, CalibrationLib.VerificationCertificateCategoryID);
            return;
        }
        public static void ReFill(CardData FileCard, ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                  DateTime CalibrationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService)
        {
            Guid   DeviceTypeID   = DeviceCard.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Прибор'").GetString(CardOrd.Properties.Value).ToGuid();
            string DeviceTypeName = ApplicationCard.UniversalCard.GetItemName(DeviceTypeID);
            string ClientName     = Client.Equals(Guid.Empty) ? "СКБ ЭП" : Context.GetObject <PartnersCompany>(Client).Name;

            WordprocessingDocument Protocol = CalibrationLib.GetCalibrationProtocolTemplate(CardScript.Session, DeviceTypeName);

            // Заполнение данных протокола
            FillData(Protocol, CardScript, Context, DeviceCard, CalibrationDate, AdditionalWaresList, StartDateOfService);
            // Сохранение изменений
            Protocol.MainDocumentPart.Document.Save();
            // Закрытие протокола
            Protocol.Close();
            // Замена файла в карточке протокола
            CalibrationLib.RefreshFileCard(Context, CardScript, FileCard, CalibrationLib.TempFolder + "\\" + "Протокол калибровки " + DeviceTypeName.Replace("/", "-") + ".docm", CalibrationDate, DeviceCard,
                                           ClientName, "", true);
            return;
        }
        /// <summary>
        /// Создание "Извещения о неригодности"
        /// </summary>
        /// <param name="CardScript"> Скрипт карточки.</param>
        /// <param name="Context"> Объектный контекст.</param>
        /// <param name="DeviceCard"> Карточка паспорта прибора.</param>
        /// <param name="Client"> Наименование клиента.</param>
        /// <param name="VerificationDate"> Дата проведения поверки.</param>
        /// <param name="AdditionalWaresList"> Перечень дополнительных изделий.</param>
        /// <param name="StartDateOfService"> Дата передачи прибора на поверку.</param>
        /// <param name="VerifySerialNumber"> Серийный номер поверки.</param>
        /// <param name="CausesOfUnfitness"> Причина непригодности.</param>
        /// <param name="IsNewDevice"> Новый прибор.</param>
        /// <returns></returns>
        public static CardData Create(ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                      DateTime VerificationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, string VerifySerialNumber, string CausesOfUnfitness, bool IsNewDevice = false)
        {
            string ClientName = Client.Equals(Guid.Empty) ? "ООО \"СКБ ЭП\"" : Context.GetObject <PartnersCompany>(Client).Name;

            // Серия и номер знака предыдущей поверки
            string PreviousVerifySerialNumber = "отсутствует";
            // Получаем последнее свидетельство о поверке
            CardData PreviousVerificationCertificate = CalibrationLib.GetDocumentCard(CardScript.Session, DeviceCard, CalibrationLib.VerificationCertificateCategoryID);

            try
            {
                if (PreviousVerificationCertificate.Id != null)
                {
                    if (PreviousVerificationCertificate.GetDocumentProperty(CalibrationLib.DocumentProperties.VerifySerialNumber) != null)
                    {
                        String OldSerialNumber = PreviousVerificationCertificate.GetDocumentProperty(CalibrationLib.DocumentProperties.VerifySerialNumber).ToString();
                        PreviousVerifySerialNumber = OldSerialNumber == "" ? PreviousVerifySerialNumber : OldSerialNumber;
                    }
                }
            }
            catch
            { PreviousVerifySerialNumber = "отсутствует"; }

            WordprocessingDocument Document = CalibrationLib.GetNoticeOfUnfitnessTemplate(CardScript.Session);

            // Заполнение данных Извещения
            FillData(Document, CardScript, Context, DeviceCard, ClientName, VerificationDate, AdditionalWaresList, StartDateOfService, PreviousVerifySerialNumber, CausesOfUnfitness);
            // Сохранение изменений
            Document.MainDocumentPart.Document.Save();
            // Закрытие Извещения
            Document.Close();
            // Создание карточки Извещения
            CardData NewFileCard = CalibrationLib.NewFileCard(Context, CardScript.Session, CalibrationLib.NoticeOfUnfitnessCategoryID, CalibrationLib.TempFolder + "\\" + "Извещение о непригодности.docx", VerificationDate,
                                                              DeviceCard, ClientName, VerifySerialNumber, false, IsNewDevice);

            // Прикрепление карточки Извещения к карточке паспорта прибора
            CalibrationLib.AttachFileToCard(CardScript.Session, DeviceCard, NewFileCard);

            return(NewFileCard);
        }
示例#26
0
        public static CardData Create(ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                      DateTime CalibrationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, DateTime StartDateOfCalibration, bool NewDevice = false)
        {
            string ClientName = Client.Equals(Guid.Empty) ? "СКБ ЭП" : Context.GetObject <PartnersCompany>(Client).Name;
            WordprocessingDocument Certificate = CalibrationLib.GetCalibrationCertificateTemplate(CardScript.Session);

            // Заполнение данных сертификата
            FillData(Certificate, CardScript, Context, DeviceCard, ClientName, CalibrationDate, AdditionalWaresList, StartDateOfService, StartDateOfCalibration);
            // Сохранение изменений
            Certificate.MainDocumentPart.Document.Save();
            // Закрытие сертификата
            Certificate.Close();
            // Создание карточки сертификата
            CardData NewFileCard = CalibrationLib.NewFileCard(Context, CardScript.Session, CalibrationLib.CalibrationCertificateCategoryID, CalibrationLib.TempFolder + "\\" + "Сертификат о калибровке.docx", CalibrationDate,
                                                              DeviceCard, ClientName, "", true, NewDevice);

            // Прикрепление карточки сертификата к карточке паспорта прибора
            CalibrationLib.AttachFileToCard(CardScript.Session, DeviceCard, NewFileCard);

            return(NewFileCard);
        }
示例#27
0
        /// <summary>
        /// Создать новую результирующую строку.
        /// </summary>
        /// <param name="NewRow"> Строка таблицы. </param>
        /// <returns></returns>
        private TableRow NewResult(TablesRow NewRow)
        {
            UInt32   RowHeight        = 284U;
            int      LeftIndentation  = -57;
            int      RightIndentation = -57;
            int      FontSize         = 10;
            TableRow tableRow         = CalibrationLib.NewTableRow(RowHeight);

            int[] CellWidthValues = GetCellWidthValues(NewRow);

            TableCell TableCell1 = tableRow.AddTableCell(CellWidthValues[0], NewRow.Values[0], LeftIndentation, RightIndentation, JustificationValues.Left, FontSize, NewRow.GridSpan[0]);

            TableCell1.SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Nil, BorderValues.Nil);
            TableCell TableCell2 = tableRow.AddTableCell(CellWidthValues[1], NewRow.Values[1], LeftIndentation, RightIndentation, JustificationValues.Center, FontSize, NewRow.GridSpan[1]);

            TableCell2.SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Single, BorderValues.Nil);
            TableCell TableCell3 = tableRow.AddTableCell(CellWidthValues[2], NewRow.Values[2], LeftIndentation, RightIndentation, JustificationValues.Left, FontSize, NewRow.GridSpan[2]);

            TableCell3.SetBorders(BorderValues.Nil, BorderValues.Nil, BorderValues.Nil, BorderValues.Nil);
            return(tableRow);
        }
示例#28
0
        /// <summary>
        /// Создать свидетельство о поверке.
        /// </summary>
        /// <param name="CardScript"> Скрипт.</param>
        /// <param name="Context"> Объектный контекст.</param>
        /// <param name="DeviceCard"> Карточка прибора.</param>
        /// <param name="Client"> Идентификатор клиента.</param>
        /// <param name="CalibrationDate"> Дата проведения поверки.</param>
        /// <param name="AdditionalWaresList"> Перечень дополнительных изделий.</param>
        /// <param name="StartDateOfService"> Дата передачи на поверку.</param>
        /// <param name="VerifySerialNumber"> Серийный номер поверки.</param>
        /// <param name="NewDevice"> Метка нового прибора.</param>
        /// <returns></returns>
        public static CardData Create(ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                      DateTime CalibrationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, string VerifySerialNumber, bool NewDevice = false)
        {
            string ClientName = Client.Equals(Guid.Empty) ? "ООО \"СКБ ЭП\"" : Context.GetObject <PartnersCompany>(Client).Name;

            string PreviousVerifySerialNumber = "-";
            // Получаем последнее свидетельство о поверке
            CardData PreviousVerificationCertificate = CalibrationLib.GetDocumentCard(CardScript.Session, DeviceCard, CalibrationLib.VerificationCertificateCategoryID);

            if (PreviousVerificationCertificate != null)
            {
                try
                {
                    if (PreviousVerificationCertificate.GetDocumentProperty(CalibrationLib.DocumentProperties.VerifySerialNumber) != null)
                    {
                        String OldSerialNumber = PreviousVerificationCertificate.GetDocumentProperty(CalibrationLib.DocumentProperties.VerifySerialNumber).ToString();
                        PreviousVerifySerialNumber = OldSerialNumber == "" ? PreviousVerifySerialNumber : OldSerialNumber;
                    }
                }
                catch
                { PreviousVerifySerialNumber = "-"; }
            }

            WordprocessingDocument Certificate = CalibrationLib.GetVerificationCertificateTemplate(CardScript.Session);

            // Заполнение данных сертификата
            FillData(Certificate, CardScript, Context, DeviceCard, ClientName, CalibrationDate, AdditionalWaresList, StartDateOfService, PreviousVerifySerialNumber);
            // Сохранение изменений
            Certificate.MainDocumentPart.Document.Save();
            // Закрытие сертификата
            Certificate.Close();
            // Создание карточки сертификата
            CardData NewFileCard = CalibrationLib.NewFileCard(Context, CardScript.Session, CalibrationLib.VerificationCertificateCategoryID, CalibrationLib.TempFolder + "\\" + "Свидетельство о поверке.docx",
                                                              CalibrationDate, DeviceCard, ClientName, VerifySerialNumber, false, NewDevice);

            // Прикрепление карточки сертификата к карточке паспорта прибора
            CalibrationLib.AttachFileToCard(CardScript.Session, DeviceCard, NewFileCard);

            return(NewFileCard);
        }
        public static CardData Create(ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                      DateTime VerificationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, bool IsPrimaryVerification)
        {
            Guid   DeviceTypeID             = DeviceCard.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Прибор'").GetString(CardOrd.Properties.Value).ToGuid();
            string DeviceTypeName           = ApplicationCard.UniversalCard.GetItemName(DeviceTypeID);
            string ClientName               = Client.Equals(Guid.Empty) ? "ООО \"СКБ ЭП\"" : Context.GetObject <PartnersCompany>(Client).Name;
            WordprocessingDocument Protocol = CalibrationLib.GetVerificationProtocolTemplate(CardScript.Session, DeviceTypeName);

            // Заполнение данных протокола
            FillData(Protocol, CardScript, Context, DeviceCard, VerificationDate, ClientName, AdditionalWaresList, StartDateOfService, IsPrimaryVerification);
            // Сохранение изменений
            Protocol.MainDocumentPart.Document.Save();
            // Закрытие сертификата
            Protocol.Close();
            // Создание карточки протокола калибровки
            CardData ProtocolFileCard = CalibrationLib.NewFileCard(Context, CardScript.Session, CalibrationLib.VerificationProtocolCategoryID,
                                                                   CalibrationLib.TempFolder + "\\" + "Протокол поверки " + DeviceTypeName.Replace("/", "-") + ".docm", VerificationDate, DeviceCard, ClientName, "", false);

            // Прикрепление карточки протокола калировки к карточке паспорта прибора
            CalibrationLib.AttachFileToCard(CardScript.Session, DeviceCard, ProtocolFileCard);
            return(ProtocolFileCard);
        }
示例#30
0
        public static bool Verify(ScriptClassBase CardScript, ObjectContext Context, CardData DeviceCard, Guid Client,
                                  DateTime CalibrationDate, List <CardData> AdditionalWaresList, DateTime StartDateOfService, bool IsNewDevice = false)
        {
            string ErrorText = "";

            Guid   DeviceTypeID   = DeviceCard.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Прибор'").GetString(CardOrd.Properties.Value).ToGuid();
            string DeviceTypeName = ApplicationCard.UniversalCard.GetItemName(DeviceTypeID);
            string DeviceNumber   = DeviceCard.GetDeviceNumber();

            // Наличие в справочнике полного названия прибора
            if (ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Полное название") == null)
            {
                ErrorText = ErrorText + " - Не удалось определить полное название прибора.\n";
            }

            // Наличие в справочнике методики поверки
            if (ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Методика поверки") == null)
            {
                ErrorText = ErrorText + " - Не удалось определить методику поверки для указанного прибора.\n";
            }

            // Наличие в справочнике средств калибровки
            //if (ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Средства калибровки") == null)
            if (CalibrationLib.GetListOfMeasures(CardScript.Session, DeviceTypeID, true, false) == "-")
            {
                ErrorText = ErrorText + " - Не удалось определить средства калибровки для указанного прибора.\n";
            }

            // Наличие сведений об условиях калибровки на указанную дату калибровки
            ErrorText = ErrorText + CalibrationLib.CheckCalibrationJournal(CardScript, Context, CalibrationDate);


            //** Проверка родительских документов **//
            TablesCreator Creator         = new TablesCreator();
            string        DeviceErrorText = "";

            // Проверка протокола калибровки прибора
            if (Creator.CertificateDeviceTablesCollection.Any(r => r.DeviceTypes.Any(s => s == DeviceTypeName) && r.ParentDocumentCategory == CertificateTableLook.DocumentCategory.CalibrationProtocol))
            {
                DeviceErrorText = CalibrationLib.CheckDocument(CardScript.Session, DeviceCard, StartDateOfService, CalibrationLib.CalibrationProtocolCategoryID, IsNewDevice);
                if (DeviceErrorText != "")
                {
                    ErrorText = ErrorText + " - Не удалось найти данные о калибровке для " + DeviceTypeName + " " + DeviceNumber + ":\n" + DeviceErrorText;
                }
            }

            // Проверка данных измерений для некоторых приборов
            //if (CalibrationLib.MeasuringDataList.Any(r => r == DeviceTypeName))
            if (Creator.CertificateDeviceTablesCollection.Any(r => r.DeviceTypes.Any(s => s == DeviceTypeName) && r.ParentDocumentCategory == CertificateTableLook.DocumentCategory.MeasuringData))
            {
                DeviceErrorText = CalibrationLib.CheckDocument(CardScript.Session, DeviceCard, StartDateOfService, CalibrationLib.MeasuringDataCategoryID, IsNewDevice);
                if (DeviceErrorText != "")
                {
                    ErrorText = ErrorText + " - Не удалось найти данные измерений для " + DeviceTypeName + " " + DeviceNumber + ":\n" + DeviceErrorText;
                }
            }

            // Проверка протоколов приемосдаточных испытаний для датчиков
            if ((AdditionalWaresList != null) && (AdditionalWaresList.Count() > 0))
            {
                foreach (CardData Ware in AdditionalWaresList)
                {
                    Guid   WareTypeID   = Ware.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Прибор'").GetString(CardOrd.Properties.Value).ToGuid();
                    string WareTypeName = ApplicationCard.UniversalCard.GetItemName(WareTypeID);

                    if (CalibrationLib.SensorsList.Any(r => r == WareTypeName))
                    {
                        string WareNumber = Ware.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Заводской номер прибора'").GetString(CardOrd.Properties.Value).ToString();
                        string WareYear   = Ware.Sections[CardOrd.Properties.ID].FindRow("@Name = '/Год прибора'").GetString(CardOrd.Properties.Value).ToString();
                        WareNumber = WareNumber.Length == 4 ? WareNumber : WareNumber + "/" + WareYear;

                        string SensorsErrorText = CalibrationLib.CheckDocument(CardScript.Session, Ware, StartDateOfService, CalibrationLib.AcceptanceTestingProtocolCategoryID, IsNewDevice);
                        if (SensorsErrorText != "")
                        {
                            ErrorText = ErrorText + " - Не удалось найти данные о приемосдаточных испытаниях для " + WareTypeName + " " + WareNumber + ":\n" + SensorsErrorText;
                        }
                    }
                }
            }
            if (ErrorText == "")
            {
                return(true);
            }
            else
            {
                XtraMessageBox.Show("Не удалось сформировать 'Сертификат о калибровке'. Обнаружены следующие ошибки:\n\n" + ErrorText +
                                    "\nОбратитесь к администратору системы.", "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return(false);
            }
        }