Набор свойств универсальной структуры зависит от того, на основе какого объекта построена данная структура. Может включать в себя свойства, значениями которых будут являться другие универсальные структуры, универсальные коллекции и наборы записей.
Полное описание, параметры и ограничения
ДанныеФормыСтруктураСКоллекцией.<Имя свойства> (FormDataStructureAndCollection.<Property name>)
ДанныеФормыСтруктураСКоллекцией (FormDataStructureAndCollection)
<Имя свойства> (<Property name>)
Доступен, начиная с версии 8.2.
Использование:
Только чтение.
Описание:
Набор свойств универсальной структуры зависит от того, на основе какого объекта построена данная структура. Может включать в себя свойства, значениями которых будут являться другие универсальные структуры, универсальные коллекции и наборы записей.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Различить именованное свойство набора и поле каждой его строки
На настоящем наборе из двух собственных записей проверяется состав структуры. Наличие поля Товар в строках не объявляется наличием одноимённого свойства всего набора.
Где и как запускать
Клиентская команда собственной управляемой формы; сервер создаёт два учебных элемента только в памяти.
Подготовка
В своей учебной конфигурации создайте независимый непериодический регистр сведений УчебныеСтрокиСвойств: измерения Номер Число 10.0 и Товар Строка 100, ресурс Количество Число 10.0. Записи в регистр для опыта сохранять не нужно.
Собственная общая управляемая форма: неосновной реквизит УчебныеЗаписи типа РегистрСведенийНаборЗаписей.УчебныеСтрокиСвойств. Перетащите его на форму таблицей, выведите Номер, Товар, Количество. Основной блок — команда РазобратьСвойстваСвоегоНабора.
Дополнительный обработчик назначьте ПриСозданииНаСервере той же формы. Он создаёт настоящий набор в памяти, заполняет две собственные записи и преобразует его в данные формы. Это ДанныеФормыСтруктураСКоллекцией, не ТаблицаЗначений и не заранее переданный абстрактный входной объект.
У универсальной структуры состав собственных именованных свойств зависит от представляемого объекта. Поэтому проверка выполняется на реальной модели до обращения УчебныеЗаписи.Товар. Обе ветки являются результатом диагностики, а не обещанием обязательно существующего свойства.
&НаКлиенте
Процедура РазобратьСвойстваСвоегоНабора(Команда)
Сообщить("Модель набора: " + Строка(ТипЗнч(УчебныеЗаписи)));
Сообщить("Собственных строк: " + Строка(УчебныеЗаписи.Количество()));
Если УчебныеЗаписи.Свойство("Товар") Тогда
ЗначениеНабора = УчебныеЗаписи.Товар;
Сообщить("В этой проекции есть собственное свойство набора Товар");
Сообщить("Тип его значения: " + Строка(ТипЗнч(ЗначениеНабора)));
Иначе
Сообщить("В этой проекции у самого набора нет свойства Товар");
КонецЕсли;
Для Каждого СтрокаНабора Из УчебныеЗаписи Цикл
Сообщить(СтрокаНабора.Товар + ": " + Строка(СтрокаНабора.Количество));
КонецЦикла;
КонецПроцедурыТот же модуль: настоящий собственный набор, без чтения / записи базы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Набор = РегистрыСведений.УчебныеСтрокиСвойств.СоздатьНаборЗаписей();
Книга = Набор.Добавить();
Книга.Номер = 1;
Книга.Товар = "Учебная книга";
Книга.Количество = 3;
Тетрадь = Набор.Добавить();
Тетрадь.Номер = 2;
Тетрадь.Товар = "Учебная тетрадь";
Тетрадь.Количество = 5;
ЗначениеВРеквизитФормы(Набор, "УчебныеЗаписи");
КонецПроцедурыРазбор по шагам
Создайте свой набор и преобразуйте его в форму.
Проверьте именованное свойство у всей структуры, не предполагая его по имени столбца.
Отдельно обойдите коллекцию и прочитайте Товар / Количество у каждой настоящей строки.
Как проверить результат
Проверка Свойство относится к самому ДанныеФормыСтруктураСКоллекцией. Успешная ветка читает одноимённое readonly-свойство; отрицательная честно сообщает, что конкретная проекция его не предоставляет. Ложь не подменяется пустой Структура с придуманным Товар.
Независимо от состава свойств структуры коллекция содержит две подготовленные строки: Учебная книга / 3 и Учебная тетрадь / 5. Поля строки читаются у СтрокаНабора. Две строки нельзя заменить одним общим значением Товар.
Это разбор границы применимости динамического имени, а не обещание универсального свойства Товар для всех наборов. Readonly-свойство набора не присваивается. Прочитать, Записать и операции базы не вызываются; BSL при сборке HTML не выполнялся.
Ожидаемый результат
Есть реальный источник данных и воспроизводимый разбор двух разных уровней обращения: структура набора и её строки.
На что обратить внимание
Не обращайтесь к неустановленному динамическому имени без проверки и не называйте поле одной строки свойством всего набора.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.