КоллекцияКолонокДереваЗначений.Добавить

Методы · Add

Добавляет колонку в конец коллекции колонок дерева значений.

Синтаксис

Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>)

Примеры платформы

МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Число"));
КЧ = Новый КвалификаторыЧисла(10,3);
ОписаниеЧисло = Новый ОписаниеТипов(МассивТипов,КЧ);
КолонкиСостава = ДеревоСостава.Колонки;
КолонкиСостава.Добавить("Количество", ОписаниеЧисло, "Кол-во", 14);
Полное описание, параметры и ограничения

КоллекцияКолонокДереваЗначений.Добавить (ValueTreeColumnCollection.Add)

КоллекцияКолонокДереваЗначений (ValueTreeColumnCollection)

Добавить (Add)

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

Синтаксис:
Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>)
Параметры:

<Имя> (необязательный)
Тип: Строка.
Имя колонки.
Значение по умолчанию: Пустая строка.

<Тип> (необязательный)
Тип: ОписаниеТипов.
Объект, описывающий допустимые типы значений для колонки. Если параметр не указан, в колонке можно будет хранить значение любого типа.

<Заголовок> (необязательный)
Тип: Строка.
Заголовок колонки. Используется при визуальном отображении дерева значений.
Значение по умолчанию: Пустая строка.

<Ширина> (необязательный)
Тип: Число.
Ширина колонки в символах. Используется при визуальном отображении дерева значений.
Значение по умолчанию: 0.
Возвращаемое значение:
Тип: КолонкаДереваЗначений.

Описание:

Добавляет колонку в конец коллекции колонок дерева значений.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Пример:

МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Число"));
КЧ = Новый КвалификаторыЧисла(10,3);
ОписаниеЧисло = Новый ОписаниеТипов(МассивТипов,КЧ);
КолонкиСостава = ДеревоСостава.Колонки;
КолонкиСостава.Добавить("Количество", ОписаниеЧисло, "Кол-во", 14);

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

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

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

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

Развернуть и свернуть собственное дерево товаров

Один раздел содержит книгу и ручку. Операции раскрытия относятся к интерфейсу; текущий родитель — строка дерева, не ссылка рабочего справочника.

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

Полный модуль новой обычной формы внешней обработки. Только толстый клиент с обычными формами, не сервер и не управляемая форма.

Подготовка

  1. В отдельной внешней обработке создайте обычную форму с реквизитом ДеревоТоваров типа ДеревоЗначений. Добавьте табличное поле ТаблицаДерева, Данные=ДеревоТоваров, и кнопку УчебнаяКоманда.

  2. Свяжите события ПриОткрытии формы и действие кнопки с одноимёнными процедурами. Запускайте только толстым клиентом в режиме обычных форм.

  3. Полный код модуля создаёт своё дерево в памяти. Данные рабочего иерархического справочника не читаются и не меняются.

Процедура ПриОткрытии()
    ДеревоТоваров = Новый ДеревоЗначений;
    ДеревоТоваров.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    ДеревоТоваров.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Раздел = ДеревоТоваров.Строки.Добавить();
    Раздел.Наименование = "Учебные товары";
    Раздел.Количество = 0;
    Книга = Раздел.Строки.Добавить();
    Книга.Наименование = "Книга";
    Книга.Количество = 3;
    Ручка = Раздел.Строки.Добавить();
    Ручка.Наименование = "Ручка";
    Ручка.Количество = 1;
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаДерева;
    Таблица.СоздатьКолонки();
    Таблица.АвтоВводНовойСтроки = Ложь;
    Таблица.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;
    КолонкаИмени = Таблица.Колонки.Найти("Наименование");
    Если КолонкаИмени = Неопределено Тогда
        ВызватьИсключение "Нет колонки собственного дерева";
    КонецЕсли;
    КолонкаИмени.ОтображатьИерархию = Истина;
    Таблица.ТекущаяСтрока = Раздел;
КонецПроцедуры

Процедура УчебнаяКоманда(Кнопка)
    Если ДеревоТоваров.Строки.Количество() <> 1 Тогда
        ВызватьИсключение "Ожидался один собственный раздел";
    КонецЕсли;
    Раздел = ДеревоТоваров.Строки[0];
    Если Раздел.Строки.Количество() <> 2 Тогда
        ВызватьИсключение "Ожидались две собственные дочерние строки";
    КонецЕсли;
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаДерева;
    Таблица.Свернуть(Раздел);
    Сообщить(Не Таблица.Развернут(Раздел));
    Таблица.Развернуть(Раздел, Истина);
    Сообщить(Таблица.Развернут(Раздел));
    Таблица.ТекущийРодитель = Раздел;
    Сообщить(Таблица.ТекущийРодитель = Раздел);
    Сообщить(Раздел.Строки[0].Количество + Раздел.Строки[1].Количество = 4);
КонецПроцедуры

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

  1. Раздел, книга и ручка создаются в собственном дереве. Колонки формируются только из его полей.

  2. НачальноеОтображениеДерева задаёт первоначальное состояние. Кнопка проверяет раскрытие отдельно после Свернуть и Развернуть.

  3. СПодчиненными=Истина раскрывает также подчинённые уровни, если они есть.

  4. ТекущийРодитель задаётся собственным объектом строки, не числом индекса и не строкой имени.

  5. Перед каждым индексным доступом проверено ожидаемое число своих строк. После операций количество книг и ручек в сумме 4.

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

  1. Четыре сообщения Истина.

  2. После кнопки раздел раскрыт, два товара сохранены; повторное нажатие повторяет сворачивание и раскрытие.

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

Проверен цикл отображения собственного дерева без модификации иерархии данных.

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

  1. ТабличноеПоле не равно ТаблицаФормы управляемого клиента: этот код туда не подходит.

  2. Сворачивание не удаляет дочерние строки.

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

Настроить колонки дерева категорий

Колонки общие для всех уровней дерева. Создаём код и название, изменяем отображение и удаляем служебную колонку.

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

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

Подготовка

  1. Выполняйте на сервере. Не требуется конфигурация с готовыми справочниками.

  2. Строки дерева пока не заполнены: изменение структуры видно без риска потери учебных значений.

Категории = Новый ДеревоЗначений;
Колонки = Категории.Колонки;
Название = Колонки.Добавить("Название", Новый ОписаниеТипов("Строка"));
Колонки.Добавить("Служебная");
Код = Колонки.Вставить(0, "Код", Новый ОписаниеТипов("Строка"), "Код категории", 12);
Название.Заголовок = "Категория или товар";
Название.Ширина = 30;
Сообщить(Код.Имя);
Сообщить(Название.Заголовок);
Сообщить(Название.Ширина);
Сообщить(Название.ТипЗначения.СодержитТип(Тип("Строка")));
Колонки.Сдвинуть(Название, -1);
Сообщить(Колонки.Индекс(Название));
Сообщить(Колонки.Получить(0) = Название);
Служебная = Колонки.Найти("Служебная");
Если Служебная <> Неопределено Тогда
    Колонки.Удалить(Служебная);
КонецЕсли;
Сообщить(Колонки.Количество());
Копия = Категории.Скопировать();
Копия.Колонки.Очистить();
Сообщить(Копия.Колонки.Количество());

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

  1. Добавляем название и служебную колонку; код вставляем в позицию 0.

  2. Устанавливаем заголовок и ширину названия, читаем имя и допустимый тип.

  3. Перемещаем название в начало и проверяем позицию двумя способами.

  4. Удаляем служебную колонку, затем очищаем колонки только отдельной копии.

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

  1. Индекс названия после сдвига равен 0; Получить(0) возвращает тот же объект.

  2. У исходного дерева остаётся 2 колонки, у очищенной копии 0.

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

Порядок колонок: Название, Код; тип обеих колонок — строка.

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

  1. Настройка колонок дерева затрагивает все уровни, а не одну выбранную категорию.

  2. Имя колонки для программного доступа и Заголовок для пользователя имеют разное назначение.

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

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

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

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

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