Довідковий матеріал

Розробка планів обміну з відборами

1.1. Як правило, для синхронізації даних між різними конфігураціями та для організації розподіленої інформаційної бази (РІБ) використовується технологія планів обміну. У цьому випадку часто виникає завдання організації обміну не всіма даними інформаційної бази, а лише частиною даних. Наприклад, дані можуть бути відібрані для надсилання до інших вузлів у розрізі організацій, складів, підрозділів тощо.

Схема обміну даними між вузлами: із центрального сховища вибірково спрямовуються пов’язані набори даних у кілька незалежних напрямів.

Рекомендація (корисна порада)

1.1. Як правило, для синхронізації даних між різними конфігураціями та для організації розподіленої інформаційної бази (РІБ) використовується технологія планів обміну. У цьому випадку часто виникає завдання організації обміну не всіма даними інформаційної бази, а лише частиною даних. Наприклад, дані можуть бути відібрані для надсилання до інших вузлів у розрізі організацій, складів, підрозділів тощо.

Для визначення вузлів-одержувачів для надсилання даних слід використовувати події ПередЗаписом та ПередВидаленням об'єктів інформаційної бази, у яких передбачити логіку реєстрації змін даних на вузлах планів обміну (далі – логіка реєстрації).

Під час використання в конфігурації підсистеми «Обмін даними» Бібліотеки стандартних підсистем логіка реєстрації може бути задана декларативно в правилах реєстрації об'єктів (ПРО), які розробляються в конфігурації «Конвертація даних». Докладніше див. документацію до підсистеми «Обмін даними».

1.2. Крім того, під час проєктування логіки реєстрації необхідно враховувати такі особливості:

  • дані з повідомлення обміну завантажуються в довільному порядку, тому на момент виконання логіки реєстрації потрібні їй дані можуть ще не бути завантажені;
  • логіка реєстрації зокрема виконується в контексті завантаження даних у транзакції запису об'єкта, при цьому ознака ОбменДанными.Загрузка ігнорується. Тому будь-які помилки логіки реєстрації призведуть до аварійного завершення завантаження даних із повідомлення обміну;
  • в обміні в розподіленій інформаційній базі (РІБ) можуть брати участь не всі дані, наприклад, рухи в регістрах мігрують між вузлами, а реєстратори (документи) – ні;
  • звернення до полів пов'язаних таблиць "через крапку" призводить до неявного з'єднання з додатковими таблицями, що знижує продуктивність обміну.

2. З урахуванням перелічених особливостей рекомендується дотримуватися таких правил.

2.1. Забезпечити самодостатність даних, що беруть участь в обміні. Таблиці даних (довідники, документи, регістри тощо), що беруть участь в обміні, повинні містити всі необхідні дані для виконання логіки реєстрації. Логіка реєстрації не повинна звертатися до полів пов'язаних таблиць, вона повинна оперувати лише даними основної таблиці, реєстрацію змін даних якої необхідно виконати.

Приклад:

  • Дані реєструються в розрізі організацій.
  • В обміні беруть участь дві таблиці: документ і регістр накопичення, у якому містяться рухи документа. І документ, і регістр накопичення є самодостатніми, оскільки містять посилання на організацію.
  • Під час запису даних користувачем або під час завантаження даних логіка реєстрації спрацьовує незалежно для документа та для набору записів регістру.

Див. також: Самодостатність регістрів, Розіменування посилальних полів складеного типу в мові запитів

Якщо вимогу самодостатності даних не можна підтримати з інших міркувань, то потрібно розглянути такі варіанти.

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

Приклад:

  • Дані реєструються в розрізі організацій.
  • В обміні бере участь лише одна таблиця – документи надходження товарів.
  • Є регістр відомостей, який використовується для визначення прав доступу користувачів до документів надходження товарів. Цей регістр не є самодостатнім, оскільки не містить посилання на організацію, тому він не бере участі в обміні даними.
  • Дані регістру обчислюються незалежно в кожному вузлі розподіленої інформаційної бази під час завантаження документів надходження товарів.

2.3. Реєструвати зміни пов'язаних даних. Якщо в обміні беруть участь кілька логічно взаємопов'язаних таблиць даних, то логіка реєстрації повинна реєструвати для вивантаження дані всіх взаємопов'язаних таблиць незалежно від того, для якої таблиці даних виконується логіка реєстрації. При цьому логіка реєстрації не повинна аварійно перериватися у разі, коли необхідні для логіки реєстрації дані відсутні.

Приклад:

  • Дані реєструються в розрізі організацій.
  • В обміні беруть участь дві таблиці: довідник "Основні засоби" і регістр відомостей "Основні засоби організацій". У регістрі відомостей зберігається зв'язок основного засобу та організації, якій належить основний засіб.
  • Під час запису елемента довідника та під час запису набору записів регістру для вивантаження реєструються як елемент довідника, так і набір записів регістру.
  • Якщо під час завантаження даних із повідомлення обміну спочатку виконується завантаження елемента довідника, то він записується до бази даних, але не реєструється для вивантаження на інші вузли планів обміну, оскільки логіка реєстрації перевіряє, що набір записів регістру ще не завантажений.
  • Під час подальшого завантаження набору записів регістру виконується реєстрація змін як самого набору записів, так і відповідного елемента довідника.
Записатися телефоном