/// <summary>
        /// Заполнение данных Протокола поверки.
        /// </summary>
        /// <param name="Protocol">Документ протокола поверки.</param>
        /// <param name="CardScript">Скрипт карточки.</param>
        /// <param name="Context">Объектный контекст.</param>
        /// <param name="DeviceCard">Карточка прибора.</param>
        /// <param name="VerificationDate">Дата проведения поверки.</param>
        /// <param name="ClientName">Наименование клиента.</param>
        /// <param name="AdditionalWaresList">Перечень доп. изделий.</param>
        /// <param name="StartDateOfService">Дата поступления на серивсное обслуживание.</param>
        /// <param name="IsPrimaryVerification">Флаг первичной поверки.</param>
        public static void FillData(WordprocessingDocument Protocol, ScriptClassBase CardScript, ObjectContext Context,
                                    CardData DeviceCard, DateTime VerificationDate, string ClientName, List <CardData> AdditionalWaresList, DateTime StartDateOfService, bool IsPrimaryVerification)
        {
            // ====== Получение информации для заполнения закладочных полей в протоколе поверки ===== //

            // Идентификатор типа прибора определяется из карточки "Паспорта прибора"
            Guid DeviceTypeID = DeviceCard.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Прибор'").GetString(CardOrd.Properties.Value).ToGuid();
            // Тип поверки определяется из входных данных (если прибор новый или после ремонта, то тип поверки - "первичная", если прибор клиента после калибровки/поверки - то тип поверки - "периодическая")
            string VerificationType = IsPrimaryVerification ? "ПЕРВИЧНОЙ" : "ПЕРИОДИЧЕСКОЙ";
            // Краткое название прибора определяется из универсального справочника типа "Приборы и комплектующие"
            string DeviceTypeName = ApplicationCard.UniversalCard.GetItemName(DeviceTypeID);
            // Полное официальное название прибора определяется из универсального справочника типа "Приборы и комплектующие"
            string DisplayDeviceTypeName = ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Полное название").ToString() + " " + DeviceTypeName;
            // Перечень дополнительных изделий определяется из входного параметра AdditionalWaresList
            string AdditionalWares = (AdditionalWaresList.Count > 0 ? "c датчиками " : "") + AdditionalWaresList.Select(r =>
                                                                                                                        ApplicationCard.UniversalCard.GetItemName(r.Sections[CardOrd.Properties.ID].FindRow("@Name = 'Прибор'").GetString(CardOrd.Properties.Value).ToGuid()) + " № " + (r.GetDeviceNumber().Contains("/") == true ? r.GetDeviceNumber().Replace("/", " (") + " г)" : r.GetDeviceNumber())).Aggregate(AdditionalWaresList.Count == 2 ? " и " : ", ");
            // Заводской номер прибора определяется из карточки "Паспорта прибора"
            string DeviceNumber = DeviceCard.GetDeviceNumber() + " " + AdditionalWares;
            // Дата проведения поверки определяется из входного параметра VerificationDate
            string VerificationDateString = VerificationDate.ToLongDateString();
            // ФИО текущего сотрудника определяется из справочника сотрудников (строка отображения)
            string StaffName = Context.GetCurrentEmployee().DisplayString;
            // ФИО руководителя отдела Метрологической лаборатории определяется из справочника сотрудников по должности
            string ManagerName = Context.GetEmployeeByPosition(SKB.Base.Ref.RefServiceCard.Roles.MetrologicalLabManager) != null?Context.GetEmployeeByPosition(SKB.Base.Ref.RefServiceCard.Roles.MetrologicalLabManager).DisplayString : "";

            // Методика поверки определяется из универсального справочника типа "Пиборы и комплектующие"
            string VerificationMethods = ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Методика поверки").ToString();
            // Дата выпуска прибора определяется из карточки "Паспорта прибора" (если в истории прибора есть строка о поступлени прибора на калибровку, то берется дата поступления на калибровку, если нет - то берется год прибора).
            string DateOfIssue = DeviceCard.GetDeviceDateOfIssue();

            // Перечень эталонов определяется из карточек "Оборудование" (отбираются все карточки "Оборудование", в которых указано, что данное оборудование является эталоном и используется для поверки текущего типа прибора).
            // Перечень эталонов разбивается на две части по количеству символов (для вставки в разные строки протокола поверки).
            string VerificationMeans  = "";
            string VerificationMeans2 = "";

            CalibrationLib.GetListOfMeasures(CardScript.Session, DeviceTypeID, false, true, 4, out VerificationMeans, out VerificationMeans2);
            // Перечень вспомогательных средств поверки определяется из карточек "Оборудование" (отбираются все карточки "Оборудование", в которых указано, что данное оборудование является вспомогательным средством поверки и используется для поверки текущего типа прибора)
            // Перечень вспомогательных средств поверки разбивается на две части по количеству символов (для вставки в разные строки протокола поверки).
            string AuxiliaryMeshuring  = "";
            string AuxiliaryMeshuring2 = "";

            CalibrationLib.GetListOfAuxiliaryMeasures(CardScript.Session, DeviceTypeID, false, true, 3, out AuxiliaryMeshuring, out AuxiliaryMeshuring2);

            // Значения влияющих факторов (температура, влажность, атмосферное давление) определяются из конструктора справочников, из узла "Журнал условий поверки".
            // Если прибор = МИКО-21, то значение атмосферного давления корректируется.
            // Определяются только в режиме авторматического заполнения протокола поверки.
            string Temperature;
            string Humidity;
            string AtmospherePressure;

            CalibrationLib.GetCalibrationConditions(CardScript.Session, Context, VerificationDate, out Temperature, out Humidity, out AtmospherePressure);
            if (DeviceTypeName == "МИКО-21")
            {
                AtmospherePressure = Math.Round(Convert.ToDouble(AtmospherePressure) / 7.501, 1).ToString();
            }

            // ===== Заполнение закладочных полей ===== //
            FillBookmarks(Protocol, DeviceCard, VerificationType, VerificationDateString, DisplayDeviceTypeName, DeviceNumber, ClientName, DateOfIssue, VerificationMethods, VerificationMeans, VerificationMeans2,
                          AuxiliaryMeshuring, AuxiliaryMeshuring2, Temperature, Humidity, AtmospherePressure, StaffName, ManagerName);

            // ===== Заполнение данных о метрологических характеристиках прибора ===== //

            // Определение режима заполнения протоколов поверки для текущего типа прибора
            int FormMode = (Int32)ApplicationCard.UniversalCard.GetItemPropertyValue(DeviceTypeID, "Формирование протокола поверки");

            // Заполнение данных о метрологических характеристиках осуществляется только в автоматическом режиме заполнения протокола поверки
            // Если режим заполнения - автоматический, то добавляем таблицы с данными метрологических характеристик
            if (FormMode == 2)
            {
                // Получение объекта создателя таблиц
                TablesCreator Creator = new TablesCreator();
                // Добавление таблиц метрологических характеристик прибора (информация о таблицах и их содержимом получается из объекта создателя таблиц)
                AddDeviceTables(Protocol, CardScript.Session, Creator, DeviceTypeName, DeviceCard, StartDateOfService);

                // Добавление таблиц с результатами испытаний датчиков
                if (AdditionalWaresList != null)
                {
                    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))
                        {
                            AddSensorTables(Protocol, CardScript.Session, Creator, WareTypeName, Ware, StartDateOfService, DeviceTypeName);
                        }
                    }
                }
            }
            return;
        }