// синхронизация справочника 
        public int DicSync(double aEntityTypeId, string aJsonEntityData, ref string aErrorMessage)
        {
            int lResult = 1;
            aErrorMessage = string.Empty;

            try
            {
                this.WriteLog(USLogLevel.Debug, "Старт синхронизации сущности {0}", aEntityTypeId);
                if (Properties.Settings.Default.NeedLogSyncData)
                {
                    this.WriteLog(USLogLevel.Trace, "Cинхронизации сущности {0}. Переданные данные {1}", aEntityTypeId, aJsonEntityData);                    
                }

                var lDbConnectionString = GetConnectionString();

                using (var lData = new SyncServicesEntities(lDbConnectionString))
                {
                    var lElsysTypeName = lData.GetElsysTypeName(aEntityTypeId);

                    lData.Connection.Open();
                    this.WriteLog(USLogLevel.Trace, "Cинхронизации сущности {0}:{1}. Start UpdateEntityData", aEntityTypeId, lElsysTypeName);                    

                    lResult = Convert.ToInt16(lData.UPDATE_ENTITY_DATA(aJsonEntityData, (long?)aEntityTypeId, ref aErrorMessage));
                    this.WriteLog(USLogLevel.Trace, "Cинхронизации сущности {0}:{1}. Finish UpdateEntityData. Result {2}", aEntityTypeId, lElsysTypeName, lResult);                    

                    switch (lResult)
                    { 
                        case 0:
                            this.WriteLog(USLogLevel.Trace | USLogLevel.Debug | USLogLevel.Error, "Синхронизации сущности {0}:{1} окончена с ошибкой {2}", aEntityTypeId, lElsysTypeName, aErrorMessage);                            
                            break;
                        case 1:
                            this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, "Синхронизации сущности {0}:{1} окончена успешно", aEntityTypeId, lElsysTypeName);                            
                            break;
                        case 2:
                            this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, "Синхронизации сущности {0}:{1} была прервана по причине {2}", aEntityTypeId, lElsysTypeName, aErrorMessage);                                                        
                            break;
                        default: 
                            break;
                    }                    
                }
            }
            catch (Exception e)
            {
                aErrorMessage = string.Format("Ошибка синхронизации сущности {0}. Ошибка: {1}", aEntityTypeId, e);
                this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, aErrorMessage);
                this.WriteLogException(aErrorMessage, e);
                throw;
            }
            return lResult;
        }
        public void UpsmileSyncInitiatorTest()
        {
            var connection = GetConnectionString("DISTR_CO");
            var data = new SyncServicesEntities(connection);
            string xml = string.Empty;
            string error = string.Empty;
            var result = data.GetLinkSyncServEntData(_LinkSyncServEnt,1,ref xml,ref error);
            Assert.IsNotNullOrEmpty(xml);
            Assert.IsNotNull(error);
            var syncParams = data.GetSyncServiceData(_LinkSyncServEnt);
            Assert.IsNotNull(syncParams);
            Assert.IsTrue(syncParams.BranchName.ToUpper() =="Донецкий".ToUpper());
            var reciveData = new USInServiceValues
                {
                    EntityTypeId = syncParams.ElsysTypeId,
                    JsonEntityData = Convert.ToString(xml)
                };
            Assert.IsNotNull(reciveData);
            var sendJSON = JsonConvert.SerializeObject(reciveData);
            Assert.IsNotNullOrEmpty(sendJSON);
            var cfg = "windows-1251";
            var DBEncoding = Encoding.GetEncoding(cfg);
            var TransmissionEncoding = Encoding.GetEncoding(cfg);

            using (var ms = new MemoryStream(Encoding.Convert(DBEncoding, TransmissionEncoding, DBEncoding.GetBytes(sendJSON))))
            {
                //var size = (ms.Length/1024);
                ////sendJSON = String.Empty;
                //var lBinding = new TcpChunkingBinding();
                //lBinding.OpenTimeout= _openTimeoute;
                //lBinding.ReceiveTimeout = _openTimeoute;
                //lBinding.SendTimeout = _openTimeoute;
                //lBinding.CloseTimeout = _openTimeoute;
                //using (var factory = new ChannelFactory<IUSExService>(lBinding, new EndpointAddress(syncParams.EndPointAddress)))
                //{
                //    var service = factory.CreateChannel();
                //    var result1 = service.EntitySync(ms);
                //    var res = JsonConvert.DeserializeObject<USInServiceRetValues>(result1);
                //    Assert.AreEqual(res.ErrorMessage, null);
                //    factory.Close();
                //}

                var service = new USExService();
                var r = service.EntitySync(ms);
                var res = JsonConvert.DeserializeObject<USInServiceRetValues>(r);
                Assert.AreEqual(res.ErrorMessage, null);
            }
        }
        void TimerElapsed(object sender, ElapsedEventArgs e)
        {
            //запукск сервиса
            try
            {
                // идем по списку сущностей которые нужно синхронизировать и запускаем синхронизацию
                using (var lData = new SyncServicesEntities(GetConnectionString()))
                {
                    lData.Connection.Open();

                    var query = from v in lData.VLinkSyncSerEntNeededs
                                select v;
                    foreach (var lItem in query)
                    {
                        _syncServiceManager.CallSyncData(lItem.ID);
                    }
                    lData.Connection.Close();
                }
            }
            catch (Exception ex)
            {
                this.WriteLogException(Newtonsoft.Json.JsonConvert.SerializeObject(ex), ex);
            }
        }
        static void Main()
        {
        //    Console.WriteLine("Press any ley to start");
        //    Console.ReadLine();
        //    try
        //    {
        //        var lEndPointAddress =
        //            new EndpointAddress(new Uri("net.tcp://62.122.56.156:9000/Upsmile.Sync.Executant/USExService.svc"));
        //        Console.WriteLine("CallSyncService: lEndPointAddress = {0}", lEndPointAddress);

        //        using (var factory = new ChannelFactory<IUSInService>(new NetTcpBinding(), lEndPointAddress))
        //        {
        //            try
        //            {
        //                Console.WriteLine("CallSyncService: ChannelFactory created");
        //                IUSInService service = factory.CreateChannel();
        //                Console.WriteLine("factory.CreateChannel created");
        //                Console.WriteLine("Введите ID LinkSyncEntity для запуска синхронизации");
        //                var s = Console.ReadLine();
        //                var lLinkSyndcId = Convert.ToInt32(s);
        //                string lResult = service.EntitySync(lLinkSyndcId);
        //                Console.WriteLine("CallSyncService: service.EntitySync выполнен");
        //                factory.Close();
        //                Console.WriteLine("CallSyncService: ChannelFactory Closed");
        //                if (lResult != string.Empty)
        //                {
        //                    Console.WriteLine("CallSyncService: Возникла ошибка во время синхронизации LinkId = {0}", lResult);
        //                }
        //            }
        //            finally
        //            {
        //                factory.Abort();
        //            }                
        //        }

        //        //ChannelFactory<IUSInService> factory = new ChannelFactory<IUSInService>(new NetTcpBinding(), lEndPointAddress);
        //        //try
        //        //{
        //        //    Console.WriteLine("CallSyncService: ChannelFactory created");
        //        //    IUSInService service = factory.CreateChannel();
        //        //    Console.WriteLine("factory.CreateChannel created");
        //        //    Console.WriteLine("Введите ID LinkSyncEntity для запуска синхронизации");
        //        //    var s = Console.ReadLine();
        //        //    var lLinkSyndcId = Convert.ToInt32(s);
        //        //    string lResult = service.EntitySync(lLinkSyndcId);
        //        //    Console.WriteLine("CallSyncService: service.EntitySync выполнен");
        //        //    factory.Close();
        //        //    Console.WriteLine("CallSyncService: ChannelFactory Closed");
        //        //    if (lResult != string.Empty)
        //        //    {
        //        //        Console.WriteLine("CallSyncService: Возникла ошибка во время синхронизации LinkId = {0}", lResult);
        //        //    }
        //        //}
        //        //finally
        //        //{
        //        //    factory.Abort();
        //        //}                
        //        Console.WriteLine("Press any ley to finish");
        //        Console.ReadLine();
        //    }
        //    catch (Exception e)
        //    {
        //        Console.WriteLine("Error: {0}", e);
        //        Console.WriteLine("Error: {0}",e.InnerException);
        //        Console.WriteLine("Press any ley to finish");
        //        Console.ReadLine();
        //    }

                SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
                sqlBuilder.UserID = "distrdev";
                sqlBuilder.DataSource = "SWCOPY";
                sqlBuilder.Password = "******";
                string ProviderString = sqlBuilder.ToString();

                EntityConnectionStringBuilder entBuilder = new EntityConnectionStringBuilder();
                entBuilder.Provider = "Devart.Data.Oracle";
                entBuilder.ProviderConnectionString = ProviderString;
                entBuilder.Metadata = @"res://*/emSyncServices.csdl|
                                        res://*/emSyncServices.ssdl|
                                        res://*/emSyncServices.msl";

                string lDbConnectionString = entBuilder.ToString();
                
                //string lDbConnectionString = Properties.Settings.Default.DBConnectionString;
                using (var lData = new SyncServicesEntities(lDbConnectionString))
                {
                    var lresXML = string.Empty;
                    var lErrorMsg = string.Empty;
                    var lres = lData.GET_ENTITY_DATA(91038, 1, ref lresXML, ref lErrorMsg);
                    Console.WriteLine(lresXML);
                    Console.WriteLine(lErrorMsg);                        
                }
        }
        /// <summary>
        /// Метод синхронизации
        /// </summary>
        /// <param name="aLinkSyncServiceEntitiesId"></param>
        /// <param name="aIsFullSync"></param>
        /// <returns></returns>
        public static string EntitySync(double aLinkSyncServiceEntitiesId, bool aIsFullSync = false)
        {
            var beginArgument = new SyncEventArgument {Exception = null, Result = aLinkSyncServiceEntitiesId};
            OnBeginSync(beginArgument);
            
            _logger.Trace("EntitySync: Начата синхронизация: {0}", aLinkSyncServiceEntitiesId);
            LinkSyncServEntId = aLinkSyncServiceEntitiesId;
            IsFullSync = aIsFullSync;
            var lResult = string.Empty;
            try
            {
                using (var lData = new SyncServicesEntities(GetConnectionString()))
                {
                    lData.Connection.Open();
                    try
                    {
                        var lSyncDateTime = lData.GET_SYSDATE();
                        _syncParams = lData.GetSyncServiceData(aLinkSyncServiceEntitiesId);
                        if (_syncParams == null)
                        {
                            var ex = new NullReferenceException(lResult);
                            OnEndSync(new SyncEventArgument{Exception =ex,Result = lResult});
                            return lResult;
                        }
                        var lIteratorNumber = 1;
                        var lErrorMsg = string.Empty;
                        var lJSonElements = string.Empty;
                        int lSyncResult;
                        do
                        {
                            switch (Convert.ToInt16(lData.GetLinkSyncServEntData(aLinkSyncServiceEntitiesId, lIteratorNumber, ref lJSonElements, ref lErrorMsg)))
                            {
                                case 0: // ошибка
                                    lSyncResult = 0;
                                    lResult = lErrorMsg;
                                    break;
                                case 1: // успешное получение данных. 
                                    lSyncResult = 1;
                                    if (lJSonElements != string.Empty)
                                    {
                                        // успешное получение данных. данные не пустые. запускаем синхронизацию
                                        // формируем данные для передачи на филиал
                                        var lInData = new USInServiceValues
                                                          {
                                                              EntityTypeId = _syncParams.ElsysTypeId,
                                                              JsonEntityData = Convert.ToString(lJSonElements)
                                                          };
                                        // серриализация данных для передачи на филиал
                                        var lJsonInData = JsonConvert.SerializeObject(lInData);
                                        _logger.Trace("EntitySync: Кодировка на клиенте {0}", Encoding.Default.EncodingName);
                                        // создаем поток который будет передан на филиал
                                        var DBEncoding = Encoding.GetEncoding(Properties.Settings.Default.DBEncodingName);
                                        var TransmissionEncoding = Encoding.GetEncoding(Properties.Settings.Default.TransmissionEncodingName);
                                        _logger.Trace("EntitySync: Кодировка на базе {0}", DBEncoding.EncodingName);
                                        _logger.Trace("EntitySync: Кодировка передачи {0}", TransmissionEncoding.EncodingName);
                                        using (var ms = new MemoryStream(Encoding.Convert(DBEncoding, TransmissionEncoding, DBEncoding.GetBytes(lJsonInData))))
                                        {
                                            var lBinding = new TcpChunkingBinding
                                                               {
                                                                   OpenTimeout = Properties.Settings.Default.OpenTimeout,
                                                                   ReceiveTimeout =
                                                                       Properties.Settings.Default.ReceiveTimeout,
                                                                   SendTimeout = Properties.Settings.Default.SendTimeout,
                                                                   CloseTimeout = Properties.Settings.Default.CloseTimeout
                                                               };

                                            var endPointAdress = _syncParams.EndPointAddress;
                                            //endPointAdress = string.Empty;
                                            using (var factory = new ChannelFactory<IUSExService>(lBinding, new EndpointAddress(endPointAdress)))
                                            {
                                                try
                                                {
                                                    var service = factory.CreateChannel();
                                                    var lRetValuesStr = service.EntitySync(ms);
                                                    factory.Close();
                                                    var lRetValues = JsonConvert.DeserializeObject<USInServiceRetValues>(lRetValuesStr);
                                                    lSyncResult = Convert.ToInt16(lRetValues.Result);
                                                    lResult = lRetValues.ErrorMessage;
                                                }
                                                catch (Exception e)
                                                {
                                                    lResult =
                                                        string.Format("EntitySync: Синхронизация LinkSyncServiceEntitiesId = {0} закончилась с ошибкой. Ошибка: {1}",
                                                                      aLinkSyncServiceEntitiesId, e);
                                                    OnErrorSync(new SyncEventArgument {Exception = e,Result = lResult});
                                                    continue;
                                                }
                                                factory.Abort();
                                            }
                                            ms.Close();
                                        }
                                    }
                                    break;
                                case 2: // ошибки не было но данные не были получены
                                    lSyncResult = 2;
                                    lResult = lErrorMsg;
                                    OnErrorSync(new SyncEventArgument {Exception = null,Result = lResult});
                                    continue;
                                    //break;
                                default: lSyncResult = 0;
                                    lResult = string.Format("EntitySync: Синхронизация LinkSyncServiceEntitiesId = {0} закончилась с ошибкой. Не прогнозируемый результат получения данных",
                                                            aLinkSyncServiceEntitiesId);
                                    OnErrorSync(new SyncEventArgument {Exception = null,Result = lResult});
                                    continue;
                                    //break;
                            }

                            lIteratorNumber += 1;
                        }
                        while ((lSyncResult == 1) && (lJSonElements != string.Empty));

                        switch (lSyncResult)
                        {
                            case 0:
                                var s0 = string.Format("Ошибка при синхронизация сущности EntitySync: aLinkSyncServiceEntitiesId = {0} Описание {1}; Сущность {2}: {3}; Филиал {4}; Ошибка {5}",
                                              aLinkSyncServiceEntitiesId, _syncParams.Description, _syncParams.ElsysTypeId,
                                              _syncParams.ElsysTypeName, _syncParams.BranchName, lResult);
                                OnEndSync(new SyncEventArgument {Exception = null,Result = s0});
                                break;
                            case 1:
                                lData.SET_LINK_SYNC_SERV_CALL_DATA(Convert.ToDecimal(LinkSyncServEntId), lSyncDateTime);

                                var s1 =string.Format("Успешная синхронизация сущности EntitySync: aLinkSyncServiceEntitiesId = {0} Описание {1}; Сущность {2}: {3}; Филиал {4}",
                                              aLinkSyncServiceEntitiesId, _syncParams.Description, _syncParams.ElsysTypeId,
                                              _syncParams.ElsysTypeName, _syncParams.BranchName);
                                OnEndSync(new SyncEventArgument {Exception = null,Result = s1});
                                break;
                            case 2:
                                var s2 = string.Format("Cинхронизация сущности EntitySync не завершена: aLinkSyncServiceEntitiesId = {0} Описание {1}; Сущность {2}: {3}; Филиал {4}. Причина {5}",
                                              aLinkSyncServiceEntitiesId, _syncParams.Description, _syncParams.ElsysTypeId,
                                              _syncParams.ElsysTypeName, _syncParams.BranchName, lResult);
                                OnEndSync(new SyncEventArgument {Exception = null,Result = s2});
                                lResult = string.Empty;
                                break;
                        }
                    }
                    finally
                    {
                        lData.Connection.Close();
                        lData.Dispose();
                    }
                }
            }
            catch (Exception e)
            {
                lResult =
                    string.Format("EntitySync: Синхронизация LinkSyncServiceEntitiesId = {0} закончилась с ошибкой. Ошибка: {1}",
                                  aLinkSyncServiceEntitiesId, e);
                
                OnErrorSync(new SyncEventArgument {Exception = e,Result = lResult});
            }
            OnEndSync(new SyncEventArgument {Exception = null,Result = aLinkSyncServiceEntitiesId});
            return lResult;
        }
        public string EntitySync(double aLinkSyncServiceEntitiesId, bool aIsFullSync = false)
        {
            this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, "EntitySync: Начата синхронизация: {0}", aLinkSyncServiceEntitiesId);
            LinkSyncServEntId = aLinkSyncServiceEntitiesId;
            IsFullSync = aIsFullSync;
            string lResult = string.Empty;
            
            try
            {
                using (var lData = new SyncServicesEntities(GetConnectionString()))
                {
                    lData.Connection.Open();
                    try
                    {
                        var lSyncDateTime = lData.GET_SYSDATE();
                        _syncParams = lData.GetSyncServiceData(aLinkSyncServiceEntitiesId);

                        if (_syncParams == null)
                        {
                            lResult = string.Format("EntitySync: aLinkSyncServiceEntitiesId = {0} параметры синхронизации не определены", aLinkSyncServiceEntitiesId);
                            this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, lResult);
                            return lResult;
                        }

                        this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, "EntitySync: aLinkSyncServiceEntitiesId = {0} Описание {1}; Сущность {2}: {3}; Филиал {4}",
                                aLinkSyncServiceEntitiesId, _syncParams.Description, _syncParams.ElsysTypeId,
                                _syncParams.ElsysTypeName, _syncParams.BranchName);
                        int lIteratorNumber = 1;
                        var lErrorMsg = string.Empty;
                        var lJSonElements = string.Empty;
                        int lSyncResult = 0;

                        do
                        {
                            this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} данные по сущности получены и сериализованы. Шаг {1}", aLinkSyncServiceEntitiesId, lIteratorNumber);
                            switch (Convert.ToInt16(lData.GetLinkSyncServEntData(aLinkSyncServiceEntitiesId, lIteratorNumber, ref lJSonElements, ref lErrorMsg)))
                            {
                                case 0: // ошибка
                                    lSyncResult = 0;
                                    lResult = lErrorMsg;
                                    break;
                                case 1: // успешное получение данных. 
                                    lSyncResult = 1;
                                    if (lJSonElements != string.Empty)
                                    {
                                        // успешное получение данных. данные не пустые. запускаем синхронизацию

                                        // формируем данные для передачи на филиал
                                        var lInData = new USInServiceValues
                                        {
                                            EntityTypeId = _syncParams.ElsysTypeId,
                                            JsonEntityData = Convert.ToString(lJSonElements)
                                        };

                                        // серриализация данных для передачи на филиал
                                        string lJsonInData = Newtonsoft.Json.JsonConvert.SerializeObject(lInData);
                                        if (Properties.Settings.Default.NeedLogSyncData)
                                        {
                                            this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} lJsonInData сформирован = {1}", aLinkSyncServiceEntitiesId, lJsonInData);
                                        }
                                        lInData = null;

                                        this.WriteLog(USLogLevel.Trace, "EntitySync: Кодировка на клиенте {0}", Encoding.Default.EncodingName);
                                        // создаем поток который будет передан на филиал
                                        var DBEncoding = Encoding.GetEncoding(Properties.Settings.Default.DBEncodingName);
                                        var TransmissionEncoding = Encoding.GetEncoding(Properties.Settings.Default.TransmissionEncodingName);
                                        this.WriteLog(USLogLevel.Trace, "EntitySync: Кодировка на базе {0}", DBEncoding.EncodingName);
                                        this.WriteLog(USLogLevel.Trace, "EntitySync: Кодировка передачи {0}", TransmissionEncoding.EncodingName);

                                        using (var ms = new MemoryStream(Encoding.Convert(DBEncoding, TransmissionEncoding, DBEncoding.GetBytes(lJsonInData))))
                                        {
                                            this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} MemoryStream создан", aLinkSyncServiceEntitiesId);
                                            lJsonInData = String.Empty;

                                            var lBinding = new TcpChunkingBinding();
                                            lBinding.OpenTimeout = Properties.Settings.Default.OpenTimeout;
                                            lBinding.ReceiveTimeout = Properties.Settings.Default.ReceiveTimeout;
                                            lBinding.SendTimeout = Properties.Settings.Default.SendTimeout;
                                            lBinding.CloseTimeout = Properties.Settings.Default.CloseTimeout;

                                            this.WriteLog(USLogLevel.Trace, "lBinding params lBinding.OpenTimeout = {0}; lBinding.ReceiveTimeout = {1}; lBinding.SendTimeout = {2}; lBinding.CloseTimeout = {3}", lBinding.OpenTimeout, lBinding.ReceiveTimeout, lBinding.SendTimeout, lBinding.CloseTimeout);

                                            using (var factory = new ChannelFactory<IUSExService>(lBinding, new EndpointAddress(_syncParams.EndPointAddress)))
                                            {
                                                try
                                                {
                                                    this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} ChannelFactory created", aLinkSyncServiceEntitiesId);
                                                    IUSExService service = factory.CreateChannel();
                                                    this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} IUSExService service = factory.CreateChannel created", aLinkSyncServiceEntitiesId);
                                                    
                                                    var lRetValuesStr = service.EntitySync(ms);

                                                    this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} service.EntitySync выполнен", aLinkSyncServiceEntitiesId);
                                                    factory.Close();
                                                    this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} ChannelFactory Closed", aLinkSyncServiceEntitiesId);

                                                    this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} Returned Value Deserialized", aLinkSyncServiceEntitiesId);
                                                    var lRetValues = Newtonsoft.Json.JsonConvert.DeserializeObject<USInServiceRetValues>(lRetValuesStr);
                                                    lSyncResult = Convert.ToInt16(lRetValues.Result);
                                                    lResult = lRetValues.ErrorMessage;
                                                }
                                                catch (Exception e)
                                                {
                                                    lResult =
                                                        string.Format("EntitySync: Синхронизация LinkSyncServiceEntitiesId = {0} закончилась с ошибкой. Ошибка: {1}",
                                                                      aLinkSyncServiceEntitiesId, e);
                                                    this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, lResult, e);
                                                    this.WriteLogException(lResult, e);
                                                }
                                                factory.Abort();
                                            }
                                        }
                                    }
                                    break;
                                case 2: // ошибки не было но данные не были получены
                                    lSyncResult = 2;
                                    lResult = lErrorMsg;
                                    break;
                                default: lSyncResult = 0;
                                    lResult = string.Format("EntitySync: Синхронизация LinkSyncServiceEntitiesId = {0} закончилась с ошибкой. Не прогнозируемый результат получения данных",
                                                              aLinkSyncServiceEntitiesId);
                                    break;
                            }

                            lIteratorNumber += 1;
                        }
                        while ((lSyncResult == 1) && (lJSonElements != string.Empty));

                        switch (lSyncResult)
                        {
                            case 0:
                                this.WriteLog(USLogLevel.Trace | USLogLevel.Debug | USLogLevel.Error, "Ошибка при синхронизация сущности EntitySync: aLinkSyncServiceEntitiesId = {0} Описание {1}; Сущность {2}: {3}; Филиал {4}; Ошибка {5}",
                                aLinkSyncServiceEntitiesId, _syncParams.Description, _syncParams.ElsysTypeId,
                                _syncParams.ElsysTypeName, _syncParams.BranchName, lResult);
                                break;
                            case 1: 
                                lData.SET_LINK_SYNC_SERV_CALL_DATA(Convert.ToDecimal(LinkSyncServEntId), lSyncDateTime);

                                this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, "Успешная синхронизация сущности EntitySync: aLinkSyncServiceEntitiesId = {0} Описание {1}; Сущность {2}: {3}; Филиал {4}",
                                    aLinkSyncServiceEntitiesId, _syncParams.Description, _syncParams.ElsysTypeId,
                                    _syncParams.ElsysTypeName, _syncParams.BranchName);
                                break;
                            case 2:
                                this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, "Cинхронизация сущности EntitySync не завершена: aLinkSyncServiceEntitiesId = {0} Описание {1}; Сущность {2}: {3}; Филиал {4}. Причина {5}",
                                    aLinkSyncServiceEntitiesId, _syncParams.Description, _syncParams.ElsysTypeId,
                                    _syncParams.ElsysTypeName, _syncParams.BranchName, lResult);
                                lResult = string.Empty;
                                break;
                            default:
                                break;
                        }
                    }
                    finally
                    {
                        lData.Connection.Close();
                        this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} Соединение закрыто", aLinkSyncServiceEntitiesId);
                        lData.Dispose();
                        this.WriteLog(USLogLevel.Trace, "EntitySync: aLinkSyncServiceEntitiesId = {0} lData.Dispose done", aLinkSyncServiceEntitiesId);
                    }
                }
            }
            catch (Exception e)
            {
                lResult =
                    string.Format("EntitySync: Синхронизация LinkSyncServiceEntitiesId = {0} закончилась с ошибкой. Ошибка: {1}",
                                  aLinkSyncServiceEntitiesId, e);
                this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, lResult, e);
                this.WriteLogException(lResult, e);
            }
            this.WriteLog(USLogLevel.Trace | USLogLevel.Debug, "EntitySync: Завершена синхронизация: {0}", aLinkSyncServiceEntitiesId);

            return lResult;
        }
 public void GetSynckParam()
 {
     var connection = GetConnectionString("DISTR_CO");
     var data = new SyncServicesEntities(connection);
     var syncParams = data.GetSyncServiceData(_LinkSyncServEnt);
     Assert.IsNotNull(syncParams);
 }