что такое план видов характеристик в 1с
Как использовать и настроить планов видов характеристик (ПВХ) в 1С 8
План видов характеристик в 1С 8.3 (ПВХ) — объект метаданных, предназначенный для организации хранения информации свойств объектов и аналитики. Подразумевается, что разработчику на стадии разработки неизвестно, какие свойства захочет использовать пользователь.
Ключевой особенностью ПВХ является наличие двух особых реквизитов — Тип значения характеристик и Дополнительные значения характеристик.
Примеров использования в типовых конфигурациях очень много: хранение аналитики, субконто (для планов счетов), хранение свойств, различные права пользователей.
Настройка и свойства Плана вида характеристик в 1С
Рассмотрим пример использования, настройку и основные свойства плана видов характеристик на примере механизма дополнительных сведений и реквизитов конфигурации Управление торговли, редакции 11.
Стандартные реквизиты ПВХ отличается от обычных справочников только наличием реквизита «ТипЗначения». Это реквизит, в котором хранится тип свойства:
В 1С УТ 11 для хранения свойств используется отдельный регистр — ДополнительныеСведения. В котором для связки Объект/Свойство (измерения) хранится ресурс Значение с типом данных Характеристика.ДополнительныеРеквизитыИСведения.
По сути ПВХ — это простой справочник, который умеет хранить тип данных.
Видеоурок по планам видов характеристик в 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Программирование 1С 8.х для начинающих
Конфигурация
План видов характеристик в 1С
План видов характеристик достаточно простой объект, раньше при изучении, когда разбирал примеры в учебниках, то он казался сложным т.к. сразу давался в купе с другими объектами. Это были примеры характеристик для номенклатуры или субконто. Так что же это такое ПВХ?
Думаю, Вы знакомы с такими понятиями как ОписаниеТипов и Справочник. Если нет, то посмотрите нижеуказанные статьи перед дальнейшим чтением, тогда всё станет более понятно.
Статья об ОписанииТипов тут.
Статья о Справочниках тут.
Итак, продолжим. Если Вам уже известны ОписанияТипов и Справочники, то План видов характеристик это Справочник + ОписаниеТипов . Как видите всё просто. И эта мысль главная, т.е. сам по себе план видов характеристик не может реализовать функционал характеристики номенклатуры или субконто, для этого дополнительно используются свойства и механизмы других объектов.
Давайте рассмотрим, как настраивается функционал характеристик для номенклатуры.
Задача
Итак, у нас есть Номенклатура для которой нужно установить какие-то дополнительные свойства, например:
На данной картинке ПВХ будет отвечать за колонку «Свойство» и тип значения в колонке «Значение».
Создаем ПВХ
Чтобы указать дополнительный справочник нужно сначала у этого справочника установить владельцем наш ПВХ иначе его не будет в списке выбора, а дальше выбрать его в свойствах ПВХ на закладке «Основные».
Небольшое пояснение о работе ПВХ. Сначала на закладке «Основные» мы выбираем все типы доступные в данном ПВХ в поле «Тип значения характеристик», а у элементов устанавливаем тип значения уже из доступных в данном ПВХ. В нашем случае для ПВХ можно выбрать только справочник «ДопЗначения».
Создаем регистр сведений
Вот мы создали свойства(ПВХ) и справочник для хранения значений(ДопЗначения) теперь нужно связать номенклатуру и свойства. Для этого используется регистр сведений, в нашем случае у него будут следующие поля: измерения «Номенклатура, СвойствоНоменклатуры» и ресурс «ЗначениеСвойства»
Если Вы используете управляемые формы то достаточно будет добавить для ресурса «ЗначениеСвойства» в регистре «ЗначенияСвойствНоменклатуры» Связь по типу с полем «СвойствоНоменклатуры» и тогда, во время редактировании записи регистра сведений, при выборе значения для поля «СвойствоНоменклатуры» будет изменяться тип значения в поле «ЗначениеСвойства».
Если у Вас обычное приложение то эту связь, «Связь по типу», нужно будет настраивать в форме для поля ввода «ЗначениеСвойства» и при этом нужно будет в событие ПриИзмении поля «СвойствоНоменклатуры» использовать метод » ПривестиЗначение() » чтобы избавиться от излишнего выбора типа и избежать ошибочных ситуаций:
Отбор по владельцу
Т.к. у нас справочник «ДопЗначения» подчинен ПВХ «СвойстваНоменклатуры» то можно установить отбор, чтобы при выборе СвойствоНоменклатуры в поле «ЗначениеСвойства» можно было выбать только из подчиненных элементов. Для управляемого приложения это делается в свойствах ресурса, свойство называется «Связи параметров выбора» нужно выбрать «Отбор.Владелец(СвойствоНоменклатуры)». Для обычного приложения ничего делать не надо т.к. установив Связь по типу программа сама будет показывать только подчиненные элементы.
Важно! Свойство «Связь по типу» работает только с реквизитами у которых тип ПВХ.
В заключении
Таким образом посредством регистра сведений мы связали справочник «Номенклатура» с его свойствами ПВХ «СвойстваНоменклатуры» и его значениями справочник «ДопЗначения».
Важно! Все интересующие нас данные т.е. характеристики номенклатуры хранятся именно в регистре, а не в ПВХ.
Для управляемого приложения есть ссылка на панели навигации
Вы догадались, что также можно перейти в регистр и из ПВХ т.к. измерение «СвойствоНоменклатуры» тоже ведущее.
План видов характеристик в 1С 8.3
Характеристики
Для хранения различных характеристик товаров можно использовать реквизиты справочника, например цвет, размер, производитель и т.п. Но в этом случае если нужно будет добавить новую характеристику, например состав, то придется добавлять новый реквизит справочника. А также какие-то характеристики могут использоваться только для части товаров, следовательно у остальных товаров данный реквизит будет не заполнен.
Именно для решения данной задачи и используется план видов характеристик. По своей структуре план видов характеристик практически не отличается от справочника. Его основное отличие в том, что для каждого элемента можно указать тип значения. Тип хранится в реквизите ТипЗначения, который имеет тип ОписаниеТипов.
При создании нового плана видов характеристик нужно указать перечень возможных типов значений, которые можно будет указывать для элементов плана. Типы нужно указать на закладке Основные в свойстве Тип значения характеристик:
При создании нового элемента плана видов характеристик можно выбрать тип из тех, которые были указаны в конфигураторе:
Можно выбрать не все типы, для примитивных типов можно изменить квалификаторы (только в меньшую сторону). Но добавить новые типы, которые не были указаны в конфигураторе — нельзя.
План видов характеристик, помимо основного типа ПланВидовХарактеристикСсылка.ИмяПлана добавляет еще один тип: Характеристика.ИмяПлана:
Если для реквизита выбрать тип Характеристика.ИмяПлана, то в этом реквизите можно хранить значения тех типов, которые были указаны для плана видов характеристик.
Для более лучшего понимания как это работает, рассмотрим несколько примеров.
Использование характеристик
Например, в конфигурации есть справочник Товары:
Нужно хранить характеристики товаров без добавления новых реквизитов в справочник. Тип характеристики может быть: Строка, Число, Булево, Дата, СправочникСсылка.Контрагенты.
Добавим новый план видов характеристик Характеристики:
Здесь будут храниться виды характеристик, например цвет, размер, состав и т.п.
Для хранения значений характеристик добавим регистр сведений ЗначенияХарактеристик:
Измерение Товар имеет тип СправочникСсылка.Товары, здесь будет храниться ссылка на товар.
Измерение Характеристика имеет тип ПланВидовХарактеристикСсылка.Характеристики, здесь будет храниться ссылка на вид характеристики.
Ресурс ЗначениеХарактеристики имеет тип Характеристика.Характеристики, здесь будут храниться сами значения характеристики.
Для того чтобы при заполнении измерения Характеристика автоматически определялся тип ресурса ЗначениеХарактеристики в свойствах ресурса заполним свойство Связь по типу:
Выберем там измерение Характеристика.
А также у измерения Товар установим флаг Ведущее, чтобы при удалении товара автоматически удалялись связанные с ним характеристики.
Теперь в настройках справочника Товары перейдем на закладку Данные и по кнопке Характеристики откроем окно настроек дополнительных характеристик объекта метаданных:
Именно здесь нужно настроить где хранятся виды характеристик, а где значения.
Добавим новую строку и заполним следующим образом:
Сохраним конфигурацию базы данных и перейдем в пользовательский режим. На форме элемента справочника Товары появилась гиперссылка для перехода к регистру сведений Значения характеристик:
Перейдем туда и добавим новую запись. В поле Характеристика создадим новый элемент плана видов характеристик Цвет и укажем для него тип Строка:
Тип для значения характеристик автоматически определился как строка, введем туда Белый:
Запишем. Теперь в форме списка и в отчетах можно использовать характеристики как будто это реквизиты справочника:
Дополнительные значения характеристик
Сейчас для хранения цвета мы использовали реквизит с типом Строка. Однако, на практике это не совсем удобно. Одни пользователь введет Белый, второй белый, третий еще как-нибудь и в отчетах не получится настраивать отбор и группировку по этому полю. В этом случае лучше использовать справочник. Чтобы не создавать отдельный справочник для каждого вида характеристик используются Дополнительные значения характеристик.
Добавим новый справочник ДополнительныеЗначенияХарактеристик:
На закладке Владельцы укажем, что данный справочник подчичен плану видов характеристик Характеристики:
Добавим этот справочник в состав возможных типов плана видов характеристик, а также укажем его в свойстве Дополнительные значения характеристик на закладке Основные:
Если не включить справочник из свойства Дополнительные значения характеристик в состав возможных типов плана, то при сохранении конфигурации базы данных может возникнуть ошибка: «Ссылка на справочник значений не указана в типе значений плана видов характеристик».
А также для ресурса ЗначениеХарактеристики регистра сведений ЗначенияХарактеристик заполним свойство Связи параметров выбора:
Это нужно для того, чтобы при выборе значений из справочника Дополнительные значения характеристик предлагались только те элементы, которые подчинены конкретному элементу плана видов характеристик.
Теперь если для вида характеристики выбрать тип Дополнительные значения характеристик, то при выборе значения будет предлагаться выбор из справочника. При этом для выбора будут доступны только те элементы, которые подчинены данному виду характеристик.
Хотя все эти значения хранятся в одном справочнике:
Характеристики для нескольких объектов
Для того чтобы в одном плане виде характеристик и регистре сведений можно было хранить дополнительные характеристики для нескольких объектов нужно добавить в план видов характеристик реквизит ВидОбъекта. Тип этого реквизита перечисление, со значениями для каждого объекта метаданных:
В регистре сведений ЗначенияХарактеристик переименуем измерение Товар в Объект, потому что теперь в нем будут храниться как ссылки на товары, так и на контрагентов. В тип добавим СправочникСсылка.Контрагенты.
Откроем окно редактирования дополнительных характеристик для справочника Товары и заполним поля Поле отбора видов и Значение отбора видов:
А также настроим для справочника Контрагенты, только в качестве значения укажем свое значение перечисления:
Теперь в пользовательском режиме можно указывать для какого объекта используется характеристика:
И также в форме списка можно вывести характеристики:
Хранение дополнительных характеристик в табличной части
Значения характеристик можно хранить не только в регистре сведений, но и в табличной части. Например, добавим у справочника Товары табличную часть СписокХарактеристик с двумя реквизитами: Характеристика, тип ПланВидовХарактеристикСсылка.Характеристики и ЗначениеХарактеристики, тип Характеристика.Характеристики. Также как и для ресурса регистра сведений, настроим для реквизита ЗначениеХарактеристики связи параметров выбора и связь по типу:
Перенастроим хранение дополнительных характеристик, указав что теперь они хранятся в табличной части:
Теперь характеристики можно добавлять прямо в форме объекта:
Наборы характеристик
Чтобы одна и та же характеристика была доступна для разных объектов можно использовать наборы характеристик. Добавим справочник НаборыХарактеристик. У справочника добавим табличную часть СоставНабора с одним реквизитом Характеристика, тип ПланВидовХарактеристикСсылка.Характеристика:
А также добавим два предопределенных элемента:
В этих элементах в пользовательском режиме нужно будет заполнить те характеристики, которые будут доступны для объекта метаданных.
Перенастроим хранение дополнительных характеристик, указав что теперь сами характеристики хранятся в табличной части справочника НаборыХарактеристик, а отбор выполняется по ссылке:
Аналогично для контрагентов, только в поле Значение отбора видов укажем свой предопределенный элемент:
Теперь в пользовательском режиме для каждого предопределенного элемента можно указать свой состав характеристик, в том числе одинаковые характеристики для разных объектов метаданных:
Программная работа с планом видов характеристик
Программная работа с планом видов характеристик во многом схожа с программной работой со справочниками, поэтому разберем только специфические для плана вида характеристик операции.
При программном создании нового элемента плана видов характеристик нужно заполнять реквизит ТипЗначения, который имеет тип ОписаниеТипов:
Использование характеристик в системе компоновки данных
Описание характеристик
В описании характеристики указывается:
Тип, для которого определяются характеристики
Возможно описание характеристики для составного типа. При этом характеристики будут применяться ко всем полям, в типе значений которых есть хотя бы один из типов, для которых описаны характеристики.
Описание списка характеристик
О каждой характеристике системе необходимо знать следующую информацию:
Ссылка | ПометкаУдаления | Предопределенный | Код | Наименование | ТипЗначения | |
---|---|---|---|---|---|---|
Масса | ложь | ложь | 000000001 | Масса | Число | |
Ширина | ложь | ложь | 000000003 | Ширина | Число | |
Высота | ложь | ложь | 000000004 | Высота | Число |
Таким образом, система получит следующий список характеристик:
Идентификатор | Имя | ТипЗначения | |
---|---|---|---|
Масса | Масса | Число | |
Ширина | Ширина | Число | |
Высота | Высота | Число |
Как видно, данные поля отображаются в списке реквизитов поля Номенклатура и ничем не отличаются от обычных реквизитов.
Номенклатура | Код | Масса |
---|---|---|
Лазерный принтер 5250197-203 Minolta-QMS | 0000031 | 5 800 |
Лазерный принтер Canon LBP-810 | 0000030 | 4 300 |
Лазерный принтер HP LaserJet 2200 | 0000032 |
При описании списка характеристик можно указать, из какой таблицы информационной базы получать характеристики, либо указать запрос, результат исполнения которого будет использоваться для построения списка характеристик. В приведенном выше примере список характеристик можно напрямую получать из плана видов характеристик, т.к. данный план видов характеристик содержит только характеристики для номенклатуры. Однако, если бы в таблице содержались характеристики и для других справочников, то следовало бы воспользоваться запросом, в котором получать только характеристики номенклатуры.
Пример с получением списка характеристик из запроса:
При необходимости получения списка характеристик при помощи запроса, в конструкторе следует указать в качестве источника Запрос и создать запрос.
На данном рисунке список характеристик получается при помощи запроса, в котором получаются только записи, у которых не установлена пометка удаления. Указание полей происходит также как и в случае с таблицей, только используются не поля таблицы, а поля запроса.
Описание значений характеристик
При выполнении отчета системе компоновки необходимо получать значения выбранных пользователем характеристик.
Для получения характеристик системе необходима следующая информация:
Номенклатура | ВидСвойства | Свойство |
---|---|---|
Лазерный принтер 5250197-203 Minolta-QMS | Ширина | 630 |
Лазерный принтер 5250197-203 Minolta-QMS | Высота | 320 |
Лазерный принтер 5250197-203 Minolta-QMS | Масса | 5 800 |
Лазерный принтер Canon LBP-810 | Масса | 4 300 |
Лазерный принтер Canon LBP-810 | Ширина | 470 |
Лазерный принтер Canon LBP-810 | Высота | 310 |
Пример. Пусть исходный запрос набора данных схемы компоновки данных содержал следующий запрос:
Запрос, который сгенерирует компоновщик макета компоновки данных, будет выглядеть следующим образом:
Значения параметров: П = Масса, П2 = Высота
Использование категорий
Ссылка | ПометкаУдаления | Предопределенный | Код | Наименование | |
---|---|---|---|---|---|
Импортные | ложь | ложь | 000000001 | Импортные | |
Бухгалтерия | ложь | ложь | 000000002 | Бухгалтерия |
В регистре сведений КатегорииНоменклатуры содержатся установленные категории номенклатуры:
Номенклатура | Категория | |
---|---|---|
Принтер HP DeskJet 1500 | Импортные | |
1С:Бухгалтерия 7.7 Базовая версия | Бухгалтерия | |
1С:Бухгалтерия 7.7 Стандартная версия | Бухгалтерия | |
1С:Бухгалтерия ПРОФ версия 7.7 | Бухгалтерия |
Тогда описание характеристик может выглядеть так:
Если пользователь укажет, что поле Номенклатура.Бухгалтерия необходимо выводить в результат, то запрос в макете компоновки данных будет выглядеть следующим образом:
Как видно, запрос аналогичен запросу, формируемому для обычных характеристик. Исключение составляет получение значения характеристики. В данном случае это следующая конструкция: