Тип: ПланВидовХарактеристикСсылка.<Имя плана видов характеристик>. Содержит ссылку на родителя элемента вида характеристики.
Полное описание, параметры и ограничения
ПланВидовХарактеристикОбъект.<Имя плана видов характеристик>.Родитель (ChartOfCharacteristicTypesObject.<Chart of characteristic types name>.Parent)
ПланВидовХарактеристикОбъект.<Имя плана видов характеристик> (ChartOfCharacteristicTypesObject.<Chart of characteristic types name>)
Родитель (Parent)
Доступен, начиная с версии 8.0.
Использование:
Чтение и запись.
Описание:
Тип: ПланВидовХарактеристикСсылка.<Имя плана видов характеристик>.
Содержит ссылку на родителя элемента вида характеристики.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Имеет смысл только для многоуровневых видов характеристик.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Создать описание «Вес» и «Цвет» и проверить собственные значения
ТипЗначения определяет разрешённый тип конкретного вида характеристики. Значения 12.5 и Синий держим отдельно от этих описаний; записи в базе не создаются.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую базу и назовите корень конфигурации Учебная85. Не добавляйте учебные объекты в УТ/КА2/УНФ/БП и не подключайте расширения.
Конфигуратор → Планы видов характеристик → Добавить: имя УчебныеСвойства, синоним Учебные свойства. Укажите длину кода 10, длину наименования 100, автонумерацию и контроль уникальности включите.
Включите иерархию плана. В свойстве Тип выберите только Число (12 цифр, 2 дробных, неотрицательное) и Строка (30 символов, переменная длина). Дополнительные значения характеристик не назначайте.
Реквизиты, табличные части, предопределённые элементы, формы, команды, макеты, характеристики и дополнительные индексы не создавайте. Модуль объекта и модуль менеджера оставьте пустыми; историю данных выключите.
Создайте серверный общий модуль УчебныеЗадачи с процедурой ВыполнитьПример() Экспорт и вызывайте её из серверного обработчика учебной обработки. Обновите конфигурацию базы данных перед первым запуском.
Код этого блока не вызывает Записать, не устанавливает блокировки и не меняет настройки метаданных. Учебные виды характеристик существуют только в памяти.
Если Метаданные.ПланыВидовХарактеристик.Найти("УчебныеСвойства") = Неопределено Тогда
ВызватьИсключение "Создайте собственный план УчебныеСвойства по подготовке";
КонецЕсли;
Описание = Метаданные.ПланыВидовХарактеристик.УчебныеСвойства;
Вес = ПланыВидовХарактеристик.УчебныеСвойства.СоздатьЭлемент();
Вес.Код = "WEIGHT";
Вес.Наименование = "Вес, кг";
Вес.ТипЗначения = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(8, 2, ДопустимыйЗнак.Неотрицательный));
Цвет = ПланыВидовХарактеристик.УчебныеСвойства.СоздатьЭлемент();
Цвет.Код = "COLOR";
Цвет.Наименование = "Цвет";
Цвет.ТипЗначения = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(30));
ЗначениеВеса = 12.5;
ЗначениеЦвета = "Синий";
Сообщить(Вес.ТипЗначения.СодержитТип(ТипЗнч(ЗначениеВеса)));
Сообщить(Не Вес.ТипЗначения.СодержитТип(ТипЗнч(ЗначениеЦвета)));
Сообщить(Цвет.ТипЗначения.СодержитТип(ТипЗнч(ЗначениеЦвета)));
Сообщить(Не Цвет.ТипЗначения.СодержитТип(ТипЗнч(ЗначениеВеса)));
Сообщить(Вес.ТипЗначения.Типы().Количество() = 1);
Сообщить(Цвет.ТипЗначения.Типы().Количество() = 1);
Сообщить(Вес.ЭтоНовый());
Сообщить(Цвет.ЭтоНовый());
Сообщить(Вес.Ссылка.Пустая());
Сообщить(Не Вес.ЭтоГруппа);
Сообщить(Вес.Метаданные().Имя = "УчебныеСвойства");
Группа = ПланыВидовХарактеристик.УчебныеСвойства.СоздатьГруппу();
Группа.Наименование = "Учебные числовые свойства";
Сообщить(Группа.ЭтоГруппа);
Сообщить(Группа.ЭтоНовый());
Сообщить(Группа.Ссылка.Пустая());
Сообщить(Вес.Родитель.Пустая());
Сообщить(Не Вес.ПометкаУдаления);
Сообщить(Не Вес.Предопределенный);Разбор по шагам
Создаём два новых объекта видов характеристик и явно ограничиваем каждый одним типом. Оба типа входят в базовый состав плана.
Вес и Цвет — описания, а ЗначениеВеса/ЗначениеЦвета — отдельные значения. СодержитТип сравнивает типы, не диапазон/длину/бизнес-смысл каждого значения.
У незаписанного объекта обычная Ссылка пустая. Проверяем ЭтоНовый, вид элемента и собственные метаданные.
Создаём также новую группу в памяти. Не присваиваем её пустую ссылку в Родитель, не выдавая такое присваивание за связь с сохранённой группой.
Как проверить результат
Семнадцать логических проверок дают Истина.
12.5 подходит по типу к Весу, строка Синий — к Цвету. Перекрёстные типы отвергаются.
Два элемента и группа остаются новыми; список плана в базе пуст.
Ожидаемый результат
Созданы два понятных описания свойств и проверена типовая совместимость их учебных значений.
На что обратить внимание
СодержитТип не проверяет, что вес неотрицателен и умещается в разрядность: квалификаторы и предметные проверки учитываются отдельно.
Не записывайте рабочие дополнительные свойства этим кодом: в типовой конфигурации есть собственные реквизиты, наборы, обработчики и правила.
Ручные учебные коды здесь не демонстрируют автонумерацию или уникальность при записи; запись намеренно отсутствует.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Проверить путь и принадлежность собственного определения цвета
Свойства → Внешний вид → Цвет создаются только внутри отменяемой транзакции. Иерархические методы вызываются именно на ссылках.
Где и как запускать
Полный серверный модуль своей НОВОЙ пустой учебной конфигурации по подготовке; платформа 8.5.1.1343. При записи всегда откат, рабочие данные не используются. Здесь не запускался.
Подготовка
Создайте НОВУЮ пустую файловую базу и назовите корень конфигурации Учебная85. Не добавляйте учебные объекты в УТ/КА2/УНФ/БП и не подключайте расширения.
Конфигуратор → Планы видов характеристик → Добавить: имя УчебныеСвойства, синоним Учебные свойства. Укажите длину кода 10, длину наименования 100, автонумерацию и контроль уникальности включите.
Включите иерархию плана. В свойстве Тип выберите только Число (12 цифр, 2 дробных, неотрицательное) и Строка (30 символов, переменная длина). Дополнительные значения характеристик не назначайте.
В собственной иерархии разрешите группы и элементы с двумя уровнями ниже корня. Реквизитов, табличных частей и предопределённых элементов не создавайте; история выключена.
Модули собственных объектов/менеджеров пустые, подписок, расширений и внешних действий нет. Не используйте рабочую базу или её копию с действующими обработчиками.
Код здесь в 1С не запускался. HTML показывает урок: проверены исходники и установленная справка именно 8.5.1.1343, но запись/открытие формы в ваших базах не выполнялись.
Ссылка идентифицирует запись, объект служит для её изменения. Свойства ссылки readonly, ВерсияДанных — непрозрачная строка, не номер версии конфигурации.
Непустая плановая ссылка не подтверждает существование записи; перед чтением данных отсутствующая запись исключается отдельно.
В собственной базе создайте серверный общий модуль УчебныеСсылкиПланов, вставьте ВЕСЬ модуль одного урока. ВыполнитьПример() Экспорт вызывайте из собственной процедуры формы с &НаСервереБезКонтекста. Обновите конфигурацию БД.
Опыт записи допускается только вне чужой транзакции. Внутри своей транзакции создаются исключительно новые собственные записи; при успехе и ошибке выполняется откат. Не заменяйте его фиксацией.
Записанные собственные ссылки запоминаются сразу после записи. После отмены каждая проверяется на ПолучитьОбъект=Неопределено. Никакого удаления по имени, первой строке или всей коллекции нет.
Процедура ВыполнитьПример() Экспорт
Если Метаданные.ПланыВидовХарактеристик.Найти("УчебныеСвойства") = Неопределено Тогда
ВызватьИсключение "Создайте собственный план УчебныеСвойства по подготовке";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Не запускайте урок внутри чужой транзакции";
КонецЕсли;
СозданныеСсылки = Новый Массив;
НачатьТранзакцию();
Попытка
Корень = ПланыВидовХарактеристик.УчебныеСвойства.СоздатьГруппу();
Корень.Наименование = "Свойства";
Корень.УстановитьНовыйКод("У");
Корень.Записать();
СозданныеСсылки.Добавить(Корень.Ссылка);
Вложенная = ПланыВидовХарактеристик.УчебныеСвойства.СоздатьГруппу();
Вложенная.Наименование = "Внешний вид";
Вложенная.Родитель = Корень.Ссылка;
Вложенная.УстановитьНовыйКод("У");
Вложенная.Записать();
СозданныеСсылки.Добавить(Вложенная.Ссылка);
ВидХарактеристики = ПланыВидовХарактеристик.УчебныеСвойства.СоздатьЭлемент();
ВидХарактеристики.Наименование = "Цвет";
ВидХарактеристики.Родитель = Вложенная.Ссылка;
ВидХарактеристики.ТипЗначения = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(30));
ВидХарактеристики.УстановитьНовыйКод("У");
ВидХарактеристики.Записать();
СозданныеСсылки.Добавить(ВидХарактеристики.Ссылка);
СсылкаКорня = Корень.Ссылка;
СсылкаВложенной = Вложенная.Ссылка;
СсылкаВида = ВидХарактеристики.Ссылка;
Сообщить(СсылкаВида.ПолноеНаименование() = "Свойства/Внешний вид/Цвет");
Сообщить(СсылкаКорня.Уровень() = 0);
Сообщить(СсылкаВложенной.Уровень() = 1);
Сообщить(СсылкаВида.Уровень() = 2);
Сообщить(СсылкаВида.ПринадлежитЭлементу(СсылкаКорня));
Сообщить(СсылкаВида.ПринадлежитЭлементу(СсылкаВложенной));
Сообщить(Не СсылкаВида.ПринадлежитЭлементу(СсылкаВида));
Сообщить(СсылкаВида.Родитель = СсылкаВложенной);
Сообщить(СсылкаКорня.ЭтоГруппа И СсылкаВложенной.ЭтоГруппа И Не СсылкаВида.ЭтоГруппа);
ОтменитьТранзакцию();
Исключение
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
Сообщить(Не ТранзакцияАктивна());
Для Каждого СозданнаяСсылка Из СозданныеСсылки Цикл
Сообщить(СозданнаяСсылка.ПолучитьОбъект() = Неопределено);
КонецЦикла;
КонецПроцедурыРазбор по шагам
Создать две свои группы и один свой элемент; родителей задавать ссылками.
Каждую запись сразу запомнить для проверки после отката.
Получить три настоящие ссылки и проверить полное имя с разделителем /.
Корень имеет уровень 0, вложенная группа 1, элемент 2; пустые ссылки сюда не передаются.
Проверить принадлежность обоим предкам и Ложь для принадлежности самому себе.
После проверки дерева отменить все три свои записи, проверить каждую ссылку.
Как проверить результат
Девять проверок дерева Истина.
После отката три проверки отсутствия Истина, транзакция закрыта.
Никакие существующие группы по имени не выбираются и не удаляются.
Ожидаемый результат
Три метода иерархии ссылки разобраны на полностью созданном собственном дереве.
На что обратить внимание
Прикладной Тип существует только после создания указанных собственных метаданных. В функциональный Новый массив передаёт аргументы конструктора.
Свойства ссылки не присваиваются. Для изменения копии используется именно новый объект, который возвращает Скопировать.
Уровень пустой ссылки вызывает исключение; иерархические методы используются только у записанных собственных объектов внутри транзакции.
Откат БД не отменяет внешние действия обработчиков. Поэтому конфигурация пустая, модули/подписки без сети, печати, файлов и почты.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.