Каталог решений - План видов характеристик (ПВХ) — с чем его едят

План видов характеристик (ПВХ) — с чем его едят

План видов характеристик (ПВХ) — с чем его едят

В наличии

План видов характеристик — эта фишка нужна Аналитикам.
В данной статье мы рассмотрим пример создания сложного ПВХ по учебнику Хрусталевой/Радченко.
А также создадим свой собственный механизм ПВХ с двумя видами отчетов-СКД на выходе.

Категория:

Описание

Как обычно ведется учет в торговом предприятии?

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

Например, вчера купили красный стул, сегодня зеленый стул, поначалу так и вбивают в базу данные: 1) старая позиция — красный стул;2) новая позиция — зеленый стул. Но после инвентаризации — всегда появляется пересорт товара, и здесь приходят к варианту — создать новую позицию, без конкретного описания в названии товара его спец.свойств, т.е. заводят товар так, например, просто "Стул", а две предыдущие позиции товара — помечают на удаление.

Через некоторое время — свободных оборотных средств становится лимитное количество. Здесь возникает вопрос: а какие именно товары имели больший спрос, чтобы вкладывать средства в них, а не в зависающий товар.

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

Тут если мы запишем свойства товара в справочнике Номенклатуры в поле "Комментарии", то Аналитику будет не просто сделать нужный ему отчет по популярности и оборачиваемости конкретно данного товара с конкретно данными свойствами товара.

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

Н-р, под товаром "Стул" — пользователь желает указать свойство товара — цвет, это строковое значение данных. Значит в подчиненном справочнике — мы реквизит сделаем строковым. А если он желает указать доп.свойство товара, например, производителя? Тогда мы должны реквизит в подчиненном справочнике сделать ссылочного типа, указывая на др.справочник "Производители". А если пользователь в доп.свойствах к своему товару желает указать сколько ножек у стула? Мы в подчиненном справочнике должны реквизит сделать числовым…..

Отсюда, когда нам нужно дать возможность пользователю самому создавать ТИП данных, в значения которых он будет вносить свою информацию, то нам нужно создавать ПВХ (план видов характеристик).

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Мы создадим в нашем примере сложный ПВХ, чтобы был полноценный механизм описания дополнительных свойств товара.

Но для начала рассмотрим урок по созданию ПВХ из книги (стр.476) "1С_ Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы" Радченко/Хрусталева http://v8.1c.ru/metod/books/book.jsp?id=441

Здесь у нас уже есть справочник Номенклатура. Цель задачи: иметь возможность знать остатки материалов, обладающих некоторым значением характеристики. Для этого создадим в Конфигураторе новые объекты:1) регистр Сведений "ЗначенияСвойствНоменклатуры";2) ПВХ "СвойстваНоменклатуры";3) подчиненный Номенклатуре справочник "ВариантыНоменклатуры", чтобы описывать партии материалов;4) подчиненный ПВХ справочник "ДополнительныеСвойстваНоменклатуры", чтобы задавать значения видов характеристик,для которых нет подходящих типов в конфигурации.

В результате нам достаточно будет выбирать из регистра сведений все элементы подчиненного справочника с этим значением характеристики и затем по ним и их владельцам — получить остатки регистра накоплений.

В создаваемом нами ПВХ в поле "Тип значения характеристик" — укажем составной тип данных: Число,Строка,Дата,Булево,СправочникСсылка.ДополнительныеСвойстваНоменклатуры. А так же в поле ПВХ "Дополнительные значения характеристик" — указываем подчиненный ПВХ справочник "ДополнительныеСвойстваНоменклатуры".

Далее, при создании регистра сведений "ЗначенияСвойствНоменклатуры": указываем регистру два измерения:

1) НаборыСвойств, тип = СправочникСсылка.ВариантыНоменклатуры;

2) ВидСвойства, тип = ПланВидовХарактеристикСсылка.СвойстваНоменклатуры

И создаем ресурс регистра сведений:

Значение, тип = Характеристика.СвойстваНоменклатуры.

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

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

Кроме того, в книге в данном уроке идет подробное описание — как лучше всего настроить формы списка и основные формы новых объектов, чтобы пользователь видел при заполнении свойств товаров — только необходимую ему информацию. Здесь мы не будем показывать всю эту деталировку.

Просто попробуем в нашем товаре, н-р, "Кабели электрические" — задать дополнительное свойство "Белые кабели", а состав свойства: "тип свойства"=Цвет и "значение свойства" = Белый. Вот по такой схеме открывающихся друг за другом окон:

 

….я не знаю как у вас, но у меня уже закружилась голова и уже не совсем понятно — что мы делаем и зачем))))

А представьте — объяснить такую цепочку пользователю?!?…..Чтобы наш пользователь смог понять того, чего мы уже сами не понимаем — у него должно быть минимум три сертификата по 1С)))

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

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

Чтобы получить итоговый результат задачи — остатки товаров по его свойствам, в книге предлагается в регистр Остатков добавить измерение "НаборСвойств" с сылочным типом на подчиненный Номенклатуре справочник "ВариантыНоменклатуры". Далее в документы прихода/расхода материалов добавить в табличные части поле с таким же названием и типом данных, дописать модулях этих документах проведение по регистру остатков "НаборСвойств". На самом справочнике "ВариантыНоменклатуры" — прописать в его меню Характеристики, что позволит их видеть потом в СКД отчете. И, как окончание, создать сам СКД-отчет по Остаткам Товара с отбором по Характеристикам:

Да, отчет получается интересный, но сам процесс создания дополнительных Характеристик (свойств) товара — очень запутанный, кроме того, пользователь при вводе стольких дополнительных данных при заполнении приходных/расходных накладных — создаст ни одну ошибку…..Начиная с ввода "НабораСвойств" в полях документа….

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

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

Итак, что нам нужно:

1. Дать возможность пользователю к Номенклатуре добавлять описание Свойств.

2. Дать возможность Аналитику исследовать показатели продаж в отборе по Свойствам Товара.

Рассмотрим какие у нас есть варианты при решении первого пункта задачи:

1. Мы можем добавить к справочнику Номенклатура подчиненный справочник, в который пользователь будет описывать только конкретными, заданные нами в Конфигураторе, данные строчного типа….это не подходит, так как при описании Свойств товара может понадобиться "непредсказуемый" нами в Конфигураторе Тип данных: например дата, число, строка, ссылка на др.справочник.

2. Поэтому для создания доп.Свойств Номенклатуры — мы должны создать ПВХ, так как ПВХ — это справочник + Описание Типов данных.

Если мы в справочнике Номенклатура — создадим табличную часть, в которой будет два поля — Тип данных вводимого Свойства товара и,непосредственно, само значение. Это очень просто — одно поле у нас будет ссылаться на ПВХ, др.на Характеристику этого ПВХ.

Но в этом случае, у нас не получится сделать записи уникальными….Только представьте себе вариант, где под товаром,например, Сосиски — можно ввести два вида значения Свойства "Цвет": и красные и зеленые))) 

Поэтому этот метод самый простой, но не дает уникальности в свойствах Номенклатуры.

3. Создадим ПВХ, но его значения будем набирать через регистр Сведений. Регистр Сведений — содержит только уникальные данные.

Это самый универсальный вариант. У нас будут записываться Свойства товара с разными типами данных, причем значения этих свойств для конкретного товара будет уникальным.

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

 

Далее создаем РегистрСведений, который будет непосредственно хранить уникальные значения Свойств Товара.

Для этого в регистре сведений добавляем два измерения:

1) Номенклатура, тип = СправочникСсылка.Номенклатура. Обязательно ставим галочку "Ведущее", благодаря этой галочки — мы будем видеть данный регистр из справочника Номенклатура!

2) СвойстваНоменклатуры, тип = ПланВидовХарактеристикСсылка.УниверсальныйПВХ.

В ресурсах регистра указываем "ЗначениеСвойства", тип = Характеристика.УниверсальныйПВХ:

 

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

Выделим ресурс "ЗначениеСвойства" регистра сведений и в меню справа на вкладке "Представления" — создадим связи, чтобы при выборе значения данного регистра в пользовательском режиме — нам выпадал сразу список из измерения данного регистра "СвойствоНоменклатуры". Т.к. помним, что измерение "СвойствоНоменклатуры"-это ПВХ, а ресурс "ЗначениеСвойства" — это и есть Характеристика данного ПВХ. Итак, на этой владке указываем "Связь по Типу" = "СвойствоНоменклатуры".  Теперь, если мы в измерении регистра выбрали Тип данных,н-р, строка, то когда будем вводить значение в ресурс — у нас сразу будет стоить тип строка, а не все возможные перечни типов!

 

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

 

В данном примере Товару "Транзистор Philips 2N2369" — создаем сначала Вид желаемого свойства товара, пусть это будет "Транзисторы", и сразу указываем тип данных для этого свойства — в данном примере мы выбираем вручную тип данных = Строка. Сохраняем. И далее нам нужно задать значения этому виду свойств товара, пусть это будет "Слаботочечные транзисторы":

 

Добавим еще одно Свойство этому товару, например, производитель "Корея". 

Возьмем другой товар, создадим ему свойство "Трансформаторы", тип = строка, значение = "Строчные трансформаторы". А второе свойство, которое мы желаем ввести этому товару будет тоже "Производитель" — его создавать не нужно, оно уже есть у нас в выборке, но вот если мы попробуем ввести то же самое значение этого свойства, равного "Корея", то нам придется набирать его вручную….Это не очень удобно…Хорошо, когда один раз введенное значение — можно подставлять множество раз.

Чтобы добавить данное удобство, перейдем в Конфигуратор и создадим справочник, на вкладке "Владелец" укажем созданный ранее наш "УниверсальныйПВХ". Теперь, если у нас свойства значений будут строковыми, то нам не обязательно постоянно выбирать тип = Строка, достаточно будет дать ссылку на этот подчиненный справочник: в него очень удобно сохранять строковые значения, а кроме того — такой способ позволит нам выбирать уже готовые строковые значения для Свойств товара.

Произведем небольшие настройки ПВХ в связи с появившемся подчиненным ему справочником:

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

С первым пунктом поставленной задачи мы справились — механизм создания уникальных свойств товару создали.

Заполним различные свойства номенклатуры в пользовательском режиме 1с. Обратим внимание, что уже введенные ранее свойства, такие как,н-р, Производитель, уже сразу есть в варианте выборке свойств, а так же нам дается сразу выбрать готовое значение этого свойства,н-р, "Корея".

Теперь перейдем ко второму этапу решения поставленной задачи: дать возможность в отчете делать отбор,н-р, по остаткам товара или по продажам товара от Свойств этого товара.

Сразу скажу, что мы не будем придумывать сложный механизм, добавляя в поля табличных частей документов какие-нибудь свойства товара!!! На практике так нельзя делать, иначе будет такая неразбириха с документами, что потом никаких сил не хватит это исправить….

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

Н-р, у нас есть один товар "Строчный трансформатор Samsung", у которого два свойства:1) "Трансформаторы" = "Строчные трансформаторы";2) "Производитель" = "Корея", и другой товар  "Строчный трансформатор Россия", у которого два свойства:1) "Трансформаторы" = "Строчные трансформаторы";2) "Производитель" = "Россия". Так вот мы никак не можем сказать, что эти два товара одинаковые, а отличаются только свойствами!!! Нет, эти два товара разные, чем мы коротко указываем различие их в Названии, и более подробно — описываем в свойствах данного товара. 

Отсюда, нам не нужно создавать какое-то дополнительное поле в первичных документах, чтобы в нем прописывать одну из характеристик товара (у нас этих характеристик может быть более одной!).

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

В Конфигураторе создадим Отчет по регистру "УникальностьУниверсальногоПВХ". Запишем в запрос СКД-отчета следующий код:

ВЫБРАТЬ
	ОстаткиМатериаловОстаткиИОбороты.Материал,
	ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
	ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход КАК Приход,
	ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход КАК Расход,
	ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
	УникальностьУниверсальногоПВХ.СвойствоНоменклатуры,
	УникальностьУниверсальногоПВХ.ЗначениеСвойства
ИЗ
	РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты КАК ОстаткиМатериаловОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УникальностьУниверсальногоПВХ КАК УникальностьУниверсальногоПВХ
		ПО ОстаткиМатериаловОстаткиИОбороты.Материал = УникальностьУниверсальногоПВХ.Номенклатура

В настройках СКД-отчета разрешим использовать в пользовательском режиме "Отбор". При формировании отчета в 1с-Предприятии — в отборе выбирем СвойствоНоменклатуры=Производитель. У нас получится очень интересный отчет:

Заменив регистр остатков на регистр Продаж — создадим второй отчет Продажи с возможностью отбора по свойствам товаров.

Мы выполнили и даже перевыполнили второй пункт задачи — дать возможность Аналитику создавать отчеты в разрезе Свойств товара.

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

п.с. при создании данной статьи мне очень помогла информация, прочитанная вот отсюда:

http://1clancer.ru/article/osobennost_ispolzovaniya_mekhanizma_kharakteristik_v_skd_821

http://www.1s-portal.ru/index.php/stati/configuration/16-common-objects/80-pvh-v-1c.html

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Надеюсь, что моя статья пригодится начинающим программистам на платформе 1с 8.3

п.с. в загрузку прилагаю учебную базу, в которой созданы были все текущие примеры. Эту базу я начала писать с нуля по урокам книги  "1С_ Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы" Радченко/Хрусталева http://v8.1c.ru/metod/books/book.jsp?id=441, просто дополняя ее еще и свои наработки.

Успехов в освоении ПВХ, в случае с решением этой непростой задачки — очень подходит лозунг ниже)):

 

 

 

has been added to your cart:
Оформление заказа