В процессе администрирования баз данных 1С системные администраторы и программисты иногда сталкиваются с внезапным критическим сбоем. При попытке запустить программу в режиме «Предприятие» или зайти в «Конфигуратор» система выдает предупреждение: «Национальные настройки информационной базы не соответствуют настройкам базы данных». Вслед за этим может появиться окно с сообщением «Ошибочное имя локализации», после чего работа платформы аварийно завершается.
Особенно неприятно то, что стандартная утилита проверки физической целостности файлов базы данных chdbfl.exe часто рапортует об отсутствии ошибок, вводя специалистов в заблуждение. В этой статье мы подробно разберем, почему возникает эта проблема, и рассмотрим проверенные практические методы ее устранения как для файлового, так и для клиент-серверного (SQL) вариантов работы 1С.
Любая информационная база 1С хранит внутренние параметры конфигурации и сеанса в специализированных системных таблицах. Одной из таких важнейших таблиц является таблица с именем Params (параметры). Внутри нее располагается файл (запись) с именем locale.inf, который отвечает за региональные настройки конкретной информационной базы.
В нормальном состоянии бинарные данные этого файла содержат простую строку инициализации локали, например: {"ru_RU",0,0,"",-1,"","","","",1}. Однако из-за некорректного завершения сеанса работы, внезапного отключения питания сервера, сбоев сетевого оборудования или некорректного динамического обновления структуры данных эта запись повреждается. Вместо валидной строки локализации в поле BinaryData записывается некорректный набор символов или случайный GUID-идентификатор. Платформа 1С считывает этот «мусор», не может сопоставить его со списком поддерживаемых локалей и мгновенно блокирует доступ.
Выясним по шагам, как восстановить работоспособность базы данных при помощи различных методов.
Если вы столкнулись со сбоем в файловой версии базы данных (файл 1Cv8.1CD), нам потребуется добраться до содержимого таблицы Params. Рассмотрим самый быстрый способ ремонта записи напрямую.
1Cv8.1CD в безопасное место.Tool_1CD.Params.filename, чтобы найти строку со значением locale.inf.BinaryData (двоичные данные) для этой строки. В поврежденной базе там будет записана некорректная последовательность байт. Нам необходимо заменить ее на правильную сигнатуру для русской локализации.{"ru_RU",0,0,"",-1,"","","","",1}
Если прямое редактирование шестнадцатеричного кода кажется вам слишком сложным или рискованным, применим более элегантный способ, который заставит саму платформу 1С сгенерировать правильный файл настроек.
Tool_1CD) или воспользуйтесь СУБД, если база клиент-серверная.locale.inf в таблице Params.locale1.inf. Это необходимо, чтобы платформа «потеряла» битый файл конфигурации локали и не считывала его при старте.Params абсолютно чистую и корректную запись с именем locale.inf. Устаревшую запись locale1.inf после этого можно безболезненно удалить.Для клиент-серверного варианта работы базы под управлением Microsoft SQL Server нет необходимости выгружать базу в файловую. Мы можем исправить ошибку напрямую через СУБД, выполнив простой SQL-запрос.
UPDATE Params
SET BinaryData = 0x7B2272755F5255222C302C302C22222C2D312C22222C22222C22222C22222C317D
WHERE FileName = 'locale.inf'
0x7B2272... является точным бинарным представлением строки {"ru_RU",0,0,"",-1,"","","","",1} в кодировке UTF-8.Иногда возникает специфическая ситуация: локально и через тонкий клиент на компьютерах пользователей база открывается отлично, но при попытке зайти через веб-браузер или при выполнении синхронизации вылетает ошибка локализации. Разберем, в чем кроется причина.
Веб-серверы (например, IIS или Apache) обрабатывают запросы пользователей от имени определенных системных учетных записей (например, IUSR или NetworkService). Если у этих служебных учетных записей в операционной системе Windows установлены отличные от системы региональные стандарты (например, английский по умолчанию), то веб-клиент 1С будет пытаться инициализировать сессию с некорректной локалью.
Выполним системную настройку для исправления этой проблемы:
iisreset для IIS).В некоторых запущенных случаях после успешного восстановления файла локализации и открытия Конфигуратора, попытка обновить или запустить базу приводит к новой критической ошибке вида: «В схеме базы данных отсутствует таблица "Document11464"». Это признак серьезного рассинхрона между реальной физической структурой таблиц СУБД и метаданными 1С.
Проанализируем шаги по лечению этой сопутствующей патологии:
.cf)..cf). Выполните обновление конфигурации базы данных клавишей F7.
ALTER DATABASE [Имя_Вашей_Базы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB ('Имя_Вашей_Базы', REPAIR_ALLOW_DATA_LOSS);
GO
ALTER DATABASE [Имя_Вашей_Базы] SET MULTI_USER;
GO
Рассмотренные нами методы позволяют быстро и без потери важных учетных данных вернуть базу 1С в рабочее состояние при возникновении сбоев национальной локализации. Главное правило при проведении любых спасательных работ — всегда делать резервную копию базы данных перед внесением изменений напрямую в таблицы Params. Внедрение регулярных автоматических бэкапов позволит вам избежать стрессовых ситуаций в будущем и сохранит данные вашего бизнеса в безопасности.