При реструктуризации информационных баз в платформе 1С:Предприятие 8.3 иногда возникает критический сбой: после добавления любого нового реквизита или объекта в конфигураторе и применения изменений список пользователей из конфигуратора полностью исчезает, а при попытке зайти в 1С:Предприятие система выдает ошибку вида «Тип неопределен» при инициализации параметров сеанса. Проанализируем причины этой проблемы и разберем по шагам варианты ее исправления.
Рассматриваемое поведение системы обусловлено связкой нескольких технических факторов:
v8users, Params и Config). Старая версия SQL Server не в полной мере поддерживает ряд современных операций T-SQL и механизмов работы с типами данных, используемых платформой 8.3, что приводит к некорректному завершению процедур изменения физических таблиц.v8usersNG) и копирует в них учетные записи. При сбое на стороне СУБД или MS SQL Server Native Client процедура переименования или перенос данных прерывается, в результате чего таблица v8users оказывается пустой или некорректно связывается с метаданными.Config. Если процедура применения изменений прервалась, в системной таблице Config остаются так называемые «грязные» маркеры реструктуризации. Из-за этого при запуск сеанса платформа теряет связи между UUID типов данных, что приводит к ошибкам идентификации параметров сеанса и сообщению «Тип неопределен».Рассмотрим последовательность действий, которые помогут восстановить работоспособность информационной базы и предотвратить повторение сбоя.
Если восстановить базу из резервной копии полностью невозможно, но есть актуальный бэкап, сделанный до проведения реструктуризации, разберем порядок восстановления системных таблиц на уровне MS SQL Server.
ConfigSave и удаление маркеров незавершенного обновления из таблицы Config:
DELETE FROM ConfigSave;
DELETE FROM Config WHERE FileName IN ('commit', 'dbStruFinal', 'DynamicallyUpdated', 'dynamicCommit');
v8users и таблицу параметров Params из копии базы данных. Для этого выполним следующий скрипт в MS SQL Server Management Studio (предварительно заменив имя рабочей базы и копии):
DELETE FROM [РабочаяБаза].[dbo].[v8users];
INSERT INTO [РабочаяБаза].[dbo].[v8users] SELECT * FROM [КопияБазы].[dbo].[v8users];
DELETE FROM [РабочаяБаза].[dbo].[Params];
INSERT INTO [РабочаяБаза].[dbo].[Params] SELECT * FROM [КопияБазы].[dbo].[Params];
Разберем классический способ устранения рассинхронизации структур метаданных 1С и SQL посредством полной выгрузки и загрузки информационного дампа.
.dt (пункт меню Администрирование > Выгрузить информационную базу...)..dt в вновь созданную базу. В процессе загрузки платформа заново сформирует физическую структуру всех системных таблиц, включая v8users, Params и Config.Если размеры базы позволяют выгрузить её или развернуть на промежуточном сервере, применим следующую методику доработки конфигурации:
MS SQL Server Native Client на сервере 1С:Предприятие.Чтобы избежать утери учетных записей при дальнейших изменениях конфигурации, придерживаемся следующих правил:
.bak).