ОписаниеОбработкиРасшифровкиКомпоновкиДанных.Для совместимости

Конструкторы

Создает описание обработки расшифровки компоновки данных.

Синтаксис

Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(<Данные>, <Идентификатор>, <ПрименяемыеНастройки>)
Полное описание, параметры и ограничения

ОписаниеОбработкиРасшифровкиКомпоновкиДанных.Для совместимости

ОписаниеОбработкиРасшифровкиКомпоновкиДанных (DataCompositionDetailsProcessDescription)

Для совместимости

Доступен, начиная с версии 8.2.

Синтаксис:
Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(<Данные>, <Идентификатор>, <ПрименяемыеНастройки>)
Параметры:

<Данные> (необязательный)
Тип: Строка.
Адрес хранилища, из которого нужно получать данные расшифровки.

<Идентификатор> (необязательный)
Тип: ИдентификаторКомпоновкиДанных.
Идентификатор расшифровки.

<ПрименяемыеНастройки> (необязательный)
Тип: НастройкиКомпоновкиДанных.
Настройки, применяемые для расшифровки.
Описание:

Создает описание обработки расшифровки компоновки данных.

Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Создать описание двух расшифровок с настоящими идентификаторами

Идентификаторы получаются от собственных элементов ДанныеРасшифровки, не сочиняются из строк или УникальныйИдентификатор.

Где и как запускать

Полный серверный общий модуль собственной учебной базы; не клиентский модуль формы.

Подготовка

  1. Собственная учебная база 8.5.1.1343. Создайте общий модуль УчебныеКоллекцииСКД с флагом Сервер. Вставьте полный текст одного урока с процедурой ВыполнитьПример() Экспорт.

  2. Из серверной команды своей обработки вызовите УчебныеКоллекцииСКД.ВыполнитьПример(). Таблицы значений и служебные объекты макета остаются на сервере.

  3. Книга / 3 / 750 и Ручка / 1 / 50 — вымышленные собственные данные. Ни справочники, ни документы, ни регистры базы, ни внешние сервисы не читаются.

  4. Различайте схему, настройки, скомпилированный макет и результат. Урок составления отдельной коллекции не называется готовым рабочим отчётом.

  5. В уроке описания расшифровки временное хранилище заполняется только новым собственным объектом, в одном вызове. В конце удаляется ровно этот созданный адрес, включая обработку ошибки.

  6. Не заменяйте собственный новый макет текущим рабочим отчётом: Очистить, Удалить и Сдвинуть в этих уроках относятся к собственной памяти.

Процедура ВыполнитьПример() Экспорт
    Поля = Новый ЗначенияПолейРасшифровкиКомпоновкиДанных;
    Название = Поля.Добавить();
    Название.Поле = "Наименование";
    Название.Значение = "Книга";
    Название.Иерархия = Ложь;
    Сумма = Поля.Добавить();
    Сумма.Поле = "Сумма";
    Сумма.Значение = 750;
    Сумма.Иерархия = Ложь;
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    Настройки = Новый НастройкиКомпоновкиДанных;
    ДанныеРасшифровки.Настройки = Настройки;
    Первый = ДанныеРасшифровки.Элементы.Добавить(Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля"), , Поля);
    ПоляРучки = Новый ЗначенияПолейРасшифровкиКомпоновкиДанных;
    Ручка = ПоляРучки.Добавить();
    Ручка.Поле = "Наименование";
    Ручка.Значение = "Ручка";
    Ручка.Иерархия = Ложь;
    Второй = ДанныеРасшифровки.Элементы.Добавить(Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля"), , ПоляРучки);
    Идентификаторы = Новый Массив;
    Идентификаторы.Добавить(Первый.Идентификатор);
    Идентификаторы.Добавить(Второй.Идентификатор);
    СобственныйАдрес = Неопределено;
    ОшибкаОперации = "";
    ОшибкаУдаления = "";
    Попытка
        СобственныйАдрес = ПоместитьВоВременноеХранилище(ДанныеРасшифровки);
        Описание = Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(СобственныйАдрес, Идентификаторы, Настройки);
        Сообщить(Описание.Данные = СобственныйАдрес);
        Сообщить(Описание.Идентификаторы.Количество() = 2);
        Сообщить(Описание.Идентификаторы[0] = Первый.Идентификатор);
        Сообщить(Описание.Идентификаторы[1] = Второй.Идентификатор);
        Сообщить(Описание.Идентификатор = Первый.Идентификатор);
        Сообщить(ТипЗнч(Описание.ПрименяемыеНастройки) = Тип("НастройкиКомпоновкиДанных"));
        Описание.Идентификатор = Второй.Идентификатор;
        Сообщить(Описание.Идентификаторы.Количество() = 1);
        Сообщить(Описание.Идентификаторы[0] = Второй.Идентификатор);
        ВосстановленныеИдентификаторы = Новый Массив;
        ВосстановленныеИдентификаторы.Добавить(Первый.Идентификатор);
        ВосстановленныеИдентификаторы.Добавить(Второй.Идентификатор);
        Описание.Идентификаторы = ВосстановленныеИдентификаторы;
        Описание.Данные = СобственныйАдрес;
        Описание.ПрименяемыеНастройки = Настройки;
        Сообщить(Описание.Идентификаторы.Количество() = 2);
        СтароеОписание = Новый ОписаниеОбработкиРасшифровкиКомпоновкиДанных(СобственныйАдрес, Первый.Идентификатор, Настройки);
        Сообщить(СтароеОписание.Идентификаторы.Количество() = 1);
        Сообщить(СтароеОписание.Идентификатор = Первый.Идентификатор);
        Сообщить(ДанныеРасшифровки.Элементы.Количество() = 2);
        Сообщить(Первый.ПолучитьПоля().Найти("Сумма").Значение = 750);
    Исключение
        ОшибкаОперации = ОписаниеОшибки();
    КонецПопытки;
    Если ТипЗнч(СобственныйАдрес) = Тип("Строка") Тогда
        Попытка
            УдалитьИзВременногоХранилища(СобственныйАдрес);
        Исключение
            ОшибкаУдаления = ОписаниеОшибки();
        КонецПопытки;
    КонецЕсли;
    Если НЕ ПустаяСтрока(ОшибкаОперации) ИЛИ НЕ ПустаяСтрока(ОшибкаУдаления) Тогда
        ВызватьИсключение "Ошибка собственного описания расшифровки: " + ОшибкаОперации + " Ошибка удаления собственного адреса: " + ОшибкаУдаления;
    КонецЕсли;
    Сообщить("Собственный временный адрес удалён; описание больше не следует использовать для открытия расшифровки");
КонецПроцедуры

Разбор по шагам

  1. Создаём наборы полей Книга и Ручка и добавляем два элемента через фабрику Элементы.Добавить.

  2. Берём их свойства Идентификатор только для чтения. Массивный конструктор 8.5.1 получает два настоящих идентификатора.

  3. Данные описания — адрес временного хранилища, а не сам объект ДанныеРасшифровки и не путь к файлу.

  4. Устаревшее одиночное свойство Идентификатор читает первый элемент; его запись заменяет массив одним элементом. Для восстановления создаём новый массив, не предполагая независимость прежней ссылки.

  5. Для сравнения создаём совместимый вариант конструктора с одним идентификатором; не выдаём его за массивный режим.

  6. В том же серверном вызове удаляем ровно созданный адрес. Ошибки операции и удаления сохраняются отдельно.

Как проверить результат

  1. Тринадцать булевых проверок Истина. Массивное описание содержит 2 ID, совместимое — 1.

  2. Поля первого элемента действительно содержат сумму 750; ID не является выдуманной ссылкой на документ.

  3. В конце сообщение об удалении собственного адреса; после него описанием нельзя открывать расшифровку.

Ожидаемый результат

Разобраны новый массивный и старый совместимый контракт без чужих адресов и фиктивных ID.

На что обратить внимание

  1. Массив из строк/GUID не эквивалентен массиву идентификаторов расшифровки; неподходящие элементы фильтруются конструктором.

  2. Не удаляйте адрес, полученный от рабочего отчёта: этот код удаляет только собственный новый адрес.

  3. Описание — параметры будущей обработки, не доказательство открытия отчёта.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.