public SyncResponce GetDiffData(Guid clientId, int LastVersion)
        {
            Log.Debug("Запрос разностной информации для " + clientId);
            int ruleid = GetRuleIdFromGuid(clientId); var dict = base.GetProvPriceListAutoFormRule();
            int rule = dict.FirstOrDefault(p => p.Item1 == ruleid).Item2;
            int CurrentVersion = UnloadVersionControl.UpdateUploadVersion(scheme);
            SyncResponce result = new SyncResponce() { LastVersion = CurrentVersion };
            Log.Debug("ClientVersion:" + LastVersion + " MyVersion:" + CurrentVersion);
            DataSet dsClient = null;
            {
                string FileName = System.IO.Path.Combine(scheme.Folder, scheme.Type.ToString(), rule.ToString(), LastVersion + ".dat");
                if (System.IO.File.Exists(FileName))
                {
                    dsClient = DataTableExtension.Deserialize(System.IO.File.ReadAllBytes(FileName));
                }
            }
            DataSet dsService = null;
            {
                string FileName = System.IO.Path.Combine(scheme.Folder, scheme.Type.ToString(), rule.ToString(), CurrentVersion + ".dat");
                if (System.IO.File.Exists(FileName))
                {
                    byte[] data = System.IO.File.ReadAllBytes(FileName);

                    dsService = DataTableExtension.Deserialize(data);
                    foreach (DataTable dt in dsService.Tables)
                    {
                        result.Hash[dt.TableName] = DataTableExtension.ComputeHash(dt);
                    }

                }
            }

            if (dsService == null || dsClient == null)
            {
                Log.Error("Не удалось прочитать один из файлов Cl:" + dsClient?.DataSetName + " Srv:" + dsService?.DataSetName);
                throw new Exception("Не удалось прочитать одну из выгрузок ");
            }

            DataSet dsdiff = new DataSet();
            for (int i = 0; i < dsService.Tables.Count; i++)
            {
                DataTable dtService = dsService.Tables[i];
                DataTable dtClient = dsClient.Tables[i];
                DataTable dtdiff = TableHelper.getDifferentRecords(dtService, dtClient);
                dtdiff.TableName = dtService.TableName;
                dsdiff.Tables.Add(dtdiff);
            }
            result.blob = DataTableExtension.Serialize(dsdiff);
            return result;
        }
        public SyncResponce GetFullData(Guid clientId)
        {
            var dict = base.GetProvPriceListAutoFormRule();
            int ruleid = GetRuleIdFromGuid(clientId);

            int rule = dict.FirstOrDefault(p => p.Item1 == ruleid).Item2;

            int LastVersion = UnloadVersionControl.UpdateUploadVersion(scheme);

            SyncResponce result = new SyncResponce() { LastVersion = LastVersion };

            string FileName = System.IO.Path.Combine(scheme.Folder, scheme.Type.ToString(), rule.ToString(), LastVersion + ".dat");
            if (!System.IO.File.Exists(FileName))
            {
                result.blob = null;

            }
            else
            {
                result.blob = File.ReadAllBytes(FileName);
                DataSet dsService = DataTableExtension.Deserialize(result.blob);
                foreach (DataTable dt in dsService.Tables)
                {
                    result.Hash[dt.TableName] = DataTableExtension.ComputeHash(dt);
                }
            }
            return result;
        }