Длина ключа индекса превышает допустимую

Тема в разделе "1C и всё что с ней связано", создана пользователем Skellar, 25 июл 2011.

  1. Skellar

    Skellar Well-Known Member

    Репутация:
    0
    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Вот такую ошибку (и см файл) я увидел сегодня, когда загружал конфигурацию из базы на sql в обычную пустую базу на компьютере. Везде,где нашел, в неродных регистрах отключил индексирование. Что еще можно сделать и как найти регситр\реквизит, у которого формируется слишком длинный ключ?
     

    Вложения:

    • Длина ключа индекса превышает допустимую
      __________.JPG
      Размер файла:
      118,5 КБ
      Просмотров:
      148
  2. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Пока могу только посочувствовать.
    1. Есть такая утилита Tool_1CD.exe. Позволяет глянуть нутро 1CD файла. Может с ее помощью можно найти поле Referens61...
    2. Проделать все то же, но с маленькой базой. Вплоть до пустой.
     
  3. Allexei

    Allexei Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    324
    Симпатии:
    1
    Идешь на Инфостарт или на сайт Чистова( не сочтите за рекламу) обработку "StrukturaHraneniaBazyDannyh_Xr8v", открываешь в скулевой базе, находишь что есть твоя "не правильная" таблица (скрин разглядеть не могу) и смотришь длинну ее индекса. Как вычисляется длинна индекса есть в ЖКК. Узнать ограничение на длинну индекса для файловой базы поможет гугль. Как узнаешь - скажешь в чем дела подумаем что можно сделать ;))
     
  4. Skellar

    Skellar Well-Known Member

    Репутация:
    0
    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Спасибо,самое то, еще нашел обработку DBStructure81.epf , тоже удобная и полезная вещь.
    Tool_1CD.exe хороша, только не показывает название объекта 1С. Я правильно понимаю, что чтобы избежать формирования длинного ключа, нужно в проблемном объекте у проблемного реквизита убрать индексирование ?
     
  5. Allexei

    Allexei Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    324
    Симпатии:
    1
    Ну как тебе сказать...Была то же с этим проблема - сделал регистр сведений с 10 измерениями с длинной строки в 100 :))) В скуле все ок, когда переводил в файловую- бац, индек слишком длинный :)) В итоги измерения перевел в реквизиты и все ок. Посмотри в ЖКК как формируется длинна индекса или в большой книге по 1С(не помню как называетьчя, но она такая большая,большая.) Если не получится, завтра помогу, посмотрю что можно сделать- сегодня времени нет.
     
  6. Skellar

    Skellar Well-Known Member

    Репутация:
    0
    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Я совсем в непонятках. Reference61 оказался справочник "Помещения" (УТ 8.1), у которого нет никаких реквизитов. На всякий случай уменьшил длину наименования и выключил полнотекстовый поиск, все равно ошибка. ЗЫ - все изменения я делаю в вытащенной конфигурации.
    Про формирование ключа пока ничего не нашел = (
    И самое интересное, плюнул, удалил этот справочник и попробовал запустить без него. Вылезла та же ошибка _Referenc61 ... Чего-то я совсем не понимаю.
     
  7. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    В "молоко", значит. Я бы рыл в сторону сложной структуры. Вот Allexei намекает на регистр ветвистый. Удаляй поочередно ресурсы, пока не нащупаешь проблемный.
     
  8. Allexei

    Allexei Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    324
    Симпатии:
    1
    Кстати проверь не индексируется ли где поле неограниченной длинны. По индексам смотри книгу "Реализация прикладных задач в системе 1С предприятие 8.2" стр 698.

    По длине индекса:
    В файловом варианте индекса ограничена 1920 байт.
    Для составного индекса его длина рассчитывается как сумма длин полей, входящих в индекс.
    Для различных типов данных длина поля в байтах может быть вычислена по следующим формулам:
    *Число: (Длина + 1) / 2 + (Длина + 1) / 2
    *Строка: Длина * 3 + 2
    *Дата: 8
    *Булево: 1
    *Ссылка: 16
    Кроме этого, существует ограничение на количество полей, входящих в составной индекс. Для СУБД, отличных от файловой, максимальное количество полей в составном индексе – 16. Для файловой СУБД – 256. Если индекс содержит большее количество полей – они автоматически отбрасываются.
    Теперь об индексировании:
    С галочками индексировать получается не гуд :rolleyes:) Смотри есть регистр сведений с 3-я измерениями, по умолчанию будет индекс: Изм1+Изм2+Изм3. Есля первого измерения, без разницы стоит или нет галочка индексировать - это основной индекс он всегда есть и будет:
    Основной= Изм1=Изм1+Изм2+Изм3, добавим галочку ко второму измерению в результате еще+ 1 индекс
    Изм2= Изм2+Изм1+Изм3. Так что не гуд галочки тыкать везде где ни попадя, ибо натыкав их ты получишь один основной и два "не основных" индекса.
    Ограничением на использование индекса при использовании СУБД, встроенной в 1С:Предприятие, является максимально допустимая суммарная длина ключа в индексе, равная 1920 байт.
     
  9. Skellar

    Skellar Well-Known Member

    Репутация:
    0
    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Пока так ничего и не получилось. Нашел приложением, которое Дайнеко описал поле, которое больше 1920, как от него избавиться - не знаю. Удаление ресурсов тоже ни к чему ни привело. Самый сок это когда удалены объекты, на которые ссылается ошибка и даже Tool_1CD не видит эти поля. Делал переиндексацию, ошибка начала ссылаться на следующий в списке справочник, удалил его, опять вернулась та же первоначальная ошибка.
    Allexei, Проверить по всей базе ?
     
  10. Allexei

    Allexei Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    324
    Симпатии:
    1
    Слушай, а если попробовать выгрузить конфу без данных и удалить косячные поля?
    Так чисто ради эксперимента :) Эх жаль у нас таких ошибок не возникает... покопался бы:) Если есть возможность можеш скинуть пустую конфу- на выходных поковыряюсь.И еще интересно, ошибку выдает на созданные стороними разработчиками объекты? Кстати если эта конфа нужна может есть смысл поставить скули или если блюдите лицензионност постгрес?
     
  11. Skellar

    Skellar Well-Known Member

    Репутация:
    0
    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Так я так и возился с выгруженной конфой. Оттуда и удалял поля, какие мог) Нет, это стандартный объект, но в самой конфе изменений порядочно. Скуль стоит, на нем все работает и работать, собственно, приходится в базе на скуле. Но из-за ошибки не забрать конфу домой, там ковырять, вот это минус. Лови ссылку в ЛС.
     
  12. Allexei

    Allexei Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    324
    Симпатии:
    1
    Ошибка в справочнике Номенклатура, реквизит "НаименованиеПок" (судя по названию и тому что с ним сделали - не стандартный :) ) - длинна 1000 символов. Галочка индексировать включена. Убираем галочку - все работает :). Ошибка найдена с помощью обработки "StrukturaHraneniaBazyDannyh_Xr8v" по имени таблички.
     
  13. Skellar

    Skellar Well-Known Member

    Репутация:
    0
    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Allexei, Огромное спасибо!! Можешь ответить на пару вопросов? Как в этой обработке ты искал нужное поле ? А то я ни в 61ом справочнике ни в Справочник.Номенклатура не нашел полей из описании ошибки. И, чтобы запустить обработку, ты базу на скуле поднимал ?
     
  14. Allexei

    Allexei Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    324
    Симпатии:
    1
    Да, поднял базу на скуле, в ней запустил обработку перед этим на вкладке настройки переключил флажок на в терминах SDBL - ведь мы пытаемся загрузить в файловый вариант. Далее появилась наша 61 таблица, на у нее появился индекс наш ну и тд и тп.
     
  15. Skellar

    Skellar Well-Known Member

    Репутация:
    0
    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Ты мне буквально глаза открыл. У меня же на 61ом на скуэлевской базе был совсем другой справочник - "помещения". А после твоих сообщений задумался и запустил обработку на начавшей работать пустой базе с проблемной конфигурацией. Так вот, оказалось, что все это время я свято верил,что эта доставшаяся мне конфигурация - из базы на sql, на которой я и запускал обработки структуры БД и видел 61ый справочник "помещения" вместо "номенклатуры". А тут задумался - проверил и понял, что конфигурация базы и моя конфигурация - похожие, но совсем не одинаковые :) . Вот такой вот фэйл, зато теперь все встало на свои места, чудес-то не бывает)
     
  16. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Ура! Шампанского!
     
  17. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А Алексея - повысить в должности :)
     
  18. Allexei

    Allexei Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    2 май 2008
    Сообщения:
    324
    Симпатии:
    1
    Ага, дам руководству ссылку на тему. Может повысят хотя бы в зарплате :))
     
Загрузка...
Похожие Темы - Длина ключа индекса
  1. gx6060
    Ответов:
    2
    Просмотров:
    725
  2. R4z0R
    Ответов:
    4
    Просмотров:
    811
  3. oleg25
    Ответов:
    0
    Просмотров:
    1.155
  4. fxnjpfyfhty
    Ответов:
    1
    Просмотров:
    951
  5. Laura
    Ответов:
    1
    Просмотров:
    1.991

Поделиться этой страницей