internal void УстановитьЗначенияИзСвойствSOAP(ОбъектСсылка ссылка, ValueBase[] properties) { if (properties == null) { return; } УзелМетаданных реквизиты = ссылка.Метаданные().НайтиПодчиненный("Реквизиты"); УзелМетаданных таблЧасти = ссылка.Метаданные().НайтиПодчиненный("ТабличныеЧасти"); foreach (ValueBase property in properties) { УзелМетаданных текМета; if (реквизиты.ПопыткаНайтиПодчиненный(property.Name, out текМета)) { object значение = property.GetValue(this.Клиент); this.УстановитьЗначениеПоляОбъекта(ссылка, текМета.Имя(), значение); } else if (таблЧасти.ПопыткаНайтиПодчиненный(property.Name, out текМета)) { object значение = property.GetValue(this.Клиент); if (значение is ТаблицаЗначений) { ТабличнаяЧасть таблЧасть = this.ПолучитьТабличнуюЧасть(ссылка, (МетаданныеТабличнаяЧасть)текМета); таблЧасть.ЗагрузитьДанные(значение as ТаблицаЗначений); } } } }
private ТабличнаяЧасть ПолучитьТабличнуюЧасть(ОбъектСсылка ссылка, МетаданныеТабличнаяЧасть метаданные) { Dictionary <string, object> данныеОбъекта = this.ПолучитьУзелДанныхОбъекта(ссылка); object таблЧасть; if (!данныеОбъекта.TryGetValue(метаданные.Имя(), out таблЧасть) || !(таблЧасть is ТабличнаяЧасть)) { таблЧасть = new ТабличнаяЧасть(метаданные); this.УстановитьЗначениеПоляОбъекта(ссылка, метаданные.Имя(), таблЧасть); } return(таблЧасть as ТабличнаяЧасть); }
internal СтрокаТабличнойЧасти(ТабличнаяЧасть таблЧасть) { this.tableSection = таблЧасть ?? throw new ArgumentNullException("таблЧасть"); this.values = new Dictionary <string, object>(); }