Конфігурація розподіленої ІБ не відповідає очікуваної. Для профілактики проблем, визивающіех цю помилку, рекомендується не робити динамічне оновлення (як мінімум кілька разів поспіль - до завантаження змін в філії), а також бажано в налаштуваннях
Привіт, шановні читачі нашого блогу сайт! Сьогодні поговоримо про
виправленні двох помилок, Які можуть виникнути при обміні в в розподіленій інформаційній базі (РИБ). Такі помилки можуть виникнути, якщо ви змінили конфігурацію вашої бази і намагаєтеся передати ці зміни з центральної бази в периферійну. Наприклад, способом, який був описаний. Давайте приступимо!
Ось такі повідомлення можуть з'явитися при спроби зробити обмін за допомогою РИБ:
«Дані приймаються від вузла, для якого
зареєстровані зміни конфігурації.
Необхідно зробити перенесення змін
конфігурації в вузол. »
«Конфігурація вузла розподіленої ІБ
не відповідає очікуваної! »
Давайте розглянемо кроки, які допоможуть виправити ситуацію. Перед тим як почнемо, зробимо наших інформаційних баз !!!
- Візьмемо файл конфігурації з оновленням, відкриємо центральну базу в Конфігураторі і завантажимо його (Конфігурація-Завантажити конфігурацію з файлу ...). Збережемо ІБ (F7).
- Зайдемо в і зробимо вивантаження в файл для периферійної бази:
- Виділимо план обміну в списку, потім правою кнопкою викликати контекстне меню і викинь пункт «Записати зміни ...».
- Тепер займемося периферійної ІБ. Відкриємо її в монопольному режимі, щоб нікого з користувачів не було, а також закриємо Конфігуратор. Тепер необхідно запам'ятати вузол, який є головним для поточної бази. Відкриємо Операції-Плани обміну-Вибрати ваш план обміну (наприклад, «За складом»). У списку планів обміну головним вузлом є елемент з жовтою піктограмою. Ця інформація стане в нагоді нам у сьомому пункті. Відкриємо обробку і натиснемо кнопку «Скасувати призначення головного вузла».
- Тепер відкриємо периферійну ІБ в Конфігураторі і завантажимо той же файл конфігурації, який ми завантажували на першому кроці в центральній базі (Конфігурація-Завантажити конфігурацію з файлу ...). Збережемо ІБ (F7).
- Змінимо налаштування підтримки (Конфігурація-Підтримка-Налаштування підтримки ...). У діалозі виділимо в таблиці осередок на перетині першого рядка і другий колонки. Потім подвійним натисканням викличемо діалог «Налаштування правил підтримки». У ньому поставимо прапор «Встановити для підлеглих об'єктів» і натиснемо кнопку «ОК». Закриємо діалог настройки підтримки, натиснувши кнопку «Закрити». Зберегти ІБ (F7). Закриємо Конфігуратор.
- Тепер знову відкриємо периферійну ІБ в монопольному режимі 1С: Підприємство, щоб нікого з користувачів не було, а також закриємо Конфігуратор. Відкриємо обробку УстановкаГлавногоУзлаБД.epf і виберемо план обміну, який ми хочемо встановити головним вузлом (в четвертому пункті ми запам'ятовували цей вузол). Потім натиснемо кнопку «Встановити головний вузол». Після цього поточна ІБ знову стане периферійної.
- Тепер в поточній ІБ (периферійної) відкриємо плани обміну і завантажимо файл з обміном з Центральної бази, який ми отримали на третьому кроці:
- Операції-Плани обміну-Вибрати наш план обміну (наприклад, «За складом»).
- Якщо все пройшло успішно, то зробимо вивантаження обміну для Центральної бази в поточній ІБ (периферійної):
- Операції-Плани обміну-Вибрати наш план обміну (наприклад, «За складом»).
- Виділимо план обміну в списку, потім правою кнопкою викликати контекстне меню і виберемо пункт «Записати зміни ...».
- У діалозі вкажемо шлях і ім'я файлу обміну. Натиснемо кнопку «ОК».
- Тепер спробуємо завантажити цей файл в Центральній базі, відкриємо її в режимі 1С: Підприємство:
- Операції-Плани обміну-Вибрати наш план обміну (наприклад, «За складом»).
- Виділимо план обміну в списку-Правою кнопкою викличемо контекстне меню і вибрати пункт «Прочитати зміни ...»
- У діалозі виберемо файл обміну. Натиснемо кнопку «ОК».
Щоб уникнути проблем з робочими копіями зробіть спочатку
Розподілена інформаційна база (РИБ) досить часто використовується для організації роботи філій і підрозділів, дозволяючи оперативно обмінюватися інформацією, зберігаючи потрібний ступінь автономності. Незважаючи на те що дана технологія досить надійна, час від часу ламається і вона. Сьогодні ми розглянемо одну з досить поширених помилок: Розповімо про причини її виникнення та методи боротьби з нею.
Почнемо, як завжди, з початку. Після того, як ви створили РИБ всі зміни в конфігурацію інформаційної бази можна вносити тільки в головному вузлі. Згодом, при наступному обміні, всі зміни будуть передані в підлеглі вузли і автоматично застосовані там. Але гладко було на папері ...
На практиці іноді трапляється так, що між сеансами обміну, особливо якщо на периферії погано з каналом, конфігурація головного вузла встигає змінитися двічі. Наприклад, внесли зміни, вивантажили, периферійна база зміни отримала, але ще не застосувала їх, що може зайняти деякий час, і підтвердження ще не прислала. Якщо в цей проміжок внести зміни ще раз і знову вивантажити обмін, то вийде, що центр очікує побачити в периферійному вузлі конфігурацію №1 і спробує оновити її на конфігурацію №3, а за фактом зіткнеться там з конфігурацією №2. Іноді подібна ситуація виникає при динамічному оновленні центральної бази. В результаті обмін стане неможливим, і ви отримаєте повідомлення про те, що Конфігурація вузла розподіленої ІБ не відповідає очікуваної!
Загалом мораль цієї історії проста - не поводьтеся активну доопрацювання робочою бази, а якщо ведете, то завершуйте всі сеанси обміну до внесення наступних змін. Але як бути, якщо така неприємність все-таки відбулася?
Рішення "в лоб" - створити новий образ підлеглого вузла, однак на практиці він зазвичай непридатний. Як правило виникнення серйозної помилки при обміні фіксується не відразу, а через деякий час після того, як перестали надходити оперативні дані з периферійних баз. В залежності від розкладу обміну між моментом виникнення проблеми та її виявленням може пройти цілий робочий день, а то і більше.
Тут варто кинути камінь в город розробників, які видають як помилку і точно також підсвічують червоним ситуацію Номер повідомлення менше або дорівнює номеру раніше прийнятого повідомлення, Яка в загальному-то є цілком нормальною. В результаті у користувачів сприйняття помилок притупляється, і вони просто перестають читати виводяться повідомлення, вважаючи, що все добре і просто інша сторона ще не зробила обмін у себе.
Але повернемося до нашої помилку. Рішення досить просте і лежить на поверхні: привести конфігурацію периферійної бази до очікуваної, тобто привести її у відповідність з конфігурацією центрального вузла. Але на практиці зробити це не так просто. Якщо ми відкриємо периферійну базу в конфігураторі, то побачимо, що зміни заблоковані засобами управління РИБ.
Щоб змінити конфігурацію підлеглого вузла потрібно тимчасово відключити його від центральної бази. Для цих цілей можна скористатися однією з обробок, яких достатньо представлено в мережі, або відключити ІБ від центрального вузла за допомогою параметра запуску Конфігуратора/ ResetMasterNode.
Відкрийте командний рядок і введіть (з урахуванням версії платформи і реального шляху установки):
"C: \\ Program Files (x86) \\ 1cv8 \\ 8.3.6.2100 \\ bin \\ 1cv8.exe" config / ResetMasterNodeПісля виконання даної команди з'явиться звичайне вікно стартера, виберіть там потрібну базу і натисніть кнопку Коніфгуратор.
Запуску ІБ при цьому не відбудеться, Тобто може здатися, що нічого не сталося, але відкривши базу в Конфігураторі повторно, можна переконатися, що вона відключена від головного вузла і доступна для внесення змін.
Увага! На платформах 8.3.7 - 8.3.9 виконання даної команди призводить до аварійного завершення роботи. Помилку виправлено в платформі 8.3.10.
Якщо ви не хочете возитися з командним рядком, То можна скористатися однією з обробок, нижче представлена \u200b\u200bта, яку використовуємо ми, вона була знайдена на просторах мережі, і ми внесли в неї лише косметичні правки. Зверніть увагу, обробка підходить лише для звичайного застосування, для конфігурацій на керованому додатку використовуйте ключ запуску Конфігуратора.
Робота з нею гранично проста, запускаємо її в режимі 1С: Підприємства, через Файл - Відкрити, Потім просто натискаємо потрібну кнопку, в нашому випадку Відключити головний вузол.
Тепер нам потрібно актуальна конфігурація з центрального вузла. Для цього відкриємо центральну ІБ в Конфігураторі і виконаємо Конфігурація - Зберегти конфігурацію в файл. Отриманий файл з розширенням cf буде потрібно передати в периферійний вузол.
Потім в периферійному вузлі запускаємо ІБ (попередньо відключивши її від головного вузла) в Конфігураторі і знімаємо з підтримки. Для цього вибираємо: Конфігурація - Підтримка - Налаштування підтримки.
У вікні, спочатку включаємо можливості зміни.
А потім знімаємо конфігурацію з підтримки.
Тепер можна завантажувати конфігурацію з файлу, для цього виберіть Конфігурація - Завантажити конфігурацію з файлу і вкажіть залишають поза передачею з центрального вузла cf-файл. Після чого ви отримаєте попередження про те, що поточна конфігурація не порожня. Звертаємо вашу увагу, що проробляються нами маніпуляції потенційно небезпечні і можуть призвести до незворотного пошкодження ІБ, тому перед тим, як продовжувати переконайтеся, що у вас є актуальна резервна копія.
- Файл з повідомленням вже завантажувався в базу-приймач. Необхідно вивантажити його з бази-джерела заново.
Помилка «Помилка при копіюванні файлу c FTP ресурсу ... Помилка роботи з Інтернет: Timeout was reached»
- З сайту, через який проходить обмін, не виходить скопіювати потрібний файл. Це може бути пов'язано з повільною роботою вашого інтернету або з проблемами самого сайту.
- Потрібно спробувати повторити обмін через 15-30 хвилин.
Помилка «Редагування даних цього періоду заборонено. Зміни не можуть бути записані ... »
- Офлайн дані містять документи з закритого періоду.
- Потрібно провести обмін під користувачам, які мають право на зміну документів в цьому періоді.
Помилка «Необхідно виконати оновлення конфігурації бази даних. Оновлення може бути виконано в режимі конфігуратора »
Причина: Програмісти поміняли конфігурацію в центрі. Рішення: Оновити змінену конфігурацію в периферійній базі. Для цього:- Зайти в конфігуратор.
- Виконати пункт меню «Конфігуратор / Оновити конфігурацію бази даних».
- Якщо видається питання з відповідями тільки «Повтор», «Скасування», «Оновити динамічно», натиснути кнопку «Оновити динамічно».
- Якщо видається питання з відповідями тільки «Повтор» і «Скасувати».
- всім користувачам вийти з 1С.
- натиснути кнопку «Повтор».
- На питання, що залишилися відповісти ствердно: «Так», «Прийняти», «ОК».
- Закрити конфігуратор.
- Повторити завантаження з центру.
Помилка «Конфігурація не відповідає очікуваної», «Спроба прийому змін від невідомої конфігурації»
- Помилка в базі даних.
- Необхідно звернутися до фахівців.
Для початку привожу список використовуваних мною скорочень:
- РИБ - розподілена інформаційна база
- ЦБ - центральна база, кореневий вузол РИБ
- УБ - дистанційна база, БД віддаленого вузла РИБ
за власним досвід можу сказати, що стикався з двома причинами виникнення помилки:
- під час прийому файлу повідомлення в УБ "впала" база, в зв'язку з чим, мабуть, і сталася разсінхронізація між конф. ЦБ і УБ;
- під MSSQL клієнт завантажив копію робочої бази і не вимкнув в копії регл. завдання автообміну, в результаті частина повідомлень в віддалені вузли формувалася з робочою БД, а частина з копії, що і призвело рассинхронизации конфігурацій
Є також думка, що до цієї помилку призводить використання механізму динамічного оновлення бази. Тут є сумніви, тому що з одного боку динамічне оновлення ніколи не зачіпає структури БД, а механізми РИБ все-таки працюють саме зі структурою БД, а не з прикладної її частиною, проте в РИБ використовується механізм формування цифрового підпису версії конфігурації (надалі буду називати її для скорочення хешем), і при зміні прикладної частини хеш природно зобов'язаний перерахувати. Не буду ні заперечувати цього, ні стверджувати, тому що якщо і стикався з цією ситуацією, то явних доказів цього не знайшов.
Для виправлення використовую 2 методики, в залежності від ситуації.
ПЕРША МЕТОДИКА
Перша (найпоширеніша) неодноразово згадується і в партнерській конференції, і на інших інтернет-ресурсах пов'язаних з 1С. Застосовується в більшості випадків, коли незважаючи на повідомлення про розбіжності конфігурацій, при порівнянні вручну видається, що вони ідентичні.
Послідовність дій:
- вивантажуємо з ЦБ cf-файл;
- одв'язуємо УБ від РИБ (метод УстановітьГлавнийУзел, готову обробку можна знайти в додатку або в інших публікаціях);
- замінюємо конф. УБ на розвантажений у першому кроці cf-файл, для цього користуємося меню "Завантажити конфігурацію з файлу" (а не порівнянням-об'єднанням !!!);
- відновлюючи ознака РИБ для УБ.
У більшості випадків цих дій більш ніж достатньо, що відновити обмін, але не завжди ...
ДРУГА МЕТОДИКА
Застосовується в разі, якщо перша методика не спрацювала, а вивантажити заново вузол не представляється можливим.
Передісторія: у клієнта налаштовували каскадну РИБ і помилка виникла в першому рівні каскаду (другий рівень весь цей час працював бездоганно). Розробка конфігурації велася спільно з IT-службою клієнта і з моменту виникнення помилки конфігурація ЦБ встигла кілька разів помінятися. Варіант з відкотом змін не розглядався навіть у принципі, тому що втрата частини даних і зупинка роботи кількох підрозділів були абсолютно неприйнятні. Перший варіант виправлення помилки будь-яких відчутних результатів не дав. У зв'язку зі ніж довелося шукати інші шляхи вирішення.
Прийшла думка спробувати підмінити хеші файлів конфігурацій безпосередньо в XML-файлах обміну. Опис структури файла обміну з книги "Професійна розробка в системі 1С: Підприємство 8" дало слабке уявлення про формування цифрових підписів конфігурацій і змін в них, але визначило напрямок пошуку: значення Digest1 і Digest2. Все інше з'ясовував чисто емпіричним шляхом (чи то пак методом проб і помилок), але закономірність встановити таки вийшло.
Тестові експерименти пройшли вдало. На робочих базах теж все пройшло благополучно.
Отже, послідовність дій:
- виконуємо дії 1 - 4 першої методики;
- вивантажуємо з УБ файл обміну, але не завантажуємо його в ЦБ;
- вивантажуємо з ЦБ файл обміну, але не завантажуємо його в УБ;
- в файлі обміну з ЦБ замінюємо блок, що містить інформацію про зміни конфігурації і хеші (Digest1 і Digest2), на блок хеш з файлу УБ (приклад див. нижче)
- виробляємо завантаження файлу з 4-го пункту в УБ;
- обов'язково Перезаписуємо файл обміну з УБ (2-й пункт)! цей файл не повинен бути завантажений при обміні в ЦБ!
- для перевірки робимо кілька послідовних обмінів.
Якщо при обміні використовується стиснення даних, то або відключаємо стиснення, або спочатку розпаковуємо файл, змінюємо, потім запаковуємо назад і відправляємо.
Блок файлу обміну з ЦБ
потрібно замінити на блок файлу обміну з УБ (зверніть увагу Digest1 у файлу з УБ завжди дорівнює "00000000000000000000000000000000" !!!)
Перераховані дії необхідно виконувати з граничною обережністю, некоректна послідовність чревата повною непрацездатністю РИБ. Тому перед цими діям створення резервних копій ОБОВ'ЯЗКОВО!
В іншому можу тільки побажати удачі!