gifts2017

Ошибка "The index entry of length X bytes for the index ' ... ' exceeds the maximum length of 900 bytes."

Опубликовал Xer shi (Xershi) в раздел Администрирование - Системное

Возможно, вы уже столкнулись с ошибкой "The index entry of length X bytes for the index ' ... ' exceeds the maximum length of 900 bytes."
При записи в регистр больших значений 1С легко вылетает в дамп.
Давайте детально рассмотрим, что это и как этого избежать!

Справка.

Итак, что же нам говорит microsoft: https://msdn.microsoft.com/en-us/library/ms191241(v=sql.105).aspx.

А это значит, что в нашем случае в регистре содержится запись, в которой количество индексируемых данных превысило 900 байт.

Как это случилось?

Давайте смоделируем эту ошибку:

Создаем регистр с несколькими измерениями.

Тип данных измерения: строка.

Длина измерения чем больше, тем хуже: max 1024 символа.

И вот у вас несколько измерений в 1024 символа. Ничего не предвещает беды, пока вы не начали по полной эти измерения использовать. В один момент у вас попадается запись, в которой должна быть большая строка, и в этот момент и вылетит ошибка.

Ресурсы регистра хоть и со свойством не индексировать, но индексы таблиц создаются неявным образом при создании объектов конфигурации системой 1С:Предприятие 8. Справка: http://its.1c.ru/db/metod8dev/content/1590/hdoc

Вот и попали мы на исключение!

Вывод.

Хоть 1С и позволяет в регистрах указывать длину большую, чем может обработать MS SQL, но не стоит пренебрегать ограничениями!

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Dpotapov (Danil.Potapov) 26.10.15 20:01
проблема не в полнотекстовом поиске а в кластерном индексе по всем измерениям (который создается на уровне платформы).
alest; baton_pk; +2 Ответить 1
2. Xer shi (Xershi) 26.10.15 20:04
(1) Dpotapov, т.е. ты хочешь сказать, что полнотекстовый поиск на индекс никак не влияет?
3. Николай Терновой (ojiojiowka) 26.10.15 21:23
(2) Xershi, да, именно так. В 1С это отдельный механизм, никак не связанный с полнотекстовым поиском СУБД
4. Xer shi (Xershi) 27.10.15 09:37
(3) ojiojiowka, а где это можно прочесть? Добавлю в статью.
5. Алексей 1 (AlX0id) 27.10.15 12:00
Неплохо бы еще уточнить платформу.. В какой-то из свежих запихнули (или обещали) в хэш не помещающиеся индексы.
6. Xer shi (Xershi) 27.10.15 12:40
(5) AlX0id, так тут речь об ограничениях MS SQL. У нас стоит 2012. Или вы про 1с7 или 1с8? Думаю, в семерке будет такая же ошибка. Но не тестировал.
7. Алексей 1 (AlX0id) 27.10.15 13:04
(6) Xershi,
Да, об ограничениях SQL. Но в новых версиях платформы 1С некоторые из них учитываются, как это ни странно звучит.
И само собой я про 8-ку.
8. Xer shi (Xershi) 27.10.15 13:08
(7) AlX0id, 8.3.6 я даже не ставил из-за ее глючности. А вот на 1С:Предприятие 8.3 (8.3.5.1248) такой фишки еще нет.
9. Dpotapov (Danil.Potapov) 28.10.15 00:13
(5) хеш там есть всегда, когда более одного измерения. хеш используется более быстрого поиска уникальных записей.
10. Алексей Соловьев (Silenser) 28.10.15 11:26
(3) ojiojiowka, Если мне не изменяет память, даже полнотекстровый поиск в SQL тоже отдельный механизм, не завязаный с индексами. В запросах с таким поиском используется специальное ключевое слово CONTAINS. И поиск ведется по специальному каталогу полнотекстового индекса.
11. Алексей 1 (AlX0id) 28.10.15 11:58
(9) Dpotapov,
Я вот об этом:
Поле "ХэшИзмерений" добавляется, количество других полей больше 15.

Но это для регистра бухгалтерии ток.. И это не тот случай, который описан в статье, хотя смежный.
12. Xer shi (Xershi) 28.10.15 12:09
Ребята, лучше ссылки на источники дайте. А то гадать на домыслах не лучшая идея.
13. Алексей 1 (AlX0id) 29.10.15 20:38
(12) Xershi,
Я исхожу из статьи с ИТС про индексы. Недавно обновлена, кстати.
14. Xer shi (Xershi) 30.10.15 08:59
(13) AlX0id, благодарю за информацию!