При разработке отчетов или обработок на платформе 1С часто возникает необходимость динамически добавлять колонки в ДеревоЗначений. Одной из частых проблем, с которой сталкиваются разработчики, является ошибка при попытке задать тип для колонки, ссылающейся на конкретный документ или справочник. Давайте разберем, почему возникает ошибка Недопустимое значение параметра и как правильно реализовать эту задачу.
Когда мы пытаемся добавить колонку через конструктор ОписаниеТипов, передавая туда строку с именем типа (например, "ДокументыСсылка.РеализацияТоваровУслуг"), платформа выдает ошибку исполнения. Это происходит потому, что конструктор ожидает не просто строку, а объект, описывающий один или несколько допустимых типов данных.
Чтобы корректно определить тип для колонки, необходимо использовать механизм Массив типов. Рассмотрим пошаговый алгоритм правильной инициализации:
Тип(), передавая ей строковое представление метаданных.ОписаниеТипов на основе сформированного массива.Колонки дерева значений.Давайте посмотрим, как это выглядит на практике. Использование Массив типов позволяет платформе корректно распознать ссылку на нужный объект конфигурации:
// 1. Создаем массив типов
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
// 2. Создаем описание типов на основе массива
ОписаниеТиповДляКолонки = Новый ОписаниеТипов(МассивТипов);
// 3. Добавляем колонку в дерево значений
КопияДерева.Колонки.Добавить("Реализация", ОписаниеТиповДляКолонки);
Используя этот подход, вы избежите ошибки Недопустимое значение параметра, так как теперь вы передаете платформе корректно сформированный объект ОписаниеТипов, а не просто строку, которую интерпретатор не может преобразовать в тип данных.
Еще один важный вопрос, который часто возникает при разработке: почему после сохранения правок во внешнем отчете (файл .erf или .epf) исполняется старый код? Это классическая проблема кэширования 1С.
Рассмотрим основные причины и способы решения:
Если после добавления колонки вы обнаружили, что данные не выводятся в отчете СКД, помните, что простого добавления колонки в ДеревоЗначений недостаточно. Система компоновки данных работает с наборами данных, которые должны быть явно описаны в схеме компоновки.
Если вы программно модифицируете дерево, которое затем передается в СКД, убедитесь, что:
СкомпоноватьРезультат.Проанализировав эти моменты, вы сможете эффективно работать с динамическими структурами данных и избежать «зависания» старого кода при отладке. Помните, что чистота кэша и правильное описание типов данных — залог стабильной работы ваших разработок.