План видов характеристик
Планы видов характеристик — это прикладные объекты конфигурации. Они предназначены для хранения информации о характеристиках различных объектов.
С их помощью пользователь может создавать всевозможные характеристики, описывать тип этих характеристик и задавать их значения. Например, для того, чтобы описывать товары произвольным количеством произвольных характеристик (цвет, размер, запах и т. д.).
Структура
По своей структуре план видов характеристик напоминает справочник: в плане видов характеристик хранятся элементы, — характеристики, которые могут иметь некоторый набор реквизитов и табличных частей и, также как и элементы справочника, могут образовывать иерархические структуры. В плане видов характеристик могут существовать предопределенные характеристики, заданные разработчиком.
Однако основное назначение плана видов характеристик заключается в том, чтобы для каждой характеристики хранить тип значения, который она может принимать:

Возможный перечень типов, которые могут принимать характеристики, указывается разработчиком в процессе создания прикладного решения:

Создавая новые характеристики (или редактируя существующие), пользователь сможет выбрать для них один из типов, входящих в этот перечень.
Однако не исключена ситуация, когда для создания очередной характеристики пользователю понадобится тип, не существующий в прикладном решении. Например, пользователь решит создать характеристику Запах, которая должна иметь значения справочника Запахи, но такого справочника в прикладном решении нет.
Специально для таких ситуаций разработчик может создать специальный пустой справочник, и указать, что в нем будут храниться дополнительные значения характеристик:

Теперь, создавая характеристику Запах, пользователь сможет выбрать для нее тип значения этого специального справочника, а в самом справочнике создать нужные ему значения: Сладкий, Резкий, Кислый и т. д.
Формы плана видов характеристик
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в плане видов характеристик, система поддерживает несколько форм его представления. Система может автоматически генерировать все нужные формы плана видов характеристик. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:

Форма списка
Для просмотра данных, содержащихся в плане видов характеристик, используется форма списка. Она позволяет выполнять навигацию по плану, добавлять, помечать на удаление и удалять характеристики и группы характеристик, перемещать характеристики и группы. Форма списка может представлять данные в иерархическом и не иерархическом виде и позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:

Форма характеристики
Для просмотра и изменения данных отдельных характеристик используется форма характеристики. Как правило, она представляет данные в удобном для восприятия и редактирования виде:

Кроме этого для планов видов характеристик, также как и для справочников, поддерживаются формы группы, выбора и выбора группы.
Планы видов характеристик в 1С простыми словами
«Планы видов характеристик» — само словосочетание как таковое уже начинает немного ломать мозг. Да, планы видов характеристик — это довольная сложная вещь в 1С. Они сложны как концептуально, так и технически. Здесь я постараюсь по возможности коротко и по существу изложить концепцию планов видов характеристик, ее техническую реализацию и область применения.
Концепция
Концепция плана видов характеристик решает три последовательные задачи. В этом заключается первая сложность. Задачи, хотя и связаны друг с другом, но их именно три.
Во-первых, мы хотим дать пользователю возможность добавить свой собственный реквизит куда-нибудь. Это может быть справочник или документ, но чаще всего речь все-таки идет о справочнике. Добавляя свой собственный реквизит к справочнику, пользователь расширяет типовое описание некоей сущности. Тут все более или менее понятно. Можно сказать, что типовая конфигурация (любая) предназначена для всех сразу и ни для кого конкретно. У товара может быть размер (а иногда и много разных размеров), модель, сорт, цвет. Авторы текста для официального сайта 1С считают, что у товара может быть запах. Ну. видимо да. Как бы там ни было, невозможно в типовой конфигурации заранее снабдить справочник товаров всеми мыслимыми атрибутами. Он станет невероятно громоздким, и все равно, что-нибудь да упустишь. Думая о способах будущей кастомизации своего типового решения, разработчики решили передать этот вопрос в руки пользователя. Пусть пользователь сам создаст нужный ему реквизит и укажет тип этого реквизита. А мы ему откроем возможность заполнять этот реквизит, а также использовать его в типовых отчетах.
Возможных типов этого реквизита у нас не так уж и много: строка, число, дата, булево и ссылка. Можно сказать и так, что у нас всего два варианта: примитивный тип и ссылочный. При этом ссылочный тип для нас важнее. Он используется чаще. Цвет лучше задавать не строкой: «красный», «зеленый», «синий», а в виде ссылки на элемент справочника. Размер обуви хоть выглядит, как число: 40, 41, 42. но и его тоже лучше задавать как ссылку. Поэтому, во-вторых, нам нужно дать пользователю возможность создавать свои собственные справочники. Пользователь добавляет свой собственный реквизит, например, цвет (или запах, как нам подсказывают из 1С). Скорее всего он захочет, чтобы это была ссылка. И, скорее всего, он захочет ссылку на справочник, которого нет в типовой конфигурации. Надо дать ему возможность создать такой справочник.
В-третьих, пользователь может захотеть, чтобы добавленный им реквизит применялся не ко всему справочнику, а только к какой-то его части. Например, мы торгуем спортивной одеждой и обувью. Для обуви мы сделали дополнительный реквизит размер обуви. И для одежды сделали дополнительный реквизит размер одежды. И это должны быть разные справочники! Справочник товаров у нас один. Но для одних элементов мы будем заполнять реквизит размер обуви, а для других — размер одежды.
Реализация
Реализация еще сложнее. Основной момент заключается в том, что нет одного объекта, который отвечал бы за реализацию всей концепции. Если вам надо сложить поступления на склад и вычесть списания со склада, другими словами, вам нужны остатки товара, тогда вы берете регистр накопления. Если вам нужно учитывать историю изменения какого-нибудь показателя, например, курс валюты, и получать последние по времени значения, вы используете регистр сведений с опцией периодический. В 1С есть специальный объект называемый планом видов характеристик. Но для того, чтобы реализовать описанную выше концепцию, вам недостаточно использовать только его. Можно сказать, что создание собственно плана видов характеристик это самое простое во всей схеме.
Кроме плана видов характеристик вам потребуется создать:

- Справочник, в котором будут хранится все дополнительные ссылки на размер, цвет и т.д. Такой мегасправочник. Там будет все вперемешку, «сапоги с пирогами». Но пользователь этого не увидит, если все настроить правильно, а именно указать план видов характеристик в качестве владельца этого справочника. В поле Дополнительные значения характеристик у плана видов характеристик надо будет затем указать созданный справочник.
- Регистр сведений. В нем будут храниться собственно значения дополнительных реквизитов для того или иного товара. Обычно в этом регистре два измерения: ссылка на объект (в нашем случае товар) и ссылка на план видов характеристик. И один ресурс. Тип ресурса выбираете из раздела Характеристика. Причем, он должен соответствовать указанному ранее измерению
В регистре сведений надо задействовать две фичи. У первого измерения следует задать опцию Ведущее.

У ресурса задать Связи параметров выбора

Это откроет переход к редактированию свойств из формы объекта и сам процесс редактирования будет правильным.
И это одна из самых простых схем! Делают и более сложные. Такие, где набор возможных дополнительных реквизитов зависит от вида товара.
Заключение
Как я уже говорил выше, все это было задумано разработчиками для того, чтобы передать вопросы кастомизации в руки пользователей. Передать-то вопросы передали, но, как показывает практика, пользователи в массе своей их не взяли. Очень редко мне попадались энтузиасты, которым нравилось создавать свои реквизиты. Но это скорее исключение, к тому же, это было довольно давно. Большинство все-таки предпочитает с такими вопросами обращаться к специалистам. А у специалистов арсенал возможных средств решения задачи, конечно же, больше. Если надо вести учет по цветам, то можно добавить справочник (нормальный, не мегасправочник) и соответствующий реквизит на выбор: либо в справочник товаров, либо в соответствующие документы и регистры.
В том случае, когда у нас разнотипный товар, и для каждого типа свой набор аналитик, имеет все же смысл подумать о денормализации. Это когда для каждого товара можно задать полный набор аналитик, и какие-то остаются пустыми. Пожертвовать некоторым объемом базы ради большей простоты в схеме это нормальный прием.
Планы видов характеристик появились несколько раньше, чем механизм расширений. И то, и другое решает одну и ту же задачу кастомизации. Но последнее гораздо более универсально.
Полностью игнорировать концепцию плана видов характеристик у вас не получится. Аналитический учет в бухгалтерском регистре завязан на нее. Во всех типовых конфигурациях планы видов характеристик присутствуют также и в оперативном учете.
Но если вы проектируете свое собственное решение, то использование планов видов характеристик для обеспечения возможности будущей кастомизации — это вопрос, требующий отдельной проработки.
В заключение порекомендую открытый урок, посвященный EDT, который пройдет в OTUS 12 июля. На нем участники обсудят основные возможности EDT и научатся вести разработку через эту среду. Присоединяйтесь, если эта тема для вас актуальна.
Код Икс Пи ☆ Центр автоматизации, сопровождения и поддержки
Часто возникает необходимость задать какие-то дополнительные свойства для уже существующих в базе элементов. Стандартно для этого используется «реквизит» справочника. Но что делать разработчику конфигурации, если он не хочет добавлять 1000 реквизитов «на все случаи» в свой справочник, а лишать пользователя такой возможности не хочет? Правильно, надо разработать систему которая позволит пользователю самостоятельно добавить к целевому справочнику новое свойство, не заходя в конфигуратор.
Например, клиенту надо добавить «пол» (Муж, Жен). Если в справочнике «контрагенты» нет такого реквизита, то можно воспользоваться универсальными «свойствами» и задать новое свойство для справочника прямо во время работы, ну конечно программист должен предварительно предоставить такую возможность пользователю.
Для таких случаев в 1с предусмотрен объект метаданных «планы видов характеристик». Рассмотрим пример по добавлению универсальных произвольных свойств для клиентов в нашей тестовой конфигурации. План видов характеристик очень похож на справочник, но есть важное отличие это поле «тип значения характеристик» (список типов для свойств пользователя) и поле «Дополнительные значения характеристик» (справочник для удобства повторного выбора свойств), которые и определяют как будут использоваться эти свойства.
1. Определим костяк системы хранения свойств.
Для начала создадим новый план видов характеристик.
- В наименовании зададим произвольное наименование
- В типе значений зададим какой тип могут принимать эти дополнительные свойства (которые будет создавать пользователь)
- В поле «дополнительные значения характеристик» пока ничего не выбираем.
- Записываем план видов характеристик.
Теперь надо создать новый справочник, который будет подчинен плану видов характеристик:
После создания справочника выберем его в нашем ПВХ (его также надо выбрать и в «тип значений»):
Теперь создадим новый регистр, где и будут храниться назначенные свойства:
- В регистре надо для «объекта» задать в «тип данных» те справочники какие могут иметь по вашему мнению свойства, например «номенклатура» и «клиенты» (т.е. смешанный тип для измерения «объект»). Не забудьте сделать измерение «объект» «ведущим».
- Для измерения «характеристика» надо выбрать собственно сам тип ПВХ «свойства справочников».
- Для ресурса «Значение свойства» необходимо выбрать особый тип ХАРАКТЕРИСТИКА — «СвойстваСправочников» (не путать с ПВХ, см. скрин)
Также в ресурсе «Значение свойства» надо указать связку с измерением «характеристика»:
На этом все, мы не будем пока разделять свойства по типам справочников, я про то что свойство «телефон директора» некорректно использовать для справочника «номенклатура» (позвонить сапогам вряд ли получится:)). Протестируем нашу систему дополнительных произвольных свойств.
2. Тестирование плана видов характеристик.
Создадим нового клиента в режиме предприятия, видим ссылку на свойства (если не видите проверьте свойство «ведущий» у объекта в регистре).
Нажмем на ссылку, добавим характеристику, выберем тип — храниться в справочнике (это чтобы можно было выбирать из уже готовых свойств), если выбрать другой тип «строка» то все значения пользователь будет вбивать от руки каждый раз при вводе нового свойства.
После выбора характеристики можно выбрать «значение», в нашем случае откроется отдельный справочник для выбора «пола» клиента. В справочник надо добавить два элемента «Муж», «Жен» и выбрать один из них для нашего тестового клиента.
Теперь создадим еще одно свойство «оборот в месяц». Т.к. оборот будет уникальным для каждого клиента, то нет смысла выбирать его из вспомогательного справочника, зададим свойству тип «число».
Теперь можно задать значение, обратите внимание, теперь программа автоматически дает на выбор значения свойства «число», это очень удобно.
Тут же потестируем свойства номенклатуры. Создадим новую карточку товара. Также видим ссылку на свойства.
Создадим новую характеристику «материал», с типом значения — дополнительный справочник (т.к. материалы удобней выбирать из готового списка, так же как пол).
Теперь создадим новую характеристику «возможные размеры», это будет скорей всего уникальная строка, значит зададим тип строка для характеристики
Выбрав тип строка мы разрешили пользователю в это свойство вбивать произвольную строку, например «37-46».
3. Фильтрация свойств по типу объекта
Все уже работает, но при задании свойств «номенклатуры» мы видим совсем ненужную характеристику «пол», ту что делали для клиентов. Хотелось бы отделить свойства которые должны быть назначены только товарам от свойств которые актуальны только для клиентов. Как это сделать? Надо в каждой характеристике каким то образом указать на какие типы объектов эта характеристика действует.
Для этих целей добавим в ПВХ реквизит, который будет указывать на все виды объектов, на которые можно назначать это свойство. Реквизит сделали а какой «тип» ему назначить? Ведь этот реквизит и сам должен хранить тип, а еще лучше список типов (на случай если свойство действует на несколько видов объектов). Получается в этот новый реквизит надо выбирать «список типов».
В типовых конфигурациях для хранения этого самого «списка типов» сделали отдельный регистр и еще один план видов характеристик. Мы не будем так усложнять пример и сделаем более легкий способ, просто перечислим типы через запятую в этом поле. Таким образом для реквизита назначаем тип «строка 100». А в режиме предприятия тут через запятую укажем виды справочников.
В режиме предприятия от руки впишем целевые виды объектов в новый реквизит
В конфигураторе, создадим форму записи регистра, переопределим выбор характеристики (подсунем свой список)
&НаКлиенте Процедура ХарактеристикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ДанныеВыбора = ПолучитьДоступныеХарактеристики(Запись.Объект); СтандартнаяОбработка = Ложь; КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьДоступныеХарактеристики(Объект) мИмяТипа = Объект.Метаданные().Имя; Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | СвойстваСправочников.Ссылка КАК Ссылка |ИЗ | ПланВидовХарактеристик.СвойстваСправочников КАК СвойстваСправочников |ГДЕ | СвойстваСправочников.НазначениеХарактеристики ПОДОБНО &НазначениеХарактеристики"; Запрос.Параметры.Вставить("НазначениеХарактеристики", "%"+мИмяТипа+"%"); Массив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); СписокХарактеристик = Новый СписокЗначений; СписокХарактеристик.ЗагрузитьЗначения(Массив); Возврат СписокХарактеристик; КонецФункции
Укажем что не надо показывать историю выбора характеристики (чтобы платформа не выдала ту характеристику которую мы хотим скрыть)
В итоге на выбор будут выдаваться только характеристики которые могут быть использованы для этого типа объекта.
4. Красивая фильтрация в отчетах на СКД по свойствам.
Признаться я не сразу понял, как это так ловко в отчетах на скд, в отборах, можно сразу отфильтровать по свойству объекта, учитывая что в тексте основного запроса отчета нет регистра со свойствами (где хранятся наши свойства ПВХ). Но коллеги разработчики платформы уже все продумали.
Необходимо в свойствах справочника указать в специальной таблице где хранятся свойства объекта, после этого СКД автоматически подтянет их как будто это обычные реквизиты справочника!
Открыть свойства справочника, перейти на вкладку «Данные», нажать «Характеристики»
Добавить в таблицу новую строчку и заполнить, примерно как на рисунке:
После этого в любом отчете можно выбрать свойство, как будто это обычный реквизит справочника (хотя фактически это ПВХ и данные лежат в регистре):
В отчетах в режиме предприятия можно задавать свойства и как отборы и как измерения
На этом тема по ПВХ закрыта, удачного программирования!
You have no rights to post comments
План видов расчета
Планы видов расчета — это прикладные объекты конфигурации. Они используются в механизме сложных периодических расчетов и служат для описания видов расчета и их взаимного влияния друг на друга.
Структура
План видов расчета представляет собой список видов расчета. Каждый вид расчета имеет код, наименование и набор реквизитов, содержащих дополнительную информацию о данном виде расчета:

Например, план видов расчета Начисления может выглядеть следующим образом:

Создание и редактирование видов расчета может выполняться как разработчиком (предопределенные виды расчета), так и пользователем, в процессе работы с прикладным решением. Однако пользователь не может удалять виды расчета, созданные разработчиком.
Виды расчета, созданные в плане видов расчета, могут влиять друг на друга. Система поддерживает два вида такого влияния: зависимость по базовому периоду и вытеснение по периоду действия.
Для каждого вида расчета можно указать перечень видов расчета, от которых он будет зависеть по базовому периоду, и которые будут вытеснять его по периоду действия.
Кроме этих зависимостей, для вида расчета могут быть указаны так называемые ведущие виды расчета, — те, от которых он не зависит напрямую, но которые могут оказывать на него влияние через другие виды расчетов.
Формы плана видов расчета
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в плане видов расчета, система поддерживает несколько форм его представления. Система может автоматически генерировать все нужные формы; наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:

Форма списка
Для просмотра видов расчета используется форма списка. Она позволяет выполнять навигацию по списку, добавлять, помечать на удаление и удалять виды расчетов. Форма списка позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:

Форма вида расчета
Для просмотра и изменения данных отдельных видов расчета используется форма вида расчета. Как правило, она представляет данные в удобном для восприятия и редактирования виде:

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