1С:Предприятие 8.2 /
Разработчикам /
Практикум
Практикум 9. План видов характеристик
Создание новых объектов конфигурации
Доработка справочника Номенклатура
Доработка справочника ВариантыНоменклатуры
Доработка регистра ОстаткиМатериалов
Доработка документа ПриходнаяНакладная
Отчет ОстаткиМатериаловПоСвойствам
Задача, которую мы перед собой поставим. Будет заключатся в следующем: мы создадим механизм, позволяющий пользователюпроизвольным образом описывать материалы и, что самое главное, вести учет в разрезе всех тех описаний, которые могут быть заданы пользователем.
Описывать материалы пользователь сможет следующим образом: для каждого материала будет возможность создавать некоторые (произвольные) характеристики этого материала (например, цвет, производитель и пр.). Затем при поступлении материалов , можно будет задать конкретные значения интересующих характеристик (например, при поступлении электрических кабелей можно будет указать, что они белого цвета и их сечение равно 2,5 мм2, а при поступлении резиновых шлангов указать, что они черного цвета и произведены фирмой такой-то).
В дальнейшем всегда можно будет получить информацию о том, сколько и каких материалов есть у нас, скажем, белого цвета, или сколько было израсходовано черных резиновых шлангов.
Поскольку заранее не известно, какими именно характеристиками пользователь захочет описать тот или иной материал, мы должны предоставить ему некоторый механизм, позволяющий создавать любые характеристики и, что самое важное, указывать, какой тип значения должен быть у этих характеристик. Тогда при задании значений определенной характеристики материала пользователь сможет выбирать значения строго в соответствии с указанным типом.
Такую возможность описания характеристик как раз и обеспечивает объект конфигурацииПлан видов характеристик, с которым мы сейчас и познакомимся.
Объект конфигурацииПлан видов характеристик является прикладным и предназначен для описания структуры хранения информации о характеристиках, создаваемых пользователем. На основе объекта конфигурацииПлан видов характеристик платформа создает в базе данных информационную структуру. В ней может храниться информация о существующих видах характеристик и типе значения характеристики каждого вида.
В сущности, план видов характеристик очень напоминает справочник, однако имеет более узкую «специализацию»: хранит, по сути, информацию только о том, какими видами характеристик может описываться какой-либо объект базы данных. Эта информация состоит из названия вида характеристики и ее типа. Разработчик и, главное, пользователь могут задать в нем любое необходимое им количество видов характеристик.
Логическая связь объектов
Для реализации этого примера нам понадобятся три новых объекта конфигурации. Прежде всего, это План видов характеристик. Он будет хранить виды характеристик, которыми в принципе можно описывать материалы. Затем это Справочник, подчиненный справочникуНоменклатура, элементы которого будут идентифицировать партии материалов с некоторым фиксированным набором значений характеристик. И третий объект → это Регистр сведений, в котором собственно и будет храниться соответствие конкретных значений характеристик некоторому варианту материала (см. рисунок).
В результате использования подобной логической структуры объектов мы получим возможность описывать каждую поступающую партию материала любым количеством видов характеристик, поскольку это соответствие будет храниться в регистре сведений. И вместе с тем получим возможность вести учет в разрезе видов характеристик, добавив в регистры накопления еще одно измерение для хранения ссылки на элемент справочника , подчиненного справочникуНоменклатура.
Теперь для того, чтобы узнать остатки материалов, обладающих некоторым значением характеристики, достаточно будет выбрать из регистра сведений все элементы подчиненного справочника, с таким значением характеристики, и затем по ним и их владельцам получить остатки регистра накопления .
Создание новых объектов конфигурации
1. Создадим объект конфигурации Справочник с именем ВариантыНоменклатуры и укажем, что он будет подчинен справочнику Номенклатура.
2. Создадим еще один объект конфигурации Справочник с именем ДополнительныеСвойстваНоменклатуры.
3. После этого создадим объект конфигурации План видов характеристик с именем СвойстваНоменклатуры. Тип значения характеристик установим следующим:
- Число, длина 15, точночность 3;
- Строка, длина 25;
- Дата;
- Булево;
- СправочникСсылка.ДополнительныеСвойстваНоменклатуры.
4. Справочнику ДополнительныеСвойстваНоменклатуры укажем владельца → план видов характеристик СвойстваНоменклатуры.
5. На закладке Формы установим для него редактирование в списке.
6. После этого определим, что дополнительные значения характеристик плана видов характеристик будут располагаться в справочникеДополнительныеСвойстваНоменк-латуры.
7. На закладке Формы укажем, что этот план видов характеристик будет редактироваться в списке.
8. В заключение создадим объект конфигурации Регистр сведений с именем ЗначенияСвойствНоменклатуры.
9. Изменения регистра:
- НаборСвойств, ведущее, тип СправочникСсылка.ВариантыНоменклатуры;
- ВидСвойства, тип ПланВидовХарактеристикСсылка.СвойстваНоменклатуры.
10. Ресурс регистра:
- Значение, тип Характеристика.СвойстваНоменклатуры.
Обратите внимание, что мы имеем возможность определить тип значения ресурса регистра как Характеристика.<имя>. По сути, это определение представляет собой составной тип данных, как он задан в типе значения соответствующего плана видов характеристик. То есть ресурс регистра может иметь значение любого типа из тех, которые описаны в типе значения плана видов характеристик.
Доработка справочника Номенклатура
1. Прежде всего, в справочнике Номенклатура нам нужно обеспечить возможность редактирования варианта материала. Для этого укажем, что справочник Номенклатура будет редактироваться теперь обоими способами (на закладке Форма) → в списке и в диалоге.
2. Создадим основную форму элемента при помощи конструктора.
3. Немного раздвинем форму по ширине и по высоте и добавим в нее панель: Форма в†’ Вставить элемент управления в†’ Панель (из верхнего меню) или с помощью иконки нижнего меню Панель. С помощью курсора, превращающегося в «крест», растягиваем панель, получая при этом следующую картинку и одновременно окошко с вопросом:
Если вопрос не появился сразу, то он появится после того, как мы слегка изменим положение любой из границ панели.
4. На этот вопрос ответим утвердительно, и все элементы управления переместятся в добавленную панель:
5. Теперь мы скорректируем размеры панели и добавим в нее новую страницу. Добавление страницы → контекстное меню правой кнопки мыши на поле формы → Добавить страницу.
6. Зададим имя и заголовок новой страницы → Свойства, а первую страницу переименуем в Основные и зададим ей такой же заголовок. Имена и заголовки задаются в палитре свойств панели в группе свойств Текущая страница:
7. После этого выделим все элементы управления, расположенные в панели, и выполним команду Форма в†’ Центрирование в†’ Центрировать по вертикали.
8. Теперь перейдем на страницу Свойства и добавим надпись НадписьВариантыНоменклатуры с заголовком Варианты номенклатуры:. Укажем для нее начертание шрифтаЖирный.
9. Под этой надписью расположим табличное поле с командной панелью. Полю присвоим имя Варианты и тип СправочникСписок.ВариантыНоменклатуры.
10. Из табличного поля удалим колонку Код.
11. Для этого табличного поля Варианты установим свойство Связь по владельцу → СправочникОбъект.Ссылка.
Установка этого свойства обеспечивает нам следующее: для источника данных этого поля → реквизита формы Варианты, имеющего тип Справочник Список.ВариантыНоменклатуры, - значение отбора по владельцу всегда будет равно ссылке на редактируемый элемент справочника Номенклатура. Иными словами, список справочника, содержащийся в реквизите формы НаборСвойств, всегда будет содержать только элементы, подчиненные редактируемому элементу справочника Номенклатура. А значит, и табличное поле Варианты, для которого этот реквизит является источником данных, будет отображать только элементы, подчиненные редактируемому элементу справочника Номенклатура.
12. Ниже поместим аналогичным образом еще одну надпись → НадписьЗначенияСвойств с заголовком Значения свойств: и начертанием шрифта Жирный.
13. Под ней расположим табличное поле с командной панелью. Полю присвоим имя Свойства и тип РегистрСведенийСписок.ЗначенияСвойствНоменклатуры.
14. Для колонки Набор свойств снимем флаг Видимость, а для поля ввода в колонке Значение установим связь по типу ЭлементыФормы.Свойства.ТекущиеДанные. ВидСвойства.
Связь по типу будет обеспечивать нам ограничение типа значений, вводимых в это поле ввода, только типом характеристики, выбранной в поле Вид свойства. Однако этим мы никак не можем повлиять на само значение, хранимое в этом поле. Если не предпринять никаких дополнительных действий, то при введении в поле Значение какого-либо значения поменять его вид характеристики не удастся.
При выборе другого вида характеристики будет возникать несоответствие между типом хранимого значения и типом, которым ограничен ввод в элементе управления. В этом случае, естественно, система будет предлагать вводить тот тип, который имеет хранимое значение.
Чтобы избежать такой ситуации, необходимо при смене значения в поле Вид свойства привести значение поля Значение к типу характеристики, выбранной в поле Вид свойства.
15. Поэтому для поля ввода в колонке Вид свойства создадим обработчик события ПриИзменении:
16. Теперь нам нужно сделать так, чтобы в табличном поле Свойства отображались записи регистра сведений , относящиеся только к выбранному в верхнем табличном поле элементу справочника ВариантыНоменклатуры.
Поэтому для табличного поля Варианты создадим обработчик события При АктивизацииСтроки:
17. Кроме этого, чтобы не отображать весь регистр при открытии формы , создадим обработчик события формы ПриОткрытии, содержащий следующий текст:
Доработка справочника ВариантыНоменклатуры
Теперь нам следует доработать справочник ВариантыНоменклатуры таким образом, чтобы пользователь имел возможность создавать новые свойства материалов не только при редактировании самого материала, но и в процессе ввода документов , когда в табличную часть подбирается набор свойств.
1. Поэтому для справочника ВариантыНоменклатуры укажем, что он будет редактироваться обоими способами (как в списке, так и в диалоге).
2. Создадим с помощью конструктора основную форму элемента.
3. В форме нам нужно будет расположить табличное поле, которое должно отображать существующие записи в регистре сведений о значениях свойств для этого элемента справочника.
В основной форме элемента поместим табличное поле с именем Свойства, типом РегистрСведенийСписок.ЗначенияСвойствНоменклатуры и командной панелью.
4. Для колонки Набор свойств снимем флаг видимости.
5. Затем для поля ввода, расположенного в колонке Значение, зададим связь по типу ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства.
6. Для поля ввода, расположенного в колонке Вид свойства, создадим обработчик события ПриИзменении:
Теперь необходимо сделать так, чтобы при открытии формы устанавливался нужный нам отбор. Также нужно предусмотреть, чтобы при добавлении нового элемента справочника отбор устанавливался и после записи элемента. Для этого мы воспользуемся возможностью назначения обработчика события изменения данных, который будет отслеживать изменения ссылки на редактируемый элемент справочника.
7. Прежде всего, создадим обработчик события ПриИзмененииСсылки, в котором установим требуемый нам отбор:
8. Затем в тело модуля формы добавим вызов этого обработчика:
9. И в заключение нужно предусмотреть возможность того, что пользователь может начать задавать новые значения свойств, не записав еще сам элемент справочника НаборыСвойств. Поэтому создадим обработчик события табличного поля ПередНачаломДобавления:
Доработка регистра ОстаткиМатериалов
Чтобы обеспечить учет материалов по значениям характеристик, необходимо изменить структуру регистра накопления ОстаткиМатериалов и добавить в него новое измерение НаборСвойств с типом СправочникСсылка.ВариантыНоменклатуры.
Доработка документа ПриходнаяНакладная
Последнее, что нам осталось, - доработать документ ПриходнаяНакладная. Для того чтобы при приходовании товаров пользователь мог указывать набор свойств для каждого приходуемого материала.
1. Добавим в табличную часть документа новый реквизит НаборСвойств с типом СправочникСсылка.ВариантыНоменклатуры:
2. Расположим этот реквизит в табличном поле формы документа (правая кнопка мыши → Размещение данных):
3. Для поля ввода, расположенного в колонке НаборСвойств, снова воспользуемся свойством Связь по владельцу → ЭлементыФормы.Материалы.ТекущиеДанные.Ма-
териал. Теперь при выборе в этом поле ввода будет всегда открываться список элементов справочника ВариантыНоменклатуры, подчиненных материалу, выбранному в колонке Материал.
4. В заключение откроем процедуру обработки проведения в модуле документа и добавим к формируемым движениям присвоение значения измерению НаборСвойств:
Теперь запустим 1С:Предприятие в режиме отладки и создадим несколько наборов свойств для наших материалов.
Создание наборов свойств
1. Откроем элемент справочника Номенклатура → Кабель электрический.
2. Перейдем на закладку Свойства и создадим набор свойств этого элемента под названием Белый.
3. Затем создадим набор свойств для элемента справочника Номенклатура → Шланг резиновый. Этот набор свойств будет называться Польша и состоять из следующих характеристик:
- Цвет → Чепный;
- Производитель → Fagumit.
4. Теперь откроем документ Приходная накладная №–2 и укажем, что был закуплен белый электрический кабель в количестве 2 шт., и польский резиновый шланг.
5. Затем скопируем первую строчку документа и укажем, что был закуплен еще и черный электрический кабель в количестве 3 шт. В процессе ввода нам придется создать еще один набор свойств для электрического кабеля → Черный, у которого:
- Цвет → Черный;
- Сечение → 2,5.
6. Проведем документ и посмотрим на движения документа по регистру ОстаткиМатериалов:
7. Кроме этого посмотрим на записи, которые содержатся в регистре сведений ЗначенияСвойствНоменклатуры:
Отчет ОстаткиМатериаловПоСвойствам
Для полного завершения картины мы создадим отчет, который будет показывать нам наличие материалов с теми или иными свойствами.
При создании этого отчета мы используем те возможности, которые предоставляет нам система компоновки данных для работы с характеристиками.
1. Создадим новый объект конфигурации Отчет с именем ОстаткиМатериаловПоСвойствам.
2. Откройте конструктор схемы компоновки данных, добавьте новый Набор данных → запрос и займемся конструированием запроса.
3. Выберем виртуальную таблицу регистра накопления ОстаткиМатериалов.ОстаткиИОбо роты.
4. Из виртуальной таблицы регистра накопления ОстаткиМатериалов.ОстаткиИОбороты выберем следующие поля:
- Материал;
- НаборСвойств;
- КоличествоНачальныйОстаток;
- КоличествоПриход;
- КоличествоРасход;
- КоличествоКонечныйОстаток.
5. После этого на закладке Объединения/Псевдонимы зададим псевдонимы числовых полей без слова Количество:
6. Приступим к описанию характеристик. Для этого перейдем на закладку Характеристики.
Нажмем на кнопку Добавить и приступим к описанию полей.
7. Первое поле, которое требуется описать, - Тип значения. Здесь следует указать тип того поля, к которому будут относиться наши характеристики. В нашем случае таким полем является поле НаборСвойств регистра ОстаткиМатериалов. Поэтому в качестве типа значения мы выберем СправочникСсылка.ВариантыНоменклатуры.
8. Следующим шагом будет описание того, откуда система компоновки данных должна получать список характеристик. Для этого следует указать источник списка характеристик и описать назначение конкретных полей этого источника.
В качестве источника система компоновки данных может использовать либо имеющуюся таблицу исходных данных, либо результат некоторого запроса к таблицам. В нашем случае все довольно просто: список всех характеристик хранится в плане видов характеристик СвойстваНоменклатуры. Поэтому в качестве источника мы укажем Таблица, а в поле Список характеристик выберем ПланВидовХарактеристик. СвойстваНоменклатуры.
9. Далее следует описать назначение полей источника, «поставляющего» список характеристик. В поле Идентификатор выберем Ссылка, в поле Имя → Наименование, а в поле Тип → ТипЗначения.
10. Перейдем к описанию источника значений характеристик. В нашем случае источником значений характеристик является регистр сведений ЗначенияСвойствНоменклатуры, поэтому в поле Источник мы выбираем Таблица, а в поле Значение характеристик → РегистрСведений.ЗначенияСвойствНоменклатуры.
11. Далее опишем назначение полей регистра. В поле Объект выберем измерение НаборСвойств, в поле Идентификатор → ВидСвойства, а в поле Значение → ресурс регистра Значение:
12. На этом создание запроса закончено. Нажмем ОК и посмотрим на текст запроса, сформированный для схемы компоновки данных:
13. В данном запросе примечательной является секция, начинающаяся с ключевого слова ХАРАКТЕРИСТИКИ. Она как раз и описывает для системы компоновки данных те характеристики, которые будут использованы в данном отчете.
Текст этой секции заключен в фигурные скобки. Это означает, что он не является частью запроса, а представляет собой инструкцию для системы компоновки данных.
14. Приступим к редактированию схемы компоновки данных. Прежде всего, на закладке Ресурсы выберем все доступные ресурсы:
15. Перейдем на закладку Настройки. Создадим структуру отчета → добавим группировкуДетальные записи.
16. Затем на закладке Выбранные поля выберем те поля, которые будут выводиться в отчет:
- Материал;
- НаборСвойств;
- НачальныйОстаток;
- Приход;
- Расход;
- КонечныйОстаток.
17. В заключение перейдем на закладку Другие настройки и зададим заголовок отчета → Остатки материалов по свойствам.
18. На этом создание отчета закончено. Запустим 1С:Предприятие в режиме отладки и посмотрим, какие результаты можно получить с помощью нашего отчета. Откроем отчет Остатки материалов по свойствам.
19. Сначала посмотрим, какие у нас есть материалы с сечением 2,5 мм2. Для этого нажмем Настройки, перейдем на закладку Отбор и раскроем ветку Набор свойств.
Обратите внимание, что к полям, существующим у справочника ВариантыНоменк-латуры, система компоновки данных добавила все характеристики, которые определены нами для различных наборов свойств в базе данных: Производитель, Цвет и Сечение. Таким образом, отбор в отчете по значениям каких-либо характеристик является достаточно простым и интуитивно понятным.
20. Чтобы узнать, какие у нас есть материалы с сечением 2,5 мм2, достаточно выбрать поле Сечение, мм2 и задать для него условие равенства 2,5.
21. По окончании выполнения отчета мы получим следующий результат:
22. Затем посмотрим, какие у нас есть материалы черного цвета:
23. И в заключение, чтобы убедиться в правильности работы отчета, посмотрим, сколько у нас электрических кабелей черного цвета:
Таким образом, вы убедились в том, что при использовании данной логической схемы мы имеем теперь возможность вести учет материалов в произвольном количестве разрезов свойств и их значений.
Следует заметить, что пример, рассмотренный нами, не является законченным решением для данной конфигурации. Мы всего лишь продемонстрировали возможность ведения такого учета. Для того, чтобы наша конфигурация могла полностью использовать свойства материалов, необходимо внести соответствующие изменения в остальные регистры, документы и некоторые отчеты.
Другие материалы по теме:
приход., характеристики, свойства, источник, тип..., регистр., отбор, основные, список, план, формы, значения, номенклатуры, остатки, номенклатура, объект, элемент, справочника, справочник., значение, регистр, справочник, отчет, действия, вид, конфигурации
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Практикум
Другие материалы по теме:
Источники данных для расчетов бюджетирования
Общесистемные механизмы и принципы
Основные элементы подсистемы. Горизонт и периодичность планирования
Типы и виды номенклатуры (регистр)
Механизмы заполнения табличной части документа «поступление товаров и услуг»
Нас находят: план видов характеристик, получение данных из плана вида характеристик, 1С Как скопировать набор значений характеристик и затем изменить, https://stimul kiev ua/materialy htm?a=praktikum_9_plan_vidov_kharakteristik, 1с планы видов характеристик получить значение программно, 99302, 1с8 план видов характеристик неограниченная строка, 52400, 21420, 1с планы видов характеристик программно задать свойство
Мы на Facebook