
252
253
Использование основных объектов конфигурации
План видов характеристик

Объект конфигурации План видов характеристик
О |
бъект конфигурации План видов характеристик является прикладным объектом и предназначен для описания структуры хранения информации о характеристиках, создаваемых пользователем. На основе объекта конфигурации План видов характеристик платформа создает в базе данных информационную структуру, в которой может храниться информация о том, какие существуют виды характеристик и какой тип должно иметь значение характеристики каждого вида.
В сущности, план видов характеристик очень напоминает справочник. Однако план видов характеристик имеет более узкую «специализацию»: он хранит, по сути, информацию только о том, какими видами характеристик может описываться какой-либо объект базы данных. Эта информация состоит из названия вида характеристики и ее типа. Разработчик и, что самое важное, пользователь могут задать в нем любое необходимое им количество видов характеристик.
Для того чтобы разработчик мог задать некий «набор» возможных типов значений, которые могут принимать виды характеристик, у объекта конфигурации План видов характеристик существует свойство Тип значения характеристик. Это свойство определяет составной тип данных, в который входят все типы, которые могут понадобиться при указании типа значения характеристики.
Кроме этого может случиться так, что пользователю станет недостаточно тех типов данных, которые существуют в конкретной системе (например, он захочет вести учет в разрезе цвета товаров, а справочник Цвет в конфигурации отсутствует). В этом случае он сможет воспользоваться неким вспомогательным справочником, который разработчик создаст заблаговременно и укажет в качестве свойства объекта конфигурации План видов характеристик -дополнительные значения характеристик.
Тогда пользователь, создав новый вид характеристики «Цвет»,
сможет создать необходимые значения этого вида характеристики в
справочнике дополнительных значений характеристик.
Примечательно, что этот справочник является подчиненным плану видов характеристик. Таким образом, если затем пользователь
пожелает создать новый вид характеристик «Запах» и создать его значения, он будет создавать их в том же самом справочнике дополнительных характеристик, и они не будут «смешиваться» со значениями цвета.
%Для тех, ктоработал с версией 7.7.
В версии 7.7 нет прямого соответствия прикладному объекту конфигурации план видов характеристик. Точнее всего будет сказать, что один план видов характеристик включает в себя me функциональные возможности, которыми в версии 7.7 обладали все объекты конфигурации вида «Вид субконто». Таким образом, в терминах 7.7, планы видов характеристик позволяют создавать несколько «наборов» объектов «Вид субконто».
Однако описание механизма ведения аналитического учета на счетах не является теперь основной задачей для плана видов характеристик. Использование подобного механизма было обобщено в виде возможности задания переменного количества свойств, которые могут описывать объект конфигурации. Причем возможность задания свойств существует как в режиме Конфигуратора, так и в режимеработы пользователя «1С:Предприятие».
Работа с планом счетов рассматривается теперь не как основное предназначение плана видов характеристик, а как частный случай, вытекающий из его возможностей. Конечно, как мы увидим далее, взаимодействие плана видов характеристик с планом счетов максимально автоматизировано средствами платформы (no сравнению с взаимодействием с другими объектами конфигурации). Однако основной акцент делается на универсальность механизма, предоставляемого планом видов характеристик. В частности это видно и из названия объекта, где вместо слова субконто (разрез аналитического учета) теперь используется слово характеристика, обозначающее свойство объекта конфигурации, описанное вне его самого (в другом объекте конфигурации).
254
255
Использование основных объектов конфигурации
План видов характеристик


<*" Узнай больше!
О структуре объектов встроенного языка, предназначенных для работы с планами видов характеристик, можно прочитать в главе «Планы видов характеристик» на странице 586.
План видов характеристик не имеет внутренних предопределенных механизмов привязки вида характеристики к тому объекту, который должен описывать этот вид характеристики. Он лишь предоставляет возможность разработчику и пользователю описать некий набор характеристик и задать их тип. Каким образом хранить соответствие конкретного вида характеристик или значения характеристик конкретному объекту базы данных, - решает сам разработчик в зависимости от создаваемого прикладного решения.
С точки зрения реализации пример, который мы будем рассматривать далее, является более сложным, чем остальные, поэтому сначала мы объясним логическую связь между объектами, которые будут использоваться в этом примере.
Логическая связь объектов
Д |
ля реализации этого примера нам понадобятся три новых объекта конфигурации. Прежде всего, это план видов характеристик, который будет хранить виды характеристик, которыми в принципе можно описывать материалы. Затем это справочник, подчиненный справочнику «Номенклатура», элементы которого будут идентифицировать партии материалов с некоторым фиксированным набором значений характеристик. И третий объект - это регистр сведений, в котором собственно и будет храниться соответствие конкретных значений характеристик некоторому варианту материала.
В результате использования подобной логической структуры объектов мы получим возможность описывать каждую поступающую партию материала, любым количеством видов характеристик, поскольку это соответствие будет храниться в регистре сведений. И вместе с тем получим возможность вести учет в разрезе видов характеристик, добавив в регистры накопления еще одно измерение для хранения ссылки на элемент справочника, подчиненного справочнику номенклатура.
|
Теперь для того, чтобы узнать остатки материалов, обладающих некоторым значением характеристики, достаточно будет выбрать из Регистра сведений все элементы подчиненного справочника,

256
257
Использование основных объектов конфигурации
План видов характеристик

обладающие таким значением характеристики, и затем по ним и их владельцам получить остатки регистра накопления.
Реализация решения
Создание новых объектов конфигурации
К |
ак мы уже говорили, нам понадобится создать несколько новых объектов конфигурации. Создадим объект конфигурации Справочник с именем «ВариантыНоменклатуры» и укажем, что он будет подчинен справочнику «Номенклатура».
Затем создадим еще один объект конфигурации Справочник с именем «ДополнительныеСвойстваНоменклатуры».
После этого создадим объект конфигурации План видов характеристик с именем «СвойстваНоменклатуры». Тип значения характеристик установим следующим:
• Число, длина 15, точность 3,
• Строка, длина 25,
• Дата,
• Булево,
• СправочникСсылка. ДополнительныеСвойстваНоменкла
туры:
|


258
259
Использование основных объектов конфигурации
План видов характеристик


Справочнику «ДополнительныеСвойстваНоменклатуры» укажем владельца - план видов характеристик «СвойстваНоменклатуры» После этого определим, что дополнительные значения характеристик плана видов характеристик будут располагаться в справочнике «ДополнительныеСвойстваНоменклатуры»:

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

тип
• «НаборСвойств», ведущее,
СправочникСсылка. ВариантыНоменклатуры,
• «ВидСвойства», тип
ПланВидовХарактеристикСсылка. СвойстваНоменклатуры.
Ресурс регистра:
• «Значение», тип Характеристика. СвойстваНоменклатурЫ-
Обратите внимание, что мы имеем возможность определить тип значения ресурса регистра, как Характеристика.<имя>. По сути, это

260
261
т
План видов характеристик

После того, как мы слегка изменим положение любой из границ панели, появится вопрос:
Теперь мы скорректируем размеры панели и добавим в нее новую страницу (добавление страницы - контекстное меню правой кнопки мыши на поле формы - Добавить страницу...):
|
|
На зтот вопрос мы ответим утвердительно, и все элементы управления переместятся в добавленную панель:

Зададим имя и заголовок новой страницы - «Свойства», а первую страницу также переименуем в «Основные» и зададим ей такой же заголовок (группа свойств «Текущая страница» в палитре свойств
формы):


262
263
Использование основных объектов конфигурации
План видов характеристик



После этого выделим все элементы управления, расположенные
панели, и выполним команду
Форма | Центрирование | Центрировать по вертикали:

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

![]() |
|
Установка этого свойства будет обеспечивать нам то, что для источника данных этого поля - реквизита формы «Варианты», имеющего тип СправочникСписок. ВариантыНоменклатуры, -значение отбора по владельцу всегда будет равно ссылке на редактируемый элемент справочника «Номенклатура». Иными словами, список справочника, содержащийся в реквизите формы «НаборСвойств» всегда будет содержать только элементы, подчиненные редактируемому элементу справочника «Номенклатура». А значит и табличное поле «Варианты», для которого этот реквизит является источником данных, будет отображать только элементы, подчиненные редактируемому элементу справочника «Номенклатура».


264
265
Использование основных объектов конфигурации
План видов характеристик
Ниже разместим аналогичным образом еще одну надпись «НадписьЗначенияСвойств» с заголовком «Значения свойств:» и начертанием шрифта «Жирный».:

Под ней расположим табличное поле с командной панелью с
именем «Свойства» и типом
РегистрСведенийСписок. ЗначенияСвойствНоменклатуры. Для колонки «НаборСвойств» снимем флаг «Видимость», а для поля ввода в колонке «Значение» установим связь по типу -ЭлементыФормы. Свойства. ТекущиеДанные. ВидСвойства:

267 |
266
Связь по типу будет обеспечивать нам то, что тип значений, вводимых в это поле ввода, будет ограничен только типом характеристики, выбранной в поле «Вид свойства». Однако этим мы никак не можем повлиять на само значение, хранимое в этом поле. Если не предпринять никаких дополнительных действий, то получится, что в случае, когда в поле «Значение» было введено какое-либо значение, поменять его на значение другого вида характеристики не удастся. При выборе другого вида характеристики будет возникать несоответствие между типом хранимого значения и типом, которым ограничен ввод в элементе управления. В этом случае, естественно, система будет предлагать вводить тот тип, который имеет хранимое значение.
Использование основных объектов конфигурации
План видов характеристик




![]()


Чтобы избежать такой ситуации, нам нужно будет при смене значения в поле «Вид свойства» привести значение поля «Значение» к типу характеристики, выбранной в поле «Вид свойства».
Поэтому для поля ввода в колонке «Вид свойства» создадим обработчик события «При изменении»:
Процедура СвойстваВидСвойстваПриИзмененииЭлемент) ДанныеВидСвойства = ЭлементыФормы. Свойства. ТекущиеДанные. ВидСвойства; ЭлементыФормы. Свойства. ТекущиеДанные. Значение = ДанныеВидСвойства. ТипЗначения
.ПривестиЗначение(ЭлементыФормы. Свойства. ТекущиеДанные. Значение);
КоиецПроцедуры__________________________________________________
Теперь нам нужно сделать так, чтобы в табличном поле «Свойства» отображались записи регистра сведений, относящиеся только к выбранному в верхнем табличном поле элементу справочника «ВариантыНоменклатуры».
Поэтому для табличного поля «Варианты» создадим обработчик события «При активизации строки»:
ПроцедураВариантыПриАктивизацииСтрокиСЭлемент)
ЭлементыФормы. Свойства. Значение. Отбор. НаборСвойств
.Установить(Элемент. ТекущиеДанные. Ссылка, Истина); КонедПроцедуры
Кроме этого, чтобы не отображать весь регистр при открытии формы, создадим обработчик события формы «ПриОткрытии», содержащий следующий текст:
Процедура ПриОткрытии()
ЭлементыФормы. Свойства. Значение. Отбор. НаборСвойств. Установить(,Истина); КонедПроцедуры
Доработка справочника ВариантыНоменклатуры
Т |
еперь нам следует доработать справочник
«ВариантыНоменклатуры» таким образом, чтобы пользователь имел возможность создавать новые свойства материалов не только при редактировании самого материала, но и в процессе ввода документов, когда в табличную часть подбирается набор свойств.
Поэтому для справочника «ВариантыНоменклатуры» укажем, что он будет редактироваться обоими способами (как в списке, так и в диалоге) и создадим с помощью конструктора основную форму элемента.
Доработка формы элемента справочника
«ВариантыНоменклатуры» будет сводиться, по большому счету, к тем же действиям, которые мы выполнили с формой справочника «Номенклатура». В форме нам нужно будет расположить табличное поле, которое должно отображать существующие в регистре сведений записи о значениях свойств для этого элемента справочника.
Откроем основную форму элемента справочника
«ВариантыНоменклатуры» и раздвинем форму вниз. На
освободившемся пространстве поместим табличное поле с именем
«Свойства», типом
РегистрСведенийСписок. ЗначенияСвойствНоменклатуры и командной панелью. Для колонки «НаборСвойств» снимем флаг видимости:



268
269
Использование основных объектов конфигурации
План видов характеристик

Затем для поля ввода, расположенного в колонке «Значение»
зададим связь по типу
ЭлементыФормы. Свойства. ТекущиеДанные. ВидСвойства.
Для поля ввода, расположенного в колонке «ВидСвойства» создадим обработчик события «ПриИзменении»:
И в заключение нужно предусмотреть возможность того, что пользователь может начать задавать новые значения свойств, не записав еще сам элемент справочника «НаборыСвойств».
Поэтому создадим обработчик события табличного поля «ПередНачаломДобавления»:




Процедура СвойстваВидСвойстваПриИзменении(Элемент)
ДанныеВидСвойства = ЭлементыФормы. Свойства. ТекущиеДанные. ВидСвойства; ЭлементыФормы. Свойства. ТекущиеДанные. Значение = ДанныеВидСвойства. ТипЗначения
.ПривестиЗначение(ЭлементыФормы. Свойства. ТекущиеДанные. Значение); КоиедПроцедуры
Процедура СвойстваЛередНачаломДобавления(Элемент, Отказ, Копирование)
Если ЭтоНовый() Тогда Записать();
КонецЕсли; КонецПроцедуры

![]()
Теперь необходимо сделать так, чтобы при открытии формы устанавливался нужный нам отбор, а также, в случае, если мы добавляем новый элемент справочника, чтобы отбор устанавливался и после того, как элемент будет записан. Для этого мы воспользуемся возможностью назначения обработчика события изменения данных, который будет отслеживать изменения ссылки на редактируемый элемент справочника.
Узнай больше!
О событиях, связанных с формой, можно прочитать в главе «События, связанные с формой» на странице 547.
Прежде всего, создадим обработчик события
«ПриИзмененииСсылки», в котором установим требуемый нам отбор:
Процедура ПриИзмененииСсылки(ПутьКДанным)
Cвойства. Отбор. Ha6opCвойств. Установить(Cсылка,"Истина"); КонецПроцедуры
Доработка регистра ОстаткиМатериалов
Д |
ля того чтобы обеспечить учет материалов по значениям
характеристик нам нужно будет изменить структуру регистра
накопления «ОстаткиМатериалов» и добавить в него новое
измерение «НаборСвойств» с типом
СправочникСсылка. ВариантыНоменклатуры:

Затем в тело модуля формы добавим вызов этого обработчика:
Доработка документа ПриходнаяНакладная
ПодключитьОбработчикИзмененияДанныхССправочникОбъект. Ссылка",
"ПриИзмененииСсылкн");
П
оследнее, что нам осталось - доработать документ «ПриходнаяНакладная». Для того чтобы при приходовании товаров пользователь мог указывать набор свойств для каждого приходуемого материала, добавим в табличную

270
271
Использование основных объектов конфигурации
План видов характеристик





часть документа новый реквизит «НаборСвойств» с типом СправочникСсылка. ВариантыНоменклатуры:

После этого расположим этот реквизит в табличном поле формы документа (правая кнопка мыши - Размещение данных):

элементов справочника «ВариантыНоменклатуры», подчиненных материалу, выбранному в колонке «Материал».
В заключение откроем процедуру обработки проведения в модуле документа и добавим к формируемым движениям присвоение значения измерению «НаборСвойств»:
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, // внесенные вручную изменения будут утеряны!!! Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
// регистр ОстаткиМатериалов Приход
Движение = Движения. ОстаткиМатериалов. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Приход;
Движение. Период = Дата;
Движение. Материал = ТекСтрокаМатериалы. Материал;
Движение. НаборСвойств = ТекСтрокаМатериалы. НаборСвойств;
Движение. Склад = Склад;
Движение. Количество = ТекСтрокаМатериалы. Количество; КонецЦикла; Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
// регистр СтоимостьМатериалов Приход
Движение = Движения. СтоимостьМатериалов. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Приход;
Движение. Период = Дата;
Движение. Материал = ТекСтрокаМатериалы. Материал;
Движение. Стоимость = ТекСтрокаМатериалы. Сумма; КонецЦикла;
// записываем движения регистров Движения. ОстаткиМатериалов. Записать(); Движения. СтоимостьМатериалов. Записать(); Движения. Управленческий. Записать();
//}}_KOHCTPУКТР_ДВИЖЕНИЙ_PEГИCTPOB КонецПроцедуры
Теперь запустим 1С:Предприятие в режиме отладки и создадим несколько наборов свойств для наших материалов.
Создание наборов свойств
Для поля ввода, расположенного в колонке «НаборСвойств» снова воспользуемся свойством «Связь по владельцу» ЭлементыФормы. Материалы. ТекущиеДанные. Материал. Теперь при выборе в этом поле ввода будет всегда открываться список
О
ткроем элемент справочника «Номенклатура» - «Кабель
электрический». Перейдем на закладку «Свойства» и
создадим набор свойств этого элемента под названием
«Белый».

272
273
Использование основных объектов конфигурации
План видов характеристик

Он будет состоять их следующих характеристик:
• «Цвет» - «Белый»,
• «Сечение, мм2» - 2,5:
Этот набор свойств будет называться «Польша» и состоять из следующих характеристик:
• «Цвет» - «Черный»,
• «Производитель» - «Fagumit»:
|
|
Затем создадим набор свойств для элемента справочника «Номенклатура» - «Шланг резиновый».
Теперь откроем документ ПриходнаяНакладная №2 и укажем, что был закуплен белый электрический кабель в количестве 2 шт. и польский резиновый шланг.

274
275
Использование основных объектов конфигурации
План видов характеристик
![]() | |
![]() | |
![]() |
Кроме этого посмотрим на записи, которые содержатся в регистре сведений «ЗначенияСвойствНоменклатуры»: |
Затем скопируем первую строку документа и укажем, что был закуплен еще и черный электрический кабель в количестве 3 шт. (в процессе ввода нам придется создать еще один набор свойств для электрического кабеля - «черный», у которого «Цвет» - «Черный» и «Сечение» - 2,5):

Проведем документ и посмотрим на движения документа по регистру «ОстаткиМатериалов»:


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

276
277
Использование основных объектов конфигурации
План видов характеристик

Выберем виртуальную таблицу регистра накопления «ОстаткиМатериалов. ОстаткиИОбороты». В параметрах виртуальной таблицы зададим условие отбора таким, что значение измерения регистра «НаборСвойств» должно находиться в списке, передаваемом в качестве параметра «СписокСвойств»:

|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |












