Как исправить ошибку «Национальные настройки информационной базы не соответствуют настройкам базы данных» в 1С?

Системный администратор 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

В процессе администрирования баз данных 1С системные администраторы и программисты иногда сталкиваются с внезапным критическим сбоем. При попытке запустить программу в режиме «Предприятие» или зайти в «Конфигуратор» система выдает предупреждение: «Национальные настройки информационной базы не соответствуют настройкам базы данных». Вслед за этим может появиться окно с сообщением «Ошибочное имя локализации», после чего работа платформы аварийно завершается.

Особенно неприятно то, что стандартная утилита проверки физической целостности файлов базы данных chdbfl.exe часто рапортует об отсутствии ошибок, вводя специалистов в заблуждение. В этой статье мы подробно разберем, почему возникает эта проблема, и рассмотрим проверенные практические методы ее устранения как для файлового, так и для клиент-серверного (SQL) вариантов работы 1С.

Почему возникает данная ошибка и где хранятся настройки?

Любая информационная база 1С хранит внутренние параметры конфигурации и сеанса в специализированных системных таблицах. Одной из таких важнейших таблиц является таблица с именем Params (параметры). Внутри нее располагается файл (запись) с именем locale.inf, который отвечает за региональные настройки конкретной информационной базы.

В нормальном состоянии бинарные данные этого файла содержат простую строку инициализации локали, например: {"ru_RU",0,0,"",-1,"","","","",1}. Однако из-за некорректного завершения сеанса работы, внезапного отключения питания сервера, сбоев сетевого оборудования или некорректного динамического обновления структуры данных эта запись повреждается. Вместо валидной строки локализации в поле BinaryData записывается некорректный набор символов или случайный GUID-идентификатор. Платформа 1С считывает этот «мусор», не может сопоставить его со списком поддерживаемых локалей и мгновенно блокирует доступ.

Выясним по шагам, как восстановить работоспособность базы данных при помощи различных методов.

Решение №1: Восстановление locale.inf в файловой базе (через Tool_1CD и HEX-редактор)

Если вы столкнулись со сбоем в файловой версии базы данных (файл 1Cv8.1CD), нам потребуется добраться до содержимого таблицы Params. Рассмотрим самый быстрый способ ремонта записи напрямую.

  1. Обязательно создайте резервную копию! Любые операции по прямому редактированию структуры базы данных несут в себе риски окончательно испортить файл. Скопируйте файл 1Cv8.1CD в безопасное место.
  2. Запустите специализированную утилиту для работы с файловыми базами 1С — Tool_1CD.
  3. Откройте поврежденный файл базы данных в программе. Найдите в списке таблиц системную таблицу под названием Params.
  4. Выполните поиск по колонке filename, чтобы найти строку со значением locale.inf.
  5. Обратите внимание на поле BinaryData (двоичные данные) для этой строки. В поврежденной базе там будет записана некорректная последовательность байт. Нам необходимо заменить ее на правильную сигнатуру для русской локализации.
  6. Откройте файл базы данных в любом удобном HEX-редакторе. Найдите адрес этой строки и замените поврежденное значение в двоичном поле на стандартную строку инициализации: {"ru_RU",0,0,"",-1,"","","","",1}
  7. Сохраните изменения в базе данных и попробуйте открыть Конфигуратор.

Решение №2: Обходной маневр с переименованием записи в таблице Params

Если прямое редактирование шестнадцатеричного кода кажется вам слишком сложным или рискованным, применим более элегантный способ, который заставит саму платформу 1С сгенерировать правильный файл настроек.

  1. Как и в первом методе, откройте базу данных через утилиту редактирования таблиц (например, Tool_1CD) или воспользуйтесь СУБД, если база клиент-серверная.
  2. Найдите строку locale.inf в таблице Params.
  3. Измените имя этого файла в базе данных. Переименуйте его, например, в locale1.inf. Это необходимо, чтобы платформа «потеряла» битый файл конфигурации локали и не считывала его при старте.
  4. Попробуйте запустить Конфигуратор. Поскольку поврежденная запись больше не мешает инициализации, вход должен выполниться успешно.
  5. В главном меню Конфигуратора перейдите в раздел Администрирование -> Региональные установки информационной базы.
  6. Убедитесь, что там выбран язык «Русский (Россия)» (или необходимый вам региональный стандарт) и нажмите кнопку ОК для подтверждения параметров.
  7. После этого платформа 1С автоматически сгенерирует в таблице Params абсолютно чистую и корректную запись с именем locale.inf. Устаревшую запись locale1.inf после этого можно безболезненно удалить.

Решение №3: Исправление локали на сервере MS SQL Server

Для клиент-серверного варианта работы базы под управлением Microsoft SQL Server нет необходимости выгружать базу в файловую. Мы можем исправить ошибку напрямую через СУБД, выполнив простой SQL-запрос.

  1. Откройте среду управления СУБД SQL Server Management Studio (SSMS) и подключитесь к вашему серверу баз данных.
  2. Выберите поврежденную базу данных 1С и откройте окно создания нового запроса.
  3. Напишем и выполним следующий SQL-запрос, который принудительно запишет верное бинарное значение русской локализации в таблицу параметров:
    
    UPDATE Params 
    SET BinaryData = 0x7B2272755F5255222C302C302C22222C2D312C22222C22222C22222C22222C317D 
    WHERE FileName = 'locale.inf'
    
    Примечание: Шестнадцатеричное значение 0x7B2272... является точным бинарным представлением строки {"ru_RU",0,0,"",-1,"","","","",1} в кодировке UTF-8.
  4. После выполнения запроса попробуйте открыть Конфигуратор и проверить работу системы.

Решение №4: Настройка региональных параметров веб-сервера (для IIS и Apache)

Иногда возникает специфическая ситуация: локально и через тонкий клиент на компьютерах пользователей база открывается отлично, но при попытке зайти через веб-браузер или при выполнении синхронизации вылетает ошибка локализации. Разберем, в чем кроется причина.

Веб-серверы (например, IIS или Apache) обрабатывают запросы пользователей от имени определенных системных учетных записей (например, IUSR или NetworkService). Если у этих служебных учетных записей в операционной системе Windows установлены отличные от системы региональные стандарты (например, английский по умолчанию), то веб-клиент 1С будет пытаться инициализировать сессию с некорректной локалью.

Выполним системную настройку для исправления этой проблемы:

  1. Зайдите на сервер под учетной записью Администратора.
  2. Откройте Панель управления -> раздел Региональные стандарты.
  3. Убедитесь, что на вкладках «Форматы» и «Местоположение» везде установлены корректные настройки (Россия / Русский язык).
  4. Перейдите на вкладку Административно и нажмите на кнопку Копировать параметры.
  5. В открывшемся окне установите флажки внизу: «Копировать текущие настройки в: Системные учетные записи (пользователи по умолчанию)».
  6. Нажмите ОК и перезагрузите веб-сервер (или выполните команду iisreset для IIS).

Решение №5: Что делать с сопутствующими ошибками (Отсутствие таблиц СУБД)

В некоторых запущенных случаях после успешного восстановления файла локализации и открытия Конфигуратора, попытка обновить или запустить базу приводит к новой критической ошибке вида: «В схеме базы данных отсутствует таблица "Document11464"». Это признак серьезного рассинхрона между реальной физической структурой таблиц СУБД и метаданными 1С.

Проанализируем шаги по лечению этой сопутствующей патологии:

  1. Попробуйте выполнить откат изменений метаданных. Для этого в меню Конфигуратора выберите: Конфигурация -> Конфигурация базы данных -> Вернуться к конфигурации БД. Это отменит незавершенные транзакции обновления конфигурации.
  2. Если это не помогло, используйте файл чистой конфигурации. Возьмите резервную копию этой же базы (или демо-базу того же релиза) и сохраните ее конфигурацию в файл (меню Конфигурация -> Сохранить конфигурацию в файл..., получите файл с расширением .cf).
  3. В поврежденной базе откройте Конфигуратор и примените принудительную загрузку метаданных через пункт: Конфигурация -> Загрузить конфигурацию из файла... (выберите ваш сохраненный .cf). Выполните обновление конфигурации базы данных клавишей F7.
  4. Для баз на MS SQL Server при подозрении на повреждение логической структуры СУБД выполните проверку таблиц со следующими параметрами:
    
    ALTER DATABASE [Имя_Вашей_Базы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    GO
    DBCC CHECKDB ('Имя_Вашей_Базы', REPAIR_ALLOW_DATA_LOSS);
    GO
    ALTER DATABASE [Имя_Вашей_Базы] SET MULTI_USER;
    GO
    
    Внимание! Метод восстановления с параметром REPAIR_ALLOW_DATA_LOSS используется только в крайнем случае, так как он может удалить часть битых данных для восстановления общей целостности таблиц базы.

Подведем итоги

Рассмотренные нами методы позволяют быстро и без потери важных учетных данных вернуть базу 1С в рабочее состояние при возникновении сбоев национальной локализации. Главное правило при проведении любых спасательных работ — всегда делать резервную копию базы данных перед внесением изменений напрямую в таблицы Params. Внедрение регулярных автоматических бэкапов позволит вам избежать стрессовых ситуаций в будущем и сохранит данные вашего бизнеса в безопасности.

← На главную