При выходе последнего релиза платформы наконец починили динамическое обновление.
Тем кто не успел обновиться посвящается.
Проблема:
В клиент-серверном варианте информационной базы при сохранении конфигурации информационной базы, в которой до этого выполнялось динамическое обновление, а также при последующем запуске Конфигуратора или Предприятия диагностируется ошибка
Нарушена целостность структуры конфигурации
и происходит аварийное завершение работы программы.
1С предлагала способ обхода:
Не использовать динамическое обновление.
А что делать тем кто поймал ошибку например в конце рабочего дня. востанавливать вчерашний бэкап ? или приступить к танцам с бубном.
Немного теории конифигурация базы данных хранится в таблице Config, отличия редактируемой базы в таблице ConfigSave. Соответтсвие объектов метаданных можно провести по колонке FileName, в колонке BinaryData хранится запакованные данные - описание метаданных. Если таблица заполнена то но состоит минимум из 3х элементов c значениями в колонке FileName. "version" - версия платформы "versions" здесь в запаковонном виде перечисленны все метаданные в виде {1,N,"filename1",uid1, ... "filenameN",uidN} где N - количество объектов метаданных описанных в файле "versions", "filenameN" - имя файла,uidN - уникальный ID - при изменени объекта метаданных гененерится новый.
Обычно при такой ошибки данные не разрушены, а разрушенна только конфигурация.
конфигурация может быть разрушена поразному восновном это проблема "versions", также частая проблема с отчетами построенными на основе компоновки данных.
базу можно попробовать востановить простой заменой таблицы Config на архивную или типовую на основе которой базируется конфигурация.
Перенос конфигурация для SQL 2005 описан-> http://www.infostart.ru/public/17185/
Выгрузка конфигурации для DB2 //infostart.ru/public/78378/
Выгрузка конфигурации для MS SQL //infostart.ru/public/85275/
Перед всеми действиями делаем бэкап средствами sql базы данных.
И начинаем танцы с бумном.
проверяем наличие записей в таблице ConfigSave
SELECT * FROM ConfigSave если что есть то нужно почистить
Delete FROM ConfigSave
если были записи то можно попробовать зайти в конфигуратор.
можно попробовать руками собрать таблицу по рекомендациям
в случае хранения базы в MS SQL можно попробовать востановить конфигураци с помощью EI.
если конфигурация разрушенной базы данных сильно отличается от последней сохраненной, то можно в чистую базу загрузить последнюю рабочюю версию конфигурации и максимально приблизить её к разрушеннной, после этого загрузить в базу.
Поле востановления базы до возможности запуска в режиме конфигуратора начинаются танцы с бубном по работоспособности в режиме предприятия, например база может заработать только в управляемом приложении. Тут может помоч реструктуризация, создание нового интерфеса и другие танцы с бубном.
PS
пример ошибки когда база открывается в режиме конфигуратора но при открытии в режиме предприятия выдаёт ошибка типа "тип bf3eefc5-26ac-4bb2-bec0-33a82e49a0c5 не найден"
вариант лечения создать для пользователя новый интерфес.
FAQ для DB2
создание таблицы 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_LARGESPACE"
INDEX IN "V81C_INDEXSPACE"
LONG IN "V81C_LOBSPACE";
ALTER TABLE "DB2ADMIN".conf
DATA CAPTURE NONE
LOCKSIZE ROW
APPEND OFF
NOT VOLATILE;
COMMIT;
RUNSTATS ON TABLE "DB2ADMIN".conf
ALLOW WRITE ACCESS;
SET SCHEMA = DB2ADMIN;
COMMIT;
Перенос данных таблицы 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 базу)