Пример #1
0
        public int GetRequestSort(RequestId reqId)
        {
            RequestSort sort = ECSLocate.Center.GetRequestSort(reqId);

            if (sort == null)
            {
                return(0);
            }
            return(sort.sort);
        }
Пример #2
0
 public RequestSort GetRequestSort(RequestId requestId)
 {
     for (int i = 0; i < requestSortAsset.requests.Count; i++)
     {
         RequestSort sort = requestSortAsset.requests[i];
         if (sort.key.Equals(requestId.ToString()))
         {
             return(sort);
         }
     }
     ECSLocate.Log.LogError("请求没有配置排序", requestId);
     return(null);
 }
Пример #3
0
        /// <summary>
        /// Получает данные выборки асинхронно с учетом всех установленных настроек.
        /// </summary>
        /// <returns>Метод возвращает ссылку на исходный селектор.</returns>
        public async Task <Селектор> ВыполнитьАсинх()
        {
            if (this.collectionMetadata == null)
            {
                throw new Exception("Не установлена коллекция для получения выборки.");
            }

            GetObjectList_Settings settings = new GetObjectList_Settings();

            settings.AddSkippedProperties          = true;
            settings.AddSkippedPropertiesSpecified = true;

            settings.PropertiesHierarchyType = "Hierarchy";

            settings.FieldAutoinclusion = new RequestFieldAutoinclusionSettings();
            settings.FieldAutoinclusion.DefaultFields          = this.АвтозагрузкаПолей.ЗагружатьСтандартныеРеквизиты;
            settings.FieldAutoinclusion.DefaultFieldsSpecified = this.АвтозагрузкаПолей.ЗагружатьСтандартныеРеквизиты;
            settings.FieldAutoinclusion.CustomFields           = this.АвтозагрузкаПолей.ЗагружатьПользовательскиеРеквизиты;
            settings.FieldAutoinclusion.CustomFieldsSpecified  = this.АвтозагрузкаПолей.ЗагружатьПользовательскиеРеквизиты;
            settings.FieldAutoinclusion.Tables          = this.АвтозагрузкаПолей.ЗагружатьТабличныеЧасти;
            settings.FieldAutoinclusion.TablesSpecified = this.АвтозагрузкаПолей.ЗагружатьТабличныеЧасти;

            if (this.limit > 0)
            {
                settings.Limit          = this.limit;
                settings.LimitSpecified = true;
            }

            settings.Field = new RequestField[this.Поля.Count];
            int i = 0;

            foreach (string fieldName in this.Поля)
            {
                RequestField field = new RequestField();
                field.Key         = fieldName;
                settings.Field[i] = field;
                i++;
            }

            settings.Filter = new RequestFilter[this.Отбор.Count];
            for (i = 0; i < this.Отбор.Count; i++)
            {
                RequestFilter filter = new RequestFilter();
                filter.Key            = this.Отбор[i].Ключ;
                filter.Value          = ValueBase.From(this.Отбор[i].Значение);
                filter.ComparisonType = this.Отбор[i].ВидСравнения.ToString();
                settings.Filter[i]    = filter;
            }

            settings.Sort = new RequestSort[this.Порядок.Count];
            for (i = 0; i < this.Порядок.Count; i++)
            {
                RequestSort field = new RequestSort();
                field.Key        = this.Порядок[i].Ключ;
                field.Direction  = this.Порядок[i].Направление == НаправлениеСортировки.Убывание ? "Убыв" : "Возр";
                settings.Sort[i] = field;
            }

            Task <GetObjectListResponse> task = this.bromClient.SoapКлиент.GetObjectListAsync(this.ТипКоллекции.ToString(), this.ИмяКоллекции, settings);

            ValueArray objectList = (await task).@return;

            this.items.Clear();
            if (objectList.Item != null)
            {
                foreach (ValueBase item in objectList.Item)
                {
                    this.items.Add(item.GetValue(this.Клиент) as Ссылка);
                }
            }

            this.isModified = false;

            return(this);
        }
Пример #4
0
        private async Task <object> ВыполнитьЗапросОбщееАсинх(string текстЗапроса, IDictionary <string, object> параметры = null, IList <УсловиеОтбора> отбор = null, IList <ПолеДанных> поля = null, IList <Сортировка> порядок = null, bool пакетный = false, ОбходРезультатаЗапроса типОбхода = ОбходРезультатаЗапроса.Прямой, bool включатьВременныеДанные = false)
        {
            ExecuteRequest_Settings settings = new ExecuteRequest_Settings();

            if (параметры != null)
            {
                settings.Parameter = new RequestParameter[параметры.Count];
                int i = 0;
                foreach (KeyValuePair <string, object> параметр in параметры)
                {
                    RequestParameter parameter = new RequestParameter();
                    parameter.Key         = параметр.Key;
                    parameter.Value       = ValueBase.From(параметр.Value);
                    settings.Parameter[i] = parameter;
                    i++;
                }
            }
            if (отбор != null)
            {
                settings.Filter = new RequestFilter[отбор.Count];
                for (int i = 0; i < отбор.Count; i++)
                {
                    RequestFilter filter = new RequestFilter();
                    filter.Key            = отбор[i].Ключ;
                    filter.Value          = ValueBase.From(отбор[i].Значение);
                    filter.ComparisonType = отбор[i].ВидСравнения.ToString();
                    settings.Filter[i]    = filter;
                }
            }
            if (поля != null)
            {
                settings.Field = new RequestField[поля.Count];
                int i = 0;
                foreach (ПолеДанных поле in поля)
                {
                    RequestField field = new RequestField();
                    field.Key         = поле.Ключ;
                    field.Name        = поле.Псевдоним;
                    settings.Field[i] = field;
                    i++;
                }
            }
            if (порядок != null)
            {
                settings.Sort = new RequestSort[порядок.Count];
                int i = 0;
                foreach (Сортировка элементПорядка in порядок)
                {
                    RequestSort sort = new RequestSort();
                    sort.Key         = элементПорядка.Ключ;
                    sort.Direction   = элементПорядка.Направление == НаправлениеСортировки.Убывание ? "Убыв" : "Возр";
                    settings.Sort[i] = sort;
                    i++;
                }
            }
            settings.QueryResultIteration         = типОбхода.ToString();
            settings.IncludeTemporalData          = включатьВременныеДанные;
            settings.IncludeTemporalDataSpecified = включатьВременныеДанные;

            if (!пакетный)
            {
                Task <ExecuteRequestResponse> task = this.SoapКлиент.ExecuteRequestAsync(текстЗапроса, settings);
                return((await task)[email protected](this));
            }
            else
            {
                Task <ExecuteRequestBatchResponse> task = this.SoapКлиент.ExecuteRequestBatchAsync(текстЗапроса, settings);

                return((await task)[email protected](this));
            }
        }