private void UpdateSpcObjByPilot(SpcObject spcObject)
        {
            var needToChange = false;
            var loader       = new ObjectLoader(_objectsRepository);

            loader.Load(spcObject.GlobalId, obj =>
            {
                if (obj == null)
                {
                    return;
                }
                var builder = _objectModifier.Edit(obj);
                foreach (var spcColumn in spcObject.Columns)
                {
                    var spcColVal = ValueTextClear(spcColumn.Value);
                    // проверка нужно ли изменять объект
                    foreach (var attrObj in obj.Attributes)
                    {
                        if (attrObj.Key != spcColumn.TypeName)
                        {
                            continue;
                        }
                        if (attrObj.Value.ToString() == spcColVal)
                        {
                            continue;
                        }
                        needToChange = true;
                        if (int.TryParse(spcColVal, out var i))
                        {
                            builder.SetAttribute(spcColumn.TypeName, i);
                        }
                        else
                        {
                            builder.SetAttribute(spcColumn.TypeName, spcColVal);
                        }
                    }
                }
                // получаем pdf файл из Обозревателя
                var fileFromPilot = obj.Files.FirstOrDefault(f => IsFileExtension(f.Name, ".pdf"));
                var doc           = spcObject.Documents.FirstOrDefault(f => IsFileExtension(f.FileName, SOURCE_DOC_EXT));
                if (doc != null && fileFromPilot != null)
                {
                    var pdfFile = spcObject.PreviewDocument;
                    // md5 в нижнем регистре расчитывается и возвращается пилотом
                    var fileNameMd5 = CalculatorMd5Checksum.Go(pdfFile);
                    if (!string.IsNullOrEmpty(fileNameMd5) && fileFromPilot.Md5 != fileNameMd5)
                    {
                        needToChange = true;
                        builder.CreateFileSnapshot("").AddFile(pdfFile);
                    }
                }
                if (needToChange)
                {
                    _objectModifier.Apply();
                }
            });
        }
        private void UpdateSpcByPilot(Specification spc)
        {
            var loader = new ObjectLoader(_objectsRepository);

            loader.Load(spc.GlobalId, obj =>
            {
                var needToChange = false;

                var builder = _objectModifier.Edit(obj);

                var spcName        = ValueTextClear(spc.Name);
                var spcDesignation = ValueTextClear(spc.Designation);
                // проверка нужно ли изменять объект
                foreach (var attrObj in obj.Attributes)
                {
                    if (attrObj.Key == "name")
                    {
                        if (attrObj.Value.ToString() != spcName)
                        {
                            builder.SetAttribute(attrObj.Key, spcName);
                            needToChange = true;
                        }
                    }
                    if (attrObj.Key == "mark")
                    {
                        if (attrObj.Value.ToString() != spcDesignation)
                        {
                            builder.SetAttribute(attrObj.Key, spcDesignation);
                            needToChange = true;
                        }
                    }
                }

                // получаем xps файл из Обозревателя
                var fileFromPilot = obj.Files.FirstOrDefault(f => IsFileExtension(f.Name, ".xps"));
                var xpsFile       = spc.PreviewDocument;
                if (xpsFile != null && fileFromPilot != null)
                {
                    // md5 в нижнем регистре расчитывается и возвращается пилотом
                    var fileNameMd5 = CalculatorMd5Checksum.Go(xpsFile);
                    if (!string.IsNullOrEmpty(fileNameMd5) && fileFromPilot.Md5 != fileNameMd5)
                    {
                        builder.CreateFileSnapshot("").AddFile(xpsFile);
                        needToChange = true;
                    }
                }
                if (needToChange)
                {
                    _objectModifier.Apply();
                }
            });
        }