Варіанти рішення - Порушена цілісність структури конфігурації - для SQL або в очікуванні релізу

При виході останнього релізу платформи нарешті полагодили динамічне оновлення. Тим хто не встиг оновитися присвячується.

Проблема: У клієнт-серверному варіанті інформаційної бази при збереженні конфігурації інформаційної бази, в якій раніше виконувалося динамічне оновлення, а також при наступному запуску Конфігуратора або Підприємства діагностується помилка

Порушено цілісність структури конфігурації

і відбувається аварійне завершення роботи програми. 1С пропонувала спосіб обходу: Не використовувати динамічне оновлення.

А що робити тим, хто спіймав помилку, наприклад, наприкінці робочого дня. відновлювати вчорашній бекап? або приступити до танців із бубном.

Трохи теорії коніфігурація бази даних зберігається в таблиці Config, відмінності бази, що редагується в таблиці ConfigSave. Відповідність об'єктів метаданих можна провести по колонці FileName, у колонці BinaryData зберігається запаковані дані - опис метаданих. Якщо таблиця заповнена, то складається мінімум з 3х елементів c значеннями в колонці FileName. "version" - версія платформи "versions" тут у запакованому вигляді перераховані всі метадані у вигляді де N - кількість об'єктів метаданих описаних у файлі "versions", "filenameN" - ім'я файлу, uidN - унікальний ID - при зміні об'єкта метаданих генерується новий.

Зазвичай за такої помилки дані не зруйновані, а зруйнована лише конфігурація.

Конфігурація може бути зруйнована по-різному в основному це проблема "versions", також часто проблема зі звітами побудованими на основі компонування даних.

базу можна спробувати відновити простою заміною таблиці Config на архівну чи типовуна основі якої базується конфігурація.

Перед усіма діями робимо бекап засобами SQL бази даних.

І починаємо танці із бумном.

перевіряємо наявність записів у таблиці ConfigSave

SELECT * FROM ConfigSave якщо що то потрібно почистити

Delete FROM ConfigSave

якщо були записи, то можна спробувати зайти в конфігуратор.

можна спробувати руками зібрати таблицю за рекомендаціями

у разі зберігання бази в MS SQL можна спробувати відновити конфігурації за допомогою EI.

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

Поле відновлення бази до можливості запуску в режимі конфігуратора починаються танці з бубном по працездатності в режимі підприємства, наприклад, база може запрацювати тільки в керованому додатку. Тут може допомогти реструктуризація, створення нового інтерфесу та інші танці з бубном.

приклад помилки коли база відкривається в режимі конфігуратора, але при відкритті в режимі підприємства видає помилка типу "тип bf3eefc5-26ac-4bb2-bec0-33a82e49a0c5 не знайдений"

варіант лікування створити для користувача новий інтерфес.

створення таблиці conf - копії зруйнованої config

CREATE TABLE "DB2ADMIN".conf ( FILENAME VARGRAPHIC(128) NOT NULL, FILENAMEU VARGRAPHIC(128) NOT NULL GENERATED ALWAYS AS (UCASE(FILENAME)), CREATION TIMESTAMP NOT NULL MODIFIED TIMESTAMP NOT NULL, ATTRIBUTES SMALLINT NOT NULL, DATASIZE INTEGER NOT NULL, BINARYDATA BLOB(1073741823) NOT NULL LOGGED NOT COMPACT ) IN "V81C "V81C_INDEXSPACE" LONG IN "V81C_LOBSPACE";

ALTER TABLE "DB2ADMIN".conf DATA CAPTURE NONE LOCKSIZE ROW APPEND OFF NOT VOLATILE;

RUNSTATS ON TABLE "DB2ADMIN".conf ALLOW WRITE ACCESS;

SET SCHEMA = DB2ADMIN;

Перенесення даних таблиці conf - копії зруйнованої config

Insert INTO DB2ADMIN.conf(FILENAME, CREATION, MODIFIED, ATTRIBUTES, DATASIZE, BINARYDATA) Select FILENAME, CREATION, MODIFIED, ATTRIBUTES, DATASIZE, BINARYDATA FROM DB2ADMIN.config

наявність такої таблички не завадить працездатності 1с, зате дозволить замінювати окремі

записи у таблиці конфігурації

PS якщо комусь цікаво є обробка яка може записати правильний файл version для довільної конфігурації у файл cf (правда тільки у файловому режимі але його можна завантажити в базу cql)