Коллекция значений полей.
Полное описание, параметры и ограничения
ЗначенияПолейРасшифровкиКомпоновкиДанных (DataCompositionDetailsFieldValues)
ЗначенияПолейРасшифровкиКомпоновкиДанных (DataCompositionDetailsFieldValues)
Доступен, начиная с версии 8.1.
Элементы коллекции:
ЗначениеПоляРасшифровкиКомпоновкиДанных
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются значения полей.
Возможно обращение к значению посредством оператора [...]. В качестве аргумента передается имя, индекс (нумерация с 0).
Методы:
Вставить (Insert)
Добавить (Add)
Индекс (IndexOf)
Количество (Count)
Найти (Find)
Очистить (Clear)
Получить (Get)
Сдвинуть (Move)
Удалить (Delete)
Конструкторы:
По умолчанию
Описание:
Коллекция значений полей.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
ЭлементРасшифровкиКомпоновкиДанныхПоля, метод ПолучитьПоля
ЭлементыРасшифровкиКомпоновкиДанных, метод Добавить
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Создать описание двух расшифровок с настоящими идентификаторами
Идентификаторы получаются от собственных элементов ДанныеРасшифровки, не сочиняются из строк или УникальныйИдентификатор.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не клиентский модуль формы.
Подготовка
Собственная учебная база 8.5.1.1343. Создайте общий модуль УчебныеКоллекцииСКД с флагом Сервер. Вставьте полный текст одного урока с процедурой ВыполнитьПример() Экспорт.
Из серверной команды своей обработки вызовите УчебныеКоллекцииСКД.ВыполнитьПример(). Таблицы значений и служебные объекты макета остаются на сервере.
Книга / 3 / 750 и Ручка / 1 / 50 — вымышленные собственные данные. Ни справочники, ни документы, ни регистры базы, ни внешние сервисы не читаются.
Различайте схему, настройки, скомпилированный макет и результат. Урок составления отдельной коллекции не называется готовым рабочим отчётом.
В уроке описания расшифровки временное хранилище заполняется только новым собственным объектом, в одном вызове. В конце удаляется ровно этот созданный адрес, включая обработку ошибки.
Не заменяйте собственный новый макет текущим рабочим отчётом: Очистить, Удалить и Сдвинуть в этих уроках относятся к собственной памяти.
Процедура ВыполнитьПример() Экспорт
Поля = Новый ЗначенияПолейРасшифровкиКомпоновкиДанных;
Название = Поля.Добавить();
Название.Поле = "Наименование";
Название.Значение = "Книга";
Название.Иерархия = Ложь;
Сумма = Поля.Добавить();
Сумма.Поле = "Сумма";
Сумма.Значение = 750;
Сумма.Иерархия = Ложь;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
Настройки = Новый НастройкиКомпоновкиДанных;
ДанныеРасшифровки.Настройки = Настройки;
Первый = ДанныеРасшифровки.Элементы.Добавить(Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля"), , Поля);
ПоляРучки = Новый ЗначенияПолейРасшифровкиКомпоновкиДанных;
Ручка = ПоляРучки.Добавить();
Ручка.Поле = "Наименование";
Ручка.Значение = "Ручка";
Ручка.Иерархия = Ложь;
Второй = ДанныеРасшифровки.Элементы.Добавить(Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля"), , ПоляРучки);
Идентификаторы = Новый Массив;
Идентификаторы.Добавить(Первый.Идентификатор);
Идентификаторы.Добавить(Второй.Идентификатор);
СобственныйАдрес = Неопределено;
ОшибкаОперации = "";
ОшибкаУдаления = "";
Попытка
СобственныйАдрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровки);
Описание = Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(СобственныйАдрес, Идентификаторы, Настройки);
Сообщить(Описание.Данные = СобственныйАдрес);
Сообщить(Описание.Идентификаторы.Количество() = 2);
Сообщить(Описание.Идентификаторы[0] = Первый.Идентификатор);
Сообщить(Описание.Идентификаторы[1] = Второй.Идентификатор);
Сообщить(Описание.Идентификатор = Первый.Идентификатор);
Сообщить(ТипЗнч(Описание.ПрименяемыеНастройки) = Тип("НастройкиКомпоновкиДанных"));
Описание.Идентификатор = Второй.Идентификатор;
Сообщить(Описание.Идентификаторы.Количество() = 1);
Сообщить(Описание.Идентификаторы[0] = Второй.Идентификатор);
ВосстановленныеИдентификаторы = Новый Массив;
ВосстановленныеИдентификаторы.Добавить(Первый.Идентификатор);
ВосстановленныеИдентификаторы.Добавить(Второй.Идентификатор);
Описание.Идентификаторы = ВосстановленныеИдентификаторы;
Описание.Данные = СобственныйАдрес;
Описание.ПрименяемыеНастройки = Настройки;
Сообщить(Описание.Идентификаторы.Количество() = 2);
СтароеОписание = Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(СобственныйАдрес, Первый.Идентификатор, Настройки);
Сообщить(СтароеОписание.Идентификаторы.Количество() = 1);
Сообщить(СтароеОписание.Идентификатор = Первый.Идентификатор);
Сообщить(ДанныеРасшифровки.Элементы.Количество() = 2);
Сообщить(Первый.ПолучитьПоля().Найти("Сумма").Значение = 750);
Исключение
ОшибкаОперации = ОписаниеОшибки();
КонецПопытки;
Если ТипЗнч(СобственныйАдрес) = Тип("Строка") Тогда
Попытка
УдалитьИзВременногоХранилища(СобственныйАдрес);
Исключение
ОшибкаУдаления = ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
Если НЕ ПустаяСтрока(ОшибкаОперации) ИЛИ НЕ ПустаяСтрока(ОшибкаУдаления) Тогда
ВызватьИсключение "Ошибка собственного описания расшифровки: " + ОшибкаОперации + " Ошибка удаления собственного адреса: " + ОшибкаУдаления;
КонецЕсли;
Сообщить("Собственный временный адрес удалён; описание больше не следует использовать для открытия расшифровки");
КонецПроцедурыРазбор по шагам
Создаём наборы полей Книга и Ручка и добавляем два элемента через фабрику Элементы.Добавить.
Берём их свойства Идентификатор только для чтения. Массивный конструктор 8.5.1 получает два настоящих идентификатора.
Данные описания — адрес временного хранилища, а не сам объект ДанныеРасшифровки и не путь к файлу.
Устаревшее одиночное свойство Идентификатор читает первый элемент; его запись заменяет массив одним элементом. Для восстановления создаём новый массив, не предполагая независимость прежней ссылки.
Для сравнения создаём совместимый вариант конструктора с одним идентификатором; не выдаём его за массивный режим.
В том же серверном вызове удаляем ровно созданный адрес. Ошибки операции и удаления сохраняются отдельно.
Как проверить результат
Тринадцать булевых проверок Истина. Массивное описание содержит 2 ID, совместимое — 1.
Поля первого элемента действительно содержат сумму 750; ID не является выдуманной ссылкой на документ.
В конце сообщение об удалении собственного адреса; после него описанием нельзя открывать расшифровку.
Ожидаемый результат
Разобраны новый массивный и старый совместимый контракт без чужих адресов и фиктивных ID.
На что обратить внимание
Массив из строк/GUID не эквивалентен массиву идентификаторов расшифровки; неподходящие элементы фильтруются конструктором.
Не удаляйте адрес, полученный от рабочего отчёта: этот код удаляет только собственный новый адрес.
Описание — параметры будущей обработки, не доказательство открытия отчёта.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Собрать поля расшифровки вымышленной строки Книга
Коллекция хранит имя поля, его значение и признак иерархической записи. Значения не взяты из рабочего отчёта.
Где и как запускать
Полный серверный общий модуль собственной учебной базы; не клиентский модуль формы.
Подготовка
Собственная учебная база 8.5.1.1343. Создайте общий модуль УчебныеКоллекцииСКД с флагом Сервер. Вставьте полный текст одного урока с процедурой ВыполнитьПример() Экспорт.
Из серверной команды своей обработки вызовите УчебныеКоллекцииСКД.ВыполнитьПример(). Таблицы значений и служебные объекты макета остаются на сервере.
Книга / 3 / 750 и Ручка / 1 / 50 — вымышленные собственные данные. Ни справочники, ни документы, ни регистры базы, ни внешние сервисы не читаются.
Различайте схему, настройки, скомпилированный макет и результат. Урок составления отдельной коллекции не называется готовым рабочим отчётом.
В уроке описания расшифровки временное хранилище заполняется только новым собственным объектом, в одном вызове. В конце удаляется ровно этот созданный адрес, включая обработку ошибки.
Не заменяйте собственный новый макет текущим рабочим отчётом: Очистить, Удалить и Сдвинуть в этих уроках относятся к собственной памяти.
Процедура ВыполнитьПример() Экспорт
Поля = Новый ЗначенияПолейРасшифровкиКомпоновкиДанных;
Название = Поля.Добавить();
Название.Поле = "Наименование";
Название.Значение = "Книга";
Название.Иерархия = Ложь;
Сумма = Поля.Добавить();
Сумма.Поле = "Сумма";
Сумма.Значение = 750;
Сумма.Иерархия = Ложь;
Количество = Поля.Вставить(1);
Количество.Поле = "Количество";
Количество.Значение = 3;
Количество.Иерархия = Ложь;
Сообщить(Поля.Количество() = 3);
Сообщить(Поля.Найти("Сумма") = Сумма);
Сообщить(Поля.Найти("Наименование").Значение = "Книга");
Сообщить(Поля.Индекс(Количество) = 1);
Сообщить(Поля.Получить(1).Поле = "Количество");
Сообщить(Количество.Значение = 3);
Сообщить(НЕ Количество.Иерархия);
Поля.Сдвинуть(Сумма, -1);
Сообщить(Поля.Получить(1).Поле = "Сумма");
Поля.Удалить(Количество);
Сообщить(Поля.Количество() = 2);
Сообщить(Поля.Найти("Количество") = Неопределено);
Для Каждого ЗначениеПоля Из Поля Цикл
Сообщить(СтрШаблон("Поле %1: %2", ЗначениеПоля.Поле, ЗначениеПоля.Значение));
КонецЦикла;
Поля.Очистить();
Сообщить(Поля.Количество() = 0);
КонецПроцедурыРазбор по шагам
Создаём два поля Наименование/Книга и Сумма/750, затем вставляем Количество/3 в позицию 1.
Найти ищет по строковому имени Поле; это не ПолеКомпоновкиДанных и не UUID.
Иерархия выключена явно: вымышленная строка не является иерархическим итогом.
Сдвинуть меняет порядок служебных полей, не значение суммы. Удалить принимает элемент.
После чтения собственных полей очищаем только свою новую коллекцию.
Как проверить результат
Одиннадцать булевых проверок Истина; до очистки сообщения Наименование/Книга и Сумма/750.
После удаления Количество поиск возвращает Неопределено, после Очистить количество 0.
Ожидаемый результат
Создан содержательный набор значений для учебной расшифровки.
На что обратить внимание
Коллекция сама не открывает документ или рабочую расшифровку.
Иерархия — признак значения, не создание иерархического справочника.
Не используйте Очистить на данных расшифровки рабочего отчёта без понимания его жизненного цикла.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.