Еще раз о плане видов характеристик

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

Признаюсь, что освоение этого объекта конфигурации далось мне не просто.  Описание планов видов характеристик читал в различных учебниках и в процессе чтения  складывалось ощущение, что суть ясна. К слову сказать, самым доходчивым
я считаю объяснение Евгения Гилева — просто, «на пальцах», с примерами. Но, по прошествии времени, когда встречаю этот громоздкий и до сих пор непривычный термин»План видов характеристик» (далее ПВХ), возникает ощущение, что все таки я не до конца понимаю этот объект.
   Вряд ли я начал бы писать эту статью, но в разговорах с коллегами — и программистами и консультантами 1C, профессионализм и умственные способности которых сомнений не вызывают, я встретился с похожим «смешанным чувством» при упоминании о ПВХ.
А раз так, то давайте разберемся, в чем тут причина — либо в чрезвычайной сложности объекта, для осмысления которого необходимо некое озарение, либо дело в неудачной терминологии, выбранной авторами платформы? Ведь до сих пор, встречаясь с различными техническими терминами, мы привыкли к тому, что термин ясно отражает суть стоящего за ним явления.
Итак, в чем здесь дело? — давайте попробуем разобраться.

Отвлечемся от «1С» и попробуем охарактеризовать, например, самолет. Для описания различных параметров самолета нам потребуются набор характеристик, которые мы разобьем на несколько смысловых групп — видов характеристик:

— Технические:
    — взлетный вес;
    — размах крыльев;
    — скороподъемность;
    — максимальная скорость;
    — полезная нагрузка;
    и т.д.
— Экономические:
    — цена;
    — стоимость обслуживания;
    — срок эксплуатации;
    — стоимость утилизации;
    и т.д.
— Эргономические:
    — удобство расположения приборов;
    — наличие системы кондиционирования;
    — материал обивки кресел;
    и т.д.

И если мы скажем, что для описания самолета мы имеем виды характеристик: технические, экономические, эргономические, где каждый вид включает некоторое количество характеристик — всем будет понятно. И для конкретного самолета мы можем говорить
о конкретных значениях характеристик, а на вопрос: «Каковы экономические характеристики некоторой модели самолета?», мы можем ответить:
    — цена — 1 000 000 $;
    — стоимость обслуживания — 100 000$/мес;
    — срок эксплуатации — 10 лет;
    — стоимость утилизации — 300 000$.

То есть, мы получили следующую структуру описания параметров самолета:
Виды характеристик:
— Технические;
— Экономические;
— Эргономические;
где каждый из видов характеристик включает ряд соответствующих характеристик.
При описании конкретного самолета, мы можем говорить о значениях характеристик для
данной модели самолета.

Разрабатывая учетную систему для хранения подобных структур,  логичным было бы иметь объект метаданных «Виды характеристик», в котором, для нашего случая мы бы создали несколько видов характеристик: «Технические»,
«Экономические» и «Эргономические». Далее, в каждом из видов добавили бы характеристики — для вида «Технические»: «Взлетный вес», типа «Число», «Полезная нагрузка» типа «Число» и т.д., а заполняя данные о конкретном самолете, мы бы говорили о значениях характеристик, например: характеристика вида «Эргономические», «Материал обивки кресел» имеет значение: «Кожа». И всем все понятно.

Теперь вернемся к 1С и попробуем проделать то же самое. Нам нужно создать 3 плана видов характеристик, в каждом из планов задать соответствующие виды характеристик, после чего для конкретной модели самолета, для вида характеристики задавать характеристику как значение определенного для вида характеристики типа. И, для нашего примера, мы должны будем сказать, что в плане видов характеристик «Эргономические», мы для вида характеристик «Материал обивки кресел» задаем характеристику «Кожа».

То есть, можно использовать такую трансляцию (терминология «1С» — «физический» смсысл термина):

Планы видов характеристик — Виды характеристик;
План видов характеристик — Вид характеристик;
Вид характеристики — Характеристика;
Характеристика — Значение характеристики.

Таким образом, есть проблема в терминологии, которая не совсем соответствует сути описываемых с ее помощью сущностей и на мой взгляд мешает понять основные задачи, которые решаются с помощью ПВХ.

Теперь оставим терминологию в покое и попробуем сформулировать основные функции данного объекта.  Итак — в чем основное назначение данного объекта? Оно состоит в возможности создания иерархических структур параметров объектов — характеристик и определять типы их возможных значений. При этом, появляется возможность в качестве типа значения различных реквизитов и ресурсов других объектов выбирать тип Харатеристика.- то есть в системе появляется еще один тип данных «Характеристика», являющийся по сути описанием типов, который мы можем создавать и изменять из пользовательской части.
И если с созданием иерархической структуры параметров, возможностью быть владельцем легко бы справился справочник, то именно формирование нового типа данных «Характеристика» является основным отличием ПВХ.

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

Надеюсь, эта статья поможет вам чувсвтвовать себя уверенней при работе с этим интересным и безусловно очень полезным
объектом.

ЗЫ:
Для полноты картины, учтя ценные замечания из комментариев к статье, привожу ссылки по теме:
http://v8.1c.ru/overview/CharacteristicReg.htm
http://v8.1c.ru/overview/Term_000000276.htm#1
Так же, за рамками данной статьи остались возможности получения характеристик с помощью СКД (закладка характеристики в конструкторе запросов) и др. Статься не претендует на всеобъемлющую полноту и академическую строгость изложения и является частным мнением автора по изложенному вопросу.

51 Comments

  1. EarlyBird

    Спасибо.

    Полезно и понятно написано.

    Reply
  2. WKBAPKA

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

    Reply
  3. Agema

    Спасибо! Полезный материал, особенно, когда пишется от себя, а не по учебникам и хелпам.

    Reply
  4. Uncore

    (0) Как вариант, можно создать 1 иерархический ПВХ, а в нем создать 3 группы, внутри которых будут нужные характеристики.

    Reply
  5. petrov_al

    По моему для лучшего понимания ПВХ или «озарения» будет полезно поработать с ним программным способом.

    Reply
  6. xzorkiix

    От статьи ожидал, хотя бы:

    — Привязки характеристик в описании метаданных объектов

    — Как эти привязки помогают «улучшить жизнь» при разработке отчетов (СКД), при работе с данными, что от этого получает пользователь

    — (Может упустил при скором чтении) Как следует хранить в Информационной базе такие планы, которые по большому счету идентичны друг другу, но вы их предлагаете разбивать. Каждому плану свой регистр? Общий регистр и Составной тип для разреза?

    — Рекомендации (примеры из типовых решений) как использовать в интерфейсе.

    Я это не со зла, вы не подумайте, но ожидал большего.

    Reply
  7. zipik

    (6) xzorkiix, может ты тогда дашь развернутую информацию по теме?

    Reply
  8. kostas

    Я бы «Технический»,»Экономический» объединил в наборы (как в БСП) и новые ПВХ не нужны.

    Reply
  9. Sunhare

    Спасибо. Наглядно.

    Reply
  10. TSSV

    (4) Uncore, Отличный вариант — согласен!

    Reply
  11. clev

    Спасибо, очень хороший пример. Ставлю +

    Reply
  12. zamichnik

    Сергей, хорошая статья, спасибо. Сам долго не вполне понимал, чем ПВХ отличается от справочника.

    И, как выпускник МИИ ГА, особенно отмечу пример с самолётом 🙂

    Reply
  13. AlexO

    (2) WKBAPKA,

    но имеет еще возможность задавать возможные типы значений для их хранения

    А справочник не может? И не может хранить разные типы, чтобы пользователь выбрал сам?

    Вся разница — на программном уровне и в назначении, что как раз и не освещено никак в статье.

    Какие-то самолеты, «вид характеристики — это характеристика» и т.д.

    Смысл-то введения данного объекта в 1С — где? как используется — где?

    Похоже, что показать/обсудить некие «способности»

    но в разговорах с коллегами — и программистами и консультантами 1C, профессионализм и умственные способности которых сомнений не вызывают

    — это было единственной целью написания статьи…

    Reply
  14. WKBAPKA

    (13) AlexO,

    справочник не может… например, мне нужно сделать такой механизм, где бы пользователь сам определял типы данных для каких то реквизитов… как это сделать в справочнике? никак, только извращаться… а в плане видов характеристик можно… + тип значения перечисляет конечное число типов данных (возможно, влияет на производительность)

    одним словом я согласен, что различия только на программном уровне, но автор статьи вероятно хотел раскрыть принцип работы с ПВХ…

    Reply
  15. vlasin

    (13) AlexO,

    поддержу. Это не статья, это некая заметка — мысли вслух.

    Reply
  16. WKBAPKA

    (15) vlasin,

    человек немного разобрался и решил поделиться… я автора не защищаю, но если подходить по справедливости, если не нравиться статья, напишите свою, более полную и правильную

    Reply
  17. vlasin

    (16) WKBAPKA,

    когда разберусь с ПВХ — напишу обязательно. Я против автора тоже ничего не имею, а вот статья — ерунда. Я читаю статьи не с целью покритиковать и заявить, что я умнее. Как раз наоборот — почитать, что умные люди пишут. И когда за статью выдается не пойми что — да, мне это не нравится. Для этих целей блог есть в конце концов — озарило очевидной вещью, написал.

    Reply
  18. TSSV

    Спасибо за конструктивные замечания — добавил новый раздел, посвященный функциональности ПВХ.

    Reply
  19. TSSV

    (12) zamichnik, Михаил, рад что понравилась статья! По поводу примера — я сам МАИ окончил, так что тема тоже близка, жаль правда что разваливается все потихоньку — но это уже не про 1С…

    Reply
  20. Пацталоцци

    [quote=vlasin]когда разберусь с ПВХ — напишу обязательно. [/quote]

    (17) vlasin, вот когда разберёшься, тогда и сможешь критиковать. А пока твои некомпетентные высказывания — словно пук в лужу.

    [quote=vlasin]Это не статья, это некая заметка — мысли вслух.[/quote]

    В чём ты видишь разницу между статьёй и заметкой? Сможешь указать чёткие и объективные критерии?

    И объясни, с чего ты решил, что правильна именно твоя интерпретация термина «статья»?

    Reply
  21. Yashazz

    Честно говоря, не понял, чем эти заметки лучше книг по 1С. Есть же масса методической литературы с примерами…

    Reply
  22. bulas

    Задача: заказали белые тапочки, несколько штук. Вопрос: сколько на складе зеленых тапочек. ПВХ позволяет минимизировать справочник «Номенклатура» расширяя номенклатуру за счет ПВХ. В книжках, в основном, примеры использования ПВХ на обуви. А вот хотелось бы посмотреть пример использования ПВХ на самолете.

    Reply
  23. lees

    Спасибо, отличная статья!

    Reply
  24. zfilin

    Подробностей и примеров хотелось бы побольше, но начинание хорошее.

    Reply
  25. kit

    Представлен ещё один пример объяснения сути ПВХ. По-моему, вполне достойный. Автору плюс.

    Reply
  26. TSSV

    Спасибо, рад что понравилась статья! Честно говоря даже не ожидал, что будет к ней такой интерес — спасибо!

    Reply
  27. Maximus314

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

    Огромное спасибо!!!

    Reply
  28. Psylocibine

    Да, в принципе все понятно. Помню, сколько трудностей вызвало освоение механизма характеристик в УТ 10.3, тем более что задача была нетривиальная — перевести магазин одежды, который вел учет по размерам, заводя их как СЕРИИ номенклатуры (спасибо предыдущим ВНЕДРЕНЦАМ) на учет по характеристикам. Немало дров переломал, пока не разобрался в принципе и метаданных

    Reply
  29. Yashazz

    (27) А почитать Радченко и другие книжки — не судьба? Кроме мануалов, в природе ничего нету, да?

    Пример в статье считаю не вполне верным. Создавать 3 ПВХ совершенно незачем, хватит одного, например, с предопределёнными папками верхнего уровня, потому как, думаю на 50-70% типы показателей пересекались бы. Разные ПВХ — это если надо разные наборы реквизитов делать, или типы значений существенно разные.

    А «иерархичность», упомянутая в тексте, вообще не пришей куда хвост. Процитирую: «Итак — в чем основное назначение данного объекта? Оно состоит в возможности создания иерархических структур параметров объектов — характеристик и определять типы их возможных значений.» — и где в примере эта иерархичность? Или, может, автор научился использовать группу ПВХ не так, как все? Или упомянул, чем иерархия ПВХ отличается от иерархии справочников? В общем, сомнительной полезности заметка.

    Reply
  30. AlexO

    (14) WKBAPKA,

    справочник не может… например, где бы пользователь сам определял типы данных для каких то реквизитов… как это сделать в справочнике? никак, только извращаться… + тип значения перечисляет конечное число типов данных (возможно, влияет на производительность)

    Как это нельзя? Делатете составной тип данных — и получаете несколько типов данных на выбор пользователя + конечное число типов данных 🙂

    Единственное отличие ПВХ от справочника — что кроме этого, в ПВХ можно задать конкретные значения данного параметра на выбор.

    Ну и программное пользование.

    Reply
  31. AlexO

    (26) Tsaregorodtsev,

    если вы накидаете как можно больше разных примеров использования ПВХ — это и будет содержанием и смыслом статьи. Даже если её оставить под старым названием.

    А если продолжите «придумывать» мотивы 1с для ввода ПВХ и предположения, чего там такого уникального — боюсь, мы продолжим вас (вернее, данную статью) ругать :))

    Reply
  32. AlexO

    (29) Yashazz,

    А «иерархичность», упомянутая в тексте, вообще не пришей куда хвост. Процитирую: «Итак — в чем основное назначение данного объекта? Оно состоит в возможности создания иерархических структур параметров объектов — характеристик и определять типы их возможных значений.» — и где в примере эта иерархичность?

    Вероятно, автор прикинул, что неплохо бы было сделать «иерархию свойств» (когда есть свойство-родитель, и свойство-потомки, со всеми последующими связями и наследованием), и ПВХ показалось ему вполне так подходящим объектом, в котором 1с теоретически могла бы реализовать такое 🙂

    Только вот на практике как эту иерархию реализовать в ПВХ? 🙂

    Reply
  33. TSSV

    (32) AlexO,

    Только вот на практике как эту иерархию реализовать в ПВХ? 🙂

    Посмотрите как реализован ПВХ «НастройкиПользователей» в УТ 10.3 — пример иерархического ПВХ. Тема эта я думаю исчерпана — книжки по 1С, публикация, комментарии — обменялись мыслями и идем дальше…

    Reply
  34. AlexO

    (33) Tsaregorodtsev,

    Посмотрите как реализован ПВХ «НастройкиПользователей» в УТ

    Посмотрел. И чем реаоизация там отличается от того же — в обычном справочнике? Вы внимательно читали (32)? Иерархия папок и элементов реализуется в любом справочнике.

    Тема эта я думаю исчерпана

    Т.е. Вы ничего не сказали из «Оно состоит в возможности создания иерархических структур параметров объектов» про иерархические структуры, и все — тема по ним закрыта??

    Приведите лучше в статье примеры создания ПВХ, в том числе — как разработать «иерархическую» структуру на ПВХ.

    А темы как-нибудь в другой раз закроем :).

    Reply
  35. Kaniman

    (33) Tsaregorodtsev, отличная статья, спасибо! мне понравилось, полезно.

    Reply
  36. ksnik

    Наверное, при возможности стоит избегать использования характеристик.

    Например такая характеристика

     Запрос = Новый Запрос;
    Запрос.Текст =
    «ВЫБРАТЬ
    | ЗначенияСвойствТоварныхКатегорий.Номенклатура,
    | ЗначенияСвойств.Ссылка КАК Склад
    |ИЗ
    | РегистрСведений.ЗначенияСвойствТоварныхКатегорий КАК ЗначенияСвойствТоварныхКатегорий
    |  ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
    |  ПО ЗначенияСвойствТоварныхКатегорий.Свойство = СвойстваОбъектов.Ссылка
    |  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЗначенияСвойств КАК ЗначенияСвойств
    |  ПО ЗначенияСвойствТоварныхКатегорий.Значение = ЗначенияСвойств.Ссылка
    |ГДЕ
    | ЗначенияСвойствТоварныхКатегорий.Свойство = &Свойство
    | И ЗначенияСвойствТоварныхКатегорий.Значение = &Значение»;
    Запрос.УстановитьПараметр(«Свойство», ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду(«00053»));
    Запрос.УстановитьПараметр(«Значение», Справочники.ЗначенияСвойств.НайтиПоНаименованию(«Склад А»));
    ТЗ = Запрос.Выполнить().Выгрузить();
    ОбработкаФорма = Обработки.ПечатьТаблицыЗначений.ПолучитьФорму(«Форма»);
    ОбработкаФорма.ТаблицаЗначений = ТЗ;
    ОбработкаФорма.ЗаголовокТаблицы = ТекущаяДата();
    ОбработкаФорма.Открыть();
    

    Показать

    кроме того, что сложно получается запросом, еще и в консоли запросов не в любой работает, так как при задании параметра не возможно установить значение свойства без связи с владеющим свойством. То есть в итоге использования характеристики мы получаем запрос, который не сможем покрутить в консоли запросов. Вот хочу в свою консоль запросов устранение этой проблемы дописывать.

    Reply
  37. AlexO

    (18) Tsaregorodtsev,

    т.е. так ничего сами и не поняли, и других продолжаете смущать?

    Что это за «новый тип данных»?

    то именно формирование нового типа данных «Характеристика» является основным отличием ПВХ.

    с чего вы нарисовали «происхождение» ПВХ от ВидыСубконто 7.7 и вывели «базовое»

    появился ПВХ, главной задачей которого по прежнему является обслуживание механизмов бухгалтерского учета

    ?

    только по названию нескольких ПВХ со словом «Субконто»?

    Про какую-то «иерархичность» реализуемую «только в ПВХ» я уже вас спрашивал — конечно же, безрезультатно.

    Автор, вы ни чего не поняли ни в ПВХ, ни в способах его использования, и ни разу не попытались самостоятельно что-то смастерить на ПВХ и закодить. А посему не смущайте новичков.

    Раз не обратили внимание на замечания, и желаете заблуждаться сами — то хотя бы других за собой не тяните.

    И так 1с-ники деградируют быстрее всех остальных ит-шников.

    Reply
  38. AlexO

    (16) WKBAPKA,

    по-вашему, ПВХ — это рассуждения на тему «как прекрасен этот мир»?

    в статье одни домыслы, рассуждения не по теме и отсутствие какого-либо желания разобраться в ПВХ.

    Reply
  39. mrdug

    (38) AlexO, присоединяюсь, тоже ничего не понял. В статье одна «вода».

    Reply
  40. GorDAn

    Статья, то что надо! Коротко и по делу. Мне понравилось. По ней быстро разобрался, что к чему.

    Reply
  41. GorDAn

    (34) AlexO,

    Приведите лучше в статье примеры создания ПВХ, в том числе — как разработать «иерархическую» структуру на ПВХ.

    Статья же не называется «Всё о ПВХ» 😉 Напиши свою. Почитаем, заценим.

    Reply
  42. TSSV

    (40) GorDAn, Спасибо, рад что статья оказалась полезной!

    Reply
  43. 1cmax

    решил освежить знания, прочитал статью.. просветления не получил, почитал ЖКК «Руководствов разработчика» и оно появилось 🙂 так что мануалы маст хэв

    Reply
  44. TSSV

    (43) 1cmax, просветление получено после комбинации статья + мануал или мануал + …. + статья + еще раз мануал. То есть, все таки статья оказалась причастной к просветлению, согласитесь 🙂

    Reply
  45. 1cmax

    статья подтолкнула к тому чтобы лезть за книжкой.. это да.. но это опосредовано..

    Reply
  46. TSSV

    (45)Я думаю, что вам не потребуется больше мануал по этому вопросу. Вообще если 3 раза прочитал и не понял — то не нужно уже себя мучить — это уже не гуманно просто. Но денежки за обучение никто не отменял, надеюсь вы понимаете о чем я?

    Reply
  47. yuraos

    Ну если в кратце в моем понимании:

    ПВХ есть по сути дела справочник

    со спецатрибутом ТипЗначения, имеющего тип «ОписаниеТипов»

    (который вообще говоря не доступен для хранения в физических таблицах объектов)

    + подстёгиваемый платформой дополнительный тип в системе «Характеристика.<ИмяПВХ>»,

    идентичный описанию типа, выбранному в спецатрибуте.

    Насчет ВидовСубконто в семерке — истинная правда.

    Могу только добавить,

    что в 1с-7.7 они идентичны понятию «Константа» с типом «ОписаниеТипов»

    и жестко задаются в конфигураторе.

    Правда типа значений «ОписаниеТипов» как такового в 1с-7.7 не существует…

    😉

    ну в общем понятно.

    Reply
  48. yuraos

    (47)

    Ну в платформе еще есть мутные квази-справочники:

    ПланыСчетов

    ПланыВидовРасчетов

    можно еще и про них статейку набобахать…

    откуда есть они пошли

    :))))

    Reply
  49. TSSV

    (48) yuraos, «можно еще и про них статейку набобахать…

    …откуда есть они пошли » — отличная идея! Напишите, я бы почитал с удовольствием 🙂

    Reply
  50. AlexO

    (49) Tsaregorodtsev,

    …откуда есть они пошли «

    Кто ж вам скажет-то? 🙂

    То, что вы сами или кто другой придумает («вообще ПВХ произошел из объекта платформы 7.7, который назывался «Виды субконто») — это только догадки-придумки, которые даже логически обосновать не дают себе труда 🙂

    Reply
  51. LexSeIch

    Мир этому дому!

    Статья полезная. Лучше «на пальцах» один раз разобраться, чем потом постоянно спотыкаться… Безусловный плюс.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *