Практикум 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. Розташуємо цей реквізит у табличному полі форми документа (права кнопка миші → Розміщення даних):
![Приходная накладная Номер: X Вырезать гІ+Х Дата: % Копировать СігІ+С Склад: Р, Вставить СігІ+У Є1 -Ьґ ш і, я 1,2 Г / X Удалить N Материал Количество І Цена [аЬІ1 Поле ввода [аы] Поле ввода Цы] Поле ввода во Установить привязки... СЫ+ЭЫК+Э Добавить колонку](/img/materialy_praktikum_9_plan_vidov_kharakteristik/301.png)

3. Для поля введення, розташованого в колонці НабірВластивостей, знову скористаємося властивістю Зв'язок за власником → ЕлементиФорми.Матеріали.ПоточніДані.Ма-
теріал. Тепер при виборі в цьому полі введення завжди відкриватиметься список елементів довідника ВаріантиНоменклатури, підпорядкованих матеріалу, вибраному в колонці Матеріал.
4. На завершення відкриємо процедуру обробки проведення в модулі документа й додамо до сформованих рухів присвоєння значення виміру НабірВластивостей:

Тепер запустимо 1С:Підприємство в режимі налагодження та створимо кілька наборів властивостей для наших матеріалів.
Створення наборів властивостей
1. Відкриємо елемент довідника Номенклатура → Кабель електричний.
2. Перейдемо на вкладку Властивості і створимо набір властивостей цього елемента під назвою Білий.
![Ш Номенклатура: Кабель электрический _ П X Значения свойств Действия - 1ц ЕЗк Щ Вид свойства Значение ш Цвет белый [5] Сечение, мм2 2,500 Код: Наименование: Владелец: Действия т СЗК Т Вид свойства Значение Ч во Цвет белый — [га] Сечение, мм2 2,500 V О К За](/img/materialy_praktikum_9_plan_vidov_kharakteristik/304.png)
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. І на завершення, щоб переконатися в правильності роботи звіту, подивимося, скільки в нас електричних кабелів чорного кольору:


Таким чином, ви переконалися в тому, що при використанні цієї логічної схеми ми маємо тепер можливість вести облік матеріалів у довільній кількості розрізів властивостей та їх значень.
Слід зауважити, що розглянутий нами приклад не є завершеним рішенням для цієї конфігурації. Ми лише продемонстрували можливість ведення такого обліку. Щоб наша конфігурація могла повністю використовувати властивості матеріалів, необхідно внести відповідні зміни до решти регістрів, документів і деяких звітів.
