Тип: Произвольный. Содержит идентификатор родителя текущей строки таблицы. Используется только в режиме иерархического списка.
Полное описание, параметры и ограничения
ТаблицаФормы.ТекущийРодитель (FormTable.CurrentParent)
ТаблицаФормы (FormTable)
ТекущийРодитель (CurrentParent)
Доступен, начиная с версии 8.2.
Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Содержит идентификатор родителя текущей строки таблицы.
Используется только в режиме иерархического списка.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Тип определяется расширением таблицы.
См. также:
Расширение таблицы формы для таблицы значений
Расширение таблицы формы для дерева значений
Расширение таблицы формы для списка значений
Расширение таблицы формы для табличных частей
Расширение таблицы формы для отбора
Расширение таблицы формы для динамического списка
Расширение данных строки для динамического списка
ТаблицаФормы, метод ДанныеСтроки
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Выбрать Книгу в дереве и посмотреть текущего родителя таблицы
ТекущийРодитель относится к отображению иерархической таблицы. Для родителя данных отдельно используем ПолучитьРодителя строки дерева.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В учебной базе создайте новую внешнюю обработку УчебноеДерево с пустой управляемой основной формой. Каждую задачу размещайте в отдельной копии формы.
Не создавайте вручную реквизит Категории и элементы ДеревоКатегорий: код создаёт их программно.
В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре из кода. Остальные процедуры вставьте полностью на уровне модуля.
Сохраните собственную EPF и откройте в 1С через Файл → Открыть. Данные Книга/Ручка создаются только в памяти формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
Новые.Добавить(Новый РеквизитФормы("Категории", Новый ОписаниеТипов("ДеревоЗначений")));
Новые.Добавить(Новый РеквизитФормы("Название", Новый ОписаниеТипов("Строка"), "Категории"));
Новые.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число"), "Категории"));
ЭтаФорма.ИзменитьРеквизиты(Новые);
Дерево = Новый ДеревоЗначений;
Дерево.Колонки.Добавить("Название", Новый ОписаниеТипов("Строка"));
Дерево.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Группа = Дерево.Строки.Добавить();
Группа.Название = "Канцелярия";
Книга = Группа.Строки.Добавить();
Книга.Название = "Книга";
Книга.Количество = 3;
Ручка = Группа.Строки.Добавить();
Ручка.Название = "Ручка";
Ручка.Количество = 1;
Резерв = Дерево.Строки.Добавить();
Резерв.Название = "Резерв";
ЭтаФорма.ЗначениеВРеквизитФормы(Дерево, "Категории");
Таблица = Элементы.Добавить("ДеревоКатегорий", Тип("ТаблицаФормы"));
Таблица.ПутьКДанным = "Категории";
Таблица.Отображение = ОтображениеТаблицы.Дерево;
Таблица.Заголовок = "Учебные категории — данные только в памяти";
Таблица.АвтоВводНовойСтроки = Ложь;
Таблица.АвтоВводНезаполненного = Ложь;
Для Каждого ИмяКолонки Из СтрРазделить("Название,Количество", ",") Цикл
Поле = Элементы.Добавить("Категории" + ИмяКолонки, Тип("ПолеФормы"), Таблица);
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "Категории." + ИмяКолонки;
Поле.Заголовок = ИмяКолонки;
КонецЦикла;
Таблица.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВерхнийУровень;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить своё дерево";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Корни = ЭтаФорма.Категории.ПолучитьЭлементы();
Если Корни.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Группа = Корни.Получить(0);
Дети = Группа.ПолучитьЭлементы();
Если Дети.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Книга = Дети.Получить(0);
Если Книга.Название <> "Книга" Тогда
ВызватьИсключение "Нужна исходная учебная Книга";
КонецЕсли;
Таблица = Элементы.ДеревоКатегорий;
Таблица.Развернуть(Группа.ПолучитьИдентификатор());
Таблица.ТекущаяСтрока = Книга.ПолучитьИдентификатор();
ЭтаФорма.ТекущийЭлемент = Таблица;
Сообщить(Книга.ПолучитьРодителя() = Группа);
Сообщить("Текущий родитель UI: " + Строка(Таблица.ТекущийРодитель));
Сообщить("Идентификатор родителя данных: " + Строка(Группа.ПолучитьИдентификатор()));
КонецПроцедурыРазбор по шагам
Начальный режим раскрывает верхний уровень, а не обязательно все уровни произвольного дерева.
Проверяем наличие корня/детей и собственную Книгу до обращения к индексам.
Для выбора используем идентификатор строки, раскрываем её группу и ставим фокус в таблицу.
ПолучитьРодителя проверяет связь данных; ТекущийРодитель выводится отдельно как состояние UI, без предположения, что это индекс или объект базы.
Как проверить результат
Проверка родителя данных Истина; в дереве выбрана Книга под Канцелярией.
Сравните диагностические идентификаторы после отображения в своём клиенте; строки и количества не изменяются.
Ожидаемый результат
Отделены навигационное состояние таблицы, родитель строки данных и сохранённая ссылка базы.
На что обратить внимание
Свойство ТекущийРодитель используется только при иерархическом отображении.
Идентификатор данных формы не является UUID справочника.
Состояние UI может обновляться при отображении, а не синхронно с каждым присваиванием.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.