Пример #1
0
        public override object GetValue(БромКлиент client = null)
        {
            ТаблицаЗначений result = new ТаблицаЗначений();

            if (this.Column != null)
            {
                foreach (var column in this.Column)
                {
                    result.Колонки.Добавить(column.Name);
                }
            }
            if (this.Row != null)
            {
                foreach (var row in this.Row)
                {
                    dynamic temRow = result.Добавить();
                    if (row.Property != null)
                    {
                        foreach (var property in row.Property)
                        {
                            temRow[property.Name] = property.GetValue(client);
                        }
                    }
                }
            }

            return(result);
        }
Пример #2
0
        public ValueTable(ТаблицаЗначений value)
        {
            if (value == null)
            {
                throw new System.ArgumentNullException("value");
            }

            this.Column = new DataTableColumn[value.Колонки.Count];
            for (int i = 0; i < value.Колонки.Count; i++)
            {
                DataTableColumn columnSOAP = new DataTableColumn();
                columnSOAP.Name = value.Колонки[i].Имя;
                this.Column[i]  = columnSOAP;
            }

            this.Row = new DataTableRow[value.Count];
            for (int i = 0; i < value.Count; i++)
            {
                DataTableRow rowSOAP = new DataTableRow();
                rowSOAP.Property = new ValueBase[value.Колонки.Count];

                for (int j = 0; j < value.Колонки.Count; j++)
                {
                    КолонкаКоллекцииЗначений column = value.Колонки[j];
                    ValueBase property = ValueBase.From(((dynamic)value[i]).GetByColumn(column));
                    property.Name       = column.Имя;
                    rowSOAP.Property[j] = property;
                }
                this.Row[i] = rowSOAP;
            }
        }
        internal void ЗагрузитьДанные(ТаблицаЗначений таблица)
        {
            IEnumerable <string> поляТаблица   = таблица.Колонки.Наименования();
            IEnumerable <string> поляТаблЧасть = this.metadata.НайтиПодчиненный("Реквизиты").GetDynamicMemberNames();
            IEnumerable <string> общиеПоля     = поляТаблЧасть.Intersect(поляТаблица, StringComparer.OrdinalIgnoreCase);

            this.rows.Clear();
            foreach (dynamic стр in таблица)
            {
                СтрокаТабличнойЧасти новСтр = this.ДобавитьСтроку();
                foreach (string имяПоля in общиеПоля)
                {
                    новСтр.УстановитьЗначение(имяПоля, стр[имяПоля]);
                }
            }
        }
        /// <summary>
        /// Выгружает табличную часть в таблицу значений (<see cref="ITworks.Brom.Types.ТаблицаЗначений"/>).
        /// </summary>
        /// <returns>Возвращает таблицу значений, содержащую данные табличной части.</returns>
        public ТаблицаЗначений Выгрузить()
        {
            ТаблицаЗначений      таблица    = new ТаблицаЗначений(this.Count);
            IEnumerable <string> именаПолей = this.metadata.Найти("Реквизиты").GetDynamicMemberNames();

            foreach (string имяПоля in именаПолей)
            {
                таблица.Колонки.Добавить(имяПоля);
            }

            foreach (dynamic стр in this.rows)
            {
                dynamic новСтр = таблица.Добавить();
                foreach (string имяПоля in именаПолей)
                {
                    новСтр[имяПоля] = стр[имяПоля];
                }
            }

            return(таблица);
        }
 internal СтрокаТаблицыЗначений(ТаблицаЗначений таблица) : base(таблица)
 {
 }