заборонити видалення визначених елементів користувачами, вимкнувши у всіх ролях такі права (за замовчуванням вимкнено):
- ІнтерактивнеВидаленняЗумовленихДаних
- ІнтерактивнаПоміткаВидаленняПредвизначенихДаних
- ІнтерактивнеЗняттяПоміткиВидаленняПризначенихДаних
- ІнтерактивнеВидаленняПоміченихЗумовленихДаних
Область застосування (уточнення): керований додаток, звичайний додаток.
1.3. Виняток становлять дочірні вузли РИБ, в якому визначені елементи автоматично не створюються (і не оновлюються при зміні метаданих), а повинні бути передані з головного вузла разом зі змінами конфігурації.
а) конфігурація повинна забезпечувати завантаження повідомлення обміну у підлеглий вузол РИБ до виконання іншого прикладного коду, який звертається до одержуваних з головного вузла визначених елементів;
б) у прикладній логіці завантаження даних з головного вузла (обробник події при отриманні даних від головного, правила реєстрації об'єктів) слід уникати звернень до визначених елементів, оскільки немає гарантії, що вони вже були завантажені з повідомлення обміну;
в) код обробників оновлення ІБ, який обробляє визначені елементи, не повинен виконуватись у підпорядкованих вузлах РИБ:
Якщо ПланиОбміну.ГоловнийВузол() = Невизначено Тоді
// Заповнюємо зумовлені елементи
// .
КінецьЯкщо;
При використанні конфігурації підсистеми "Обмін даними" Бібліотеки стандартних підсистем (БСП) версії 2.1.4 і вище вимоги (а) і (б) знімаються.
1.4. Для таблиць з визначеними елементами, які не входять до складу плану обміну РІБ (і на які не посилаються інші таблиці, що входять до складу плану обміну РІБ) властивість ОновленняПрізначенихДаних необхідно встановлювати в значення Оновлювати Автоматично.
Значення Авто в цьому випадку не підходить, тому що для підлеглого вузла Авто означає Неоновлювати Автоматично, тобто визначені елементи таблиці автоматично створені не будуть.
При включеному режимі сумісності з версією 8.3.3 також необхідно при першому запуску підпорядкованого вузла РІБ (відразу після того, як було оновлено його конфігурацію) встановлювати автоматичне оновлення даних за допомогою виклику:
2. У деяких випадках, визначені елементи не потрібно створювати автоматично, якщо їх наявність залежить від будь-якої умови: включеної функціональної опції, режиму роботи програми тощо.
Наприклад, ті чи інші зумовлені види розрахунків у плані видів розрахунку Нарахування залежать від значень функціональних опцій Використовувати Облік Часів Співробітників У Часах, Використовувати Відрядний Заробіток та ін.
- у властивості ОновленняПредвизначенихДаних довідника, плану рахунків, плану видів характеристик або плану видів розрахунку потрібно встановити значення "Не оновлювати автоматично"
- передбачити код створення (і позначки недійсним) зумовленого елемента залежно від бізнес-логіки, наприклад:
Якщо Отримати Функціональну Опцію ( "Використовувати Облік Часів Співробітників У Часах") Тоді
НарахуванняОб'єкт = ПланиВидівРасчета.Начисления.СтворитиВидРасчета();
НарахуванняОб'єкт.Ім'яПредвизначенихДаних = "ОкладПо Годинникам";
// .
Нарахування Об'єкт. Записати ();
КінецьЯкщо;
- враховувати в прикладному коді відсутність зумовлених елементів ІБ. В іншому випадку, при зверненні до неіснуючого зумовленого елементу з коду або тексту запиту буде викликано виключення:
При використанні в конфігурації Бібліотеки стандартних підсистем (БСП) версії 2.1.4 і вище рекомендується використовувати функцію Зумовлений Елемент загального модуля Загального Призначення або Загального Призначення Клієнт, яка повертає Невизначено для невизначених елементів, що не існують в ІБ.
Обумовлені елементи довідників 1С 8.3
У будь-якого довідника 1С (крім підлеглих) можна створювати зумовлений елемент або зумовлену групу цього довідника (якщо ієрархічний довідник). Зумовлені елементи довідника це елементи, створені розробником у конфігураторі, з якими користувач може працювати.Користувачеві вже не потрібно самостійно створювати цей елемент довідника, він вже буде створений у базі за умовчанням під час встановлення. Також розробникам дуже зручно працювати з наперед визначеними елементами в тому, що розробник до них може звертатися безпосередньо, використовуючи менеджер довідника. У цій статті ми навчимося працювати з певними елементами.
При розробці довідників, рекомендую, насамперед подумати чи будуть визначені елементи у цих довідників, і створити їх заздалегідь, перш ніж цей довідник буде впроваджено в дослідну експлуатацію.
Наприклад, ми в нашій конфігурації для цілей обліку створили довідник Валюти, оскільки ми живемо у Російській федерації, то валюта рубль завжди буде у нашій конфігурації, яка використовується на території РФ. Тому найлогічніше її зробити як визначеного елемента. Тому створимо для довідника Валюти обумовлений елемент Рубль. Для того, щоб додати певний елемент, необхідно виділити потрібний довідник, викликати контекстне меню і вибрати в цьому меню команду «Відкрити визначені дані».
Відкриється список визначених елементів (і груп, якщо ієрархічний довідник), в якому можна додавати нові елементи. Причому зауважте, при додаванні ми можемо вказати лише найменування елемента та його код, якщо у довідника є реквізити, то ці реквізити ми зможемо заповнити тільки в режимі користувача.
Звертаю увагу на ім'я зумовленого елемента. Ім'я має бути унікальне в межах цього довідника, і до нього застосовуються правила встановлення імен для об'єктів метаданих (відсутність прогалин, спецсимволів, крім підкреслення тощо).Користувач не бачить імені визначеного елемента, він працює лише з найменуванням. З ім'ям може працювати розробник, одержуючи посилання на конкретний наперед визначений елемент, використовуючи менеджер довідника.
Якщо ієрархічний довідник, можна також створити і зумовлені групи, для цього в командній панелі форми списку визначених елементів є команда «Додати групу».
Якщо ми зайдемо у форму списку довідника Країни в режимі користувача «1С: Підприємства», то виявимо, що вже є групи та елементи з точкою внизу. Так платформа позначає визначені елементи та групи.
Зауважу, що це реквізити у зумовлених елементів присутні як і звичайних, й у яких можна записувати будь-які значення.
Отримати певний елемент довідника 1С
Використовуючи менеджер довідника, можна звернутися до певного елемента. Робиться це так.
Елемент Китай = Довідники.Країни.Китай;
Звертаю Вашу увагу, що отримати посилання на певний елемент можна лише у серверному контексті. Щоб отримати посилання на зумовлений елемент у клієнтському контексті керованої форми, необхідно використовувати метод ЗумовленеЗначення, де в лапках потрібно вказати шлях до цього елемента.
Елемент Китай = ЗумовленеЗначення("Довідник. Країни. Китай");
Майте на увазі, що і за допомогою методу ЗумовленеЗначення і за допомогою прямого звернення за допомогою менеджера об'єкта ми отримаємо посилання на елемент, з яким можемо працювати як із звичайним посиланням на елемент довідника: привласнювати її якомусь реквізиту, отримувати об'єкт із цього посилання і т.д.
Створити певний елемент довідника 1С
Ми вже навчилися створювати певні елементи довідника у конфігураторі, але чи можна створити певний елемент програмно? І так, і ні.
Ми можемо з простого елементу зробити зумовлений, і навпаки, зумовлений елемент зробити простим.
Для цього у довідників є стандартний реквізит Ім'яПредвизначенихДаних.
Якщо ми отримаємо посилання на певний елемент, цей реквізит заповнений.
Якщо ми візьмемо якийсь не зумовлений елемент, цей реквізит буде порожній.
Якщо ми цьому реквізиту надамо якесь ім'я (пам'ятаючи про унікальність імен зумовлених елементів у контексті конкретного довідника), то ми програмно «створимо» зумовлений елемент, але тільки в тому випадку, якщо це ім'я вже існує в списку визначених елементів довідника, які були задані в конфігураторі 1С!
Наприклад, той самий елемент «Туніс» довідника «Країни» у нас простий.
В якійсь обробці напишемо код, в якому спробуємо зробити з цього елемента певний елемент.
&На Сервері
Процедура СтворитиНа Сервері() ЕлТуніс = Довідники.Країни.ЗнайтиПо Найменуванню("Туніс"); ОбТуніс = ЕлТуніс.ОтриматиОб'єкт(); ОбТуніс.Ім'яПредвизначенихДаних =
"Туніс"; ОбТуніс.Записати();
КінецьПроцедури
&На Клієнті
Процедура Створити(Команда) СтворитиНа Сервері();
КінецьПроцедури
Якщо ми спробуємо його виконати, то у нас виникне помилка «Предназначений елемент не існує».
Така помилка виникла тому, що ми намагаємося вказати ім'я наперед визначеного елемента, якого немає.
Якщо ж ми маємо певний елемент реквізиту Ім'яПредвизначенихДаних надамо порожній рядок, то такий елемент стане простим, якщо ж цьому реквізиту назад надамо ім'я зумовленого елемента, то простий елемент стане зумовленим.
Зробимо на обробці дві команди. Перша зніматиме зумовленість елемента довідника з ім'ям «Китай», а друга встановлюватиме.
&На Сервері
Процедура Від'єднатиНа Сервері() Елемент Китай = Довідники.Країни.Китай; ОбЕлКитай = Елемент Китай.ОтриматиОб'єкт(); ОбЕлКитай.Ім'яПредвизначенихДаних =
""; ОбЕлКитай.Записати();
КінецьПроцедури
&На Клієнті
Процедура Від'єднати(Команда) Від'єднатиНа Сервері();
КінецьПроцедури
Тепер назад встановимо.
&На Сервері
Процедура ПриєднатиСервері() ЕлКитай = Довідники.Країни.ЗнайтиПо Найменуванню("Китай"); ОбЕлКитай = ЕлКитай.ОтриматиОб'єкт(); ОбЕлКитай.Ім'яПредвизначенихДаних =
"Китай"; ОбЕлКитай.Записати();
КінецьПроцедури
&На Клієнті
Процедура Приєднати(Команда) ПриєднатиСервері();
КінецьПроцедури
Зауважте, що ім'я певного елемента може бути лише зі списку імен визначених елементів довідника.
У нас до зняття елемент "Китай" був зумовлений.
А після зняття це став найпростіший елемент.
Видалити певний елемент довідника 1С
Починаючи з платформи 1С 8.3 зумовлені елементи можна видаляти в режимі користувача.
Якщо цей елемент видалити через стандартну обробку «Видалення помічених об'єктів», він зникне з бази.
Для того, щоб користувач міг видалити (поставити позначку на видалення) зумовлений елемент, хоча б одна роль, яка є в профілі користувача має бути встановлене відповідне право.
Що робити, якщо ми помилилися і хочемо знову повернути певний елемент? Є кілька способів. Але найпростіший це створити новий елемент довідника в режимі користувача і привласнити йому ім'я віддаленого зумовленого елемента, як ми це вже робили.
Інші статті на тему конфігурування:
Докладніше та ґрунтовніше робота з довідниками, документами та іншими об'єктами метаданих дається в моїй книзі:
Вивчайте програмування в 1С на місці з моєї книги «Програмувати в 1С за 11 кроків»
- Книга написана зрозумілою та простою мовою – для новачка.
- Книга надсилається на електронну пошту у форматі PDF. Можна відкрити будь-який пристрій!
- Навчіться розуміти архітектуру 1С;
- Станете писати код мовою 1С;
- Опануйте основні прийоми програмування;
- Закріпіть отримані знання з допомогою задачника;
Про те, як розробляти під керованим додатком 1С, читайте у книзі Книга «Основи розробки в 1С: Таксі»
Відмінний посібник з розробки в керованому додатку 1С, як для розробників-початківців, так і для досвідчених програмістів.
- Дуже доступна та зрозуміла мова викладу
- Книга надсилається на електронну пошту у форматі PDF. Можна відкрити будь-який пристрій!
- Зрозумієте ідеологію керованого додатка 1С
- Дізнаєтеся, як розробляти керовану програму;
- Навчіться розробляти керовані форми 1С;
- Зможете працювати з основними та потрібними елементами керованих форм
- Програмування під керованим додатком стане зрозумілим
Промо-код на знижку в 15% 48PVXHeYu
Вступайте до моїх груп:
3 Replies to “Зумовлені елементи довідників 1С 8.3”
У будь-якого довідника 1С можна створювати зумовлений елемент або зумовлену групу — якщо довідник має власника, то створити зумовлений елемент не можна.
Автор. Ви морочите голову. Ви пишете, чи можна створити певний програмно. Відповідаєте і так і ні. Потім граєте з реквізитом Зумовлений встановлюючи його в значення брехня і назад в істину. Де програмне створення певного елемента? Якщо ні, то так і пишіть ЦЕ НЕ МОЖЛИВО. І не треба буде розгадувати ваш хитромудрий ребус протягом півтори години. Ось за такі статті я не люблю 1С.