Ошибка "Длина ключа индекса превышает максимально допустимую" при обновлении файловой базы


Недавно столкнулся с ошибкой

во время создания файлового варианта базы. CF-файл был получен из хранилища, доступ к базе в режиме предприятия был, но при этом отсутствовал доступа к СУБД. Чтобы не тратить время на настройку клиент-серверного варианта и последующего поиска ошибки с помощью СУБД можно воспользоваться следующим вариантом:

  1. по описанию ошибки определить проблемный тип метаданных ("_InfoR24290" - регистр сведений), наименование индекса ("ByPeriod"), количество полей индекса ("(_Period, _Fld24288, ... , _Fld24298)'" - 12 штук), типы полей, входящих в индекс ("TSSSSSSSSRSN" - подробнее по ссылке, в данном случае было достаточно наличия подряд 8-ми строковых реквизитов);
  2. выполнить код вида
ТаблицаСтруктурыИБ = ПолучитьСтруктуруХраненияБазыДанных(); Для Каждого ТекСтрока ИЗ ТаблицаСтруктурыИБ Цикл Если Найти(ТекСтрока.ИмяТаблицы, "РегистрСведений") > 0 Тогда ТаблицаИндексов = ТекСтрока.Индексы; Для Каждого ТекИндекс ИЗ ТаблицаИндексов Цикл Если ТекИндекс.ИмяИндексаХранения = "ByPeriod" И ТекИндекс.Поля.Количество() = 12 Тогда Сообщить("> " + ТекСтрока.ИмяТаблицы); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; 

3. проверить метаданные, которые были выведены в сообщении (в моём случае достаточно было уменьшить длину одного строкового реквизита).

Комментариев нет:

Отправка комментария