|
Методична рекомендація (корисна порада)
1. З погляду можливостей налаштування функціональності бібліотеки для роботи в конкретній конфігурації-споживачі всі об'єкти бібліотеки умовно поділяються на три категорії:
- Неперевизначувані об'єкти – «готові» об'єкти, які можна брати й використовувати в конфігурації-споживачі «як є». Їх не слід змінювати в конфігурації-споживачі, щоб вони були гарантовано однаковими в усіх конфігураціях, що ґрунтуються на цій бібліотеці. Ба більше, такі об'єкти обов'язково мають бути присутніми в конфігураціях, що використовують бібліотеку. Приклади: довідник Користувачі.
- Перевизначувані об'єкти – «змінювані» об'єкти для налаштування бібліотеки під конкретну конфігурацію. Вони можуть або повинні бути змінені в конфігурації-споживачі. Можуть постачатися з базовою реалізацією. За допомогою таких об'єктів розв'язуються завдання зміни поведінки бібліотечної функціональності, її параметризації специфікою конфігурації-споживача, а також підключення бібліотечної функціональності до об'єктів конфігурації-споживача.
- Визначники типів – об'єкти-«класифікатори», які не мають базової реалізації. Призначені для формування єдиного простору імен у конфігураціях, а реалізація при цьому може як завгодно сильно відрізнятися в конфігураціях-споживачах. Наприклад: довідники-класифікатори, у яких визначено лише «найменування»; сутність «організація» має всюди бути представлена довідником з іменем Організації тощо.
2. Для об'єктів цих категорій рекомендується встановлювати такі правила постачання :
- Неперевизначувані об'єкти – «зміни не рекомендуються»;
- Перевизначувані об'єкти та визначники типів – «зміни дозволені».
Ці рекомендації продиктовані такими міркуваннями:
- Неперевизначувані об'єкти – це зона відповідальності розробників бібліотеки, тому вони не повинні розроблятися «на місцях» у конфігураціях-споживачах. Але якщо потреба у змінах є терміновою (наприклад, виправлення критичної помилки) або продиктована іншими особливими міркуваннями, то допускається вносити зміни до неперевизначуваних бібліотечних об'єктів безпосередньо в конфігураціях-споживачах. При цьому потрібно мати на увазі, що ці зміни можуть бути втрачені під час наступного оновлення версії бібліотеки в конфігурації-споживачі, якщо не вжити спеціальних заходів (повідомити розробникам бібліотеки про необхідність внесення змін або задокументувати цей відступ від загальної інструкції з оновлення бібліотеки).
- Перевизначувані об'єкти та визначники типів повинні або можуть бути змінені в конфігурації-споживачі, виходячи з їх призначення.
3. Щоб спростити налаштування бібліотеки та знизити трудомісткість подальших оновлень версії бібліотеки в конфігурації-споживачі, слід мінімізувати кількість перевизначуваних об'єктів за допомогою таких методик:
- Налаштування складу типів перевизначуваних реквізитів (властивостей) тих чи інших об'єктів бібліотеки – для підключення бібліотечної функціональності до об'єктів конфігурації-споживача.
Наприклад: можна підключити бібліотечну функціональність до конкретних об'єктів конфігурації за допомогою розширення складу типів загальної команди, виміру складеного типу в регістрі відомостей тощо.
- Додавання визначених елементів – для параметризації бібліотечної функціональності специфікою конфігурації-споживача.
Наприклад: для бібліотечної підсистеми ведення й обробки контактної інформації за допомогою визначених елементів бібліотечного довідника ВидиКонтактнойИнформации можна вказати, які види контактної інформації (телефон, адреса, електронна адреса тощо) мають бути передбачені для об'єктів конфігурації-споживача.
- Перевизначувані загальні модулі – для зміни поведінки бібліотечної функціональності в конкретній конфігурації-споживачі
- за допомогою перевизначення тих чи інших «обробників подій», що надаються бібліотекою; наприклад:
ПриПодготовкеМакетаОписанияОбновлений() ПриЗаписиСпискаБизнесПроцессов()
- а також для того, щоб передати ту чи іншу інформацію з конфігурації-споживача до бібліотеки. Наприклад:
ЭтоБазоваяВерсияКонфигурации() ОбработчикиОбновления()
3.1. Перевизначувані загальні модулі слід називати з постфіксом Переопределяемый.
Див. також: правила створення загальних модулів
3.2. Перевизначувані загальні модулі повинні містити лише експортні процедури та функції, які викликаються з коду самої бібліотеки. Іншими словами, не слід допускати викликів процедур і функцій перевизначуваних модулів безпосередньо з коду конфігурації-споживача.
Таке обмеження зумовлене міркуванням підвищення стійкості коду конфігурації, який викликає бібліотечні процедури та функції, що становлять програмний інтерфейс бібліотеки. До програмного інтерфейсу бібліотеки слід відносити лише експортні процедури та функції неперевизначуваних загальних модулів.
Наприклад, у бібліотеці є модулі ПапкиФайлов і ПапкиФайловПереопределяемый. Для використання в конфігураціях-споживачах у модулі ПапкиФайлов реалізується експортна функція:
Функция ПапкаФайлов(ВладелецФайловСсылка) Экспорт
СтандартнаяОбработка = Истина;
Результат = Неопределено;
ПапкиФайловПереопределяемый.ПолучитьПапкуФайлов(ВладелецФайловСсылка, Результат, СтандартнаяОбработка);
Если СтандартнаяОбработка Тогда
// реалізація за замовчуванням
Результат = ...
КонецЕсли;
Возврат Результат;
КонецФункции
а в модулі ПапкиФайловПереопределяемый :
// Викликається з бібліотеки за потреби отримати папку файлів для зазначеного власника.
//
// Параметри:
// ВладелецФайловСсылка – власник файлів, для якого потрібно повернути папку.
// ПапкаФайлов – у цей параметр потрібно записати результат.
// СтандартнаяОбработка – за замовчуванням, Істина. У цьому разі папку буде отримано способом за замовчуванням.
// Якщо значення параметра встановити в Хибність, то в цій процедурі можна реалізувати свій спосіб,
// яким у конфігурації отримують папки файлів.
//
Процедура ПолучитьПапкуФайлов(ВладелецФайловСсылка, ПапкаФайлов, СтандартнаяОбработка) Экспорт
КонецПроцедуры
При цьому всі виклики з конфігурації-споживача мають здійснюватися лише до бібліотечного модуля ПапкиФайлов. Звернення до ПапкиФайловПереопределяемый дозволяється лише з бібліотечного модуля ПапкиФайлов.
3.3. При цьому в перевизначуваному модулі не повинно бути жодних інших неекспортних процедур/функцій і жодної реалізації в його експортних процедурах і функціях. Базову реалізацію перевизначуваних процедур і функцій слід розміщувати в неперевизначуваному коді.
Наприклад, неправильно постачати перевизначуваний модуль МояБиблиотекаПереопределяемый з будь-якою реалізацією:
Функция НастройкаПараметровРаботы() Экспорт
ПараметрыРаботы = Новый Структура;
// якщо налаштування за замовчуванням не підходять, змініть їх.
ПараметрыРаботы.Вставить("ПоказыватьЕдинственныйРаздел", Ложь);
ПараметрыРаботы.Вставить("ЗадаватьДатуДляПрочихРазделов", Ложь);
ПараметрыРаботы.Вставить("ИспользоватьВнешнихПользователей", Ложь);
Возврат ПараметрыРаботы;
КонецФункции
правильно:
// Дає змогу налаштувати роботу підсистеми.
//
// Параметри:
// ПараметрыРаботы - Структура, з полями:
// ПоказыватьЕдинственныйРаздел - Булево (за замовчуванням Хибність),
// ЗадаватьДатуДляПрочихРазделов - Булево (за замовчуванням Хибність),
// ИспользоватьВнешнихПользователей - Булево (за замовчуванням Хибність).
Процедура НастройкаИнтерфейса(ПараметрыРаботы) Экспорт
КонецПроцедуры
а встановлення значень за замовчуванням перенести до неперевизначуваного загального модуля бібліотеки:
Функция НастройкаПараметровРаботы()
ПараметрыРаботы = Новый Структура;
// налаштування за замовчуванням
ПараметрыРаботы.Вставить("ПоказыватьЕдинственныйРаздел", Ложь);
ПараметрыРаботы.Вставить("ЗадаватьДатуДляПрочихРазделов", Ложь);
ПараметрыРаботы.Вставить("ИспользоватьВнешнихПользователей", Ложь);
// а тепер запитаємо конфігурацію-споживача на випадок,
// якщо ці значення за замовчуванням не влаштовують
МояБиблиотекаПереопределяемый.НастройкаПараметровРаботы(ПараметрыРаботы);
Возврат ПараметрыРаботы;
КонецФункции
3.4. Під час оновлення версії бібліотеки в конфігурації-споживачі особливої уваги потребують модулі кореневого об'єкта конфігурації та перевизначувані загальні модулі, оскільки автоматичне оновлення таких «вузьких місць» конфігурації-споживача неможливе. Для налаштування в конфігурації перевизначуваних загальних модулів рекомендується дотримуватися загального підходу:
- Під час першого налаштування перевизначуваного загального модуля слід ознайомитися з документацією до його експортних процедур і функцій, наведеною в коментарях до них. І за потреби вписати реалізацію в експортні процедури та функції модуля.
- Під час кожного оновлення перевизначуваного загального модуля потрібно перенести нові експортні процедури й функції, видалити застарілі та переконатися, що коментарі, кількість і назви параметрів у всіх функцій збігаються з їх бібліотечними еквівалентами. За потреби вписати реалізацію в нові експортні процедури та функції модуля, а також актуалізувати реалізацію вже наявних функцій, якщо в новій версії бібліотеки було змінено їх призначення або склад параметрів.
Див. також
- Перевизначення загальних модулів в умовах ієрархії бібліотек
|