+1
Отвечен

Регистр сведений КонтурМеркурий_СкладскойЖурнал

isw_89 10 месяцев назад обновлен Павел Большаков 9 месяцев назад 16

Измерение ИдентификаторПартии - стоит галка строить индекс.

Вопрос, если убрать индекс поэтому измерению, повлияет ли это на работу модуля меркурий.

При синхронизации журнала вылетает ошибка СУБД, при записи в регистр происходит ошибка создания индекса


(функцией ПолучитьСтруктуруХраненияБазыДанных() определил что это Регистр сведений КонтурМеркурий_СкладскойЖурнал)

Всего в этом регистре стоит галка строить индекс у двух измерений:

ИдентификаторПартии - строка, длина 255

GUID - строка, длина 36

и у одного ресурса UUID - строка,длина 36

Так как регистр сведений непериодический и содержит измерения строится кластерный индекс, включающий все измерения. 

https://its.1c.ru/db/metod8dev/content/1590/hdoc

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

Хотя если убрать индекс по измерению ИдентификаторПартии это не решит проблему, так как кластерный индекс по этому регистру включат все измерения регистра, а они все текстовые, просто самое длинное поле это ИдентификаторПартии

рекомендации разработчиков:

  1. Зайти в конфигуратор
  2. У регистра сведений "КонтурМеркурий_СкладскойЖурнал" удалить измерение ИдентификаторПартии. И у этого же регистра создать реквизит ИдентификаторПартии (Строка, 255, не индексировать).
  3. Если уже успели установить 16.02, то закомментировать строки
    Если Метаданные.РегистрыСведений.КонтурМеркурий_СкладскойЖурнал.Измерения.ИдентификаторПартии.Индексирование <> Метаданные.СвойстваОбъектов.Индексирование.НеИндексировать Тогда
    ИтоговыйТекстОшибки = ИтоговыйТекстОшибки + "
    |
    |- Необходимо отключить индексирование у измерения ИдентификаторПартии регистра сведений ""КонтурМеркурий_СкладскойЖурнал""";
    КонецЕсли;
  4. Сохранить конфигурацию, запустить модуль и полностью перечитать складской журнал (иначе ИдентификаторПартии будет везде пустым)

изменения войдут в 16.03 

Если перенести часть  измерений в реквизиты допустим? это бы уменьшило размер индекса, так же проблема может быть в реквизите UUID, так как по нему строится индекс включающий сам реквизит и все измерения

Прошу рассмотреть эту тему побыстрее, так как работа модуля встала, невозможно работать

уменьшение длины измерения ИдентификаторПартии до 100 символов решило проблему, при синхронизации ошибки нет, но если есть возможность убрать текстовые измерения лучше это сделать

Драсти. 966. Кто больше?

Ошибка СУБД:

Microsoft SQL Server Native Client 11.0: Ошибка операции. Для индекса "_InfoRg14003_ByDims" длина элемента индекса, равная 966 байт, превышает максимальную длину, равную 900 байт.

HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=3, Severity=10, native=1946, line=1

длина измерения ИдентификаторПартии в регистре Складского журнала? сто процентов из за этого поля, функцией ПолучитьСтруктуруХраненияБазыДанных() можешь удостоверится что это именно индекс регистра складского журнала, могу подсказать если что, у себя решил проблему

120 поставил. В регистре это поле местами до 80 символов, так что запасик небольшой оставил.

Таблицу нашёл с помощью обработки для просмотра таблиц СУБД

На рассмотрении

задача на разработку создана E1C_in-117177

подскажите, какие версии модулей используются

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

Спасибо за Ваше предложение.

+1

нужно в регистре сведений КонтурМеркурий_СкладскойЖурнал встать на реквизит ИдентификаторПартии и свойство Индексировать установить "Не индексировать". И сохранить конфигурацию. 

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

исправлено в версии 16.02. 

Отвечен

Коллеги, спасибо что подробно описали проблему.

В версии 16.03 мы перенесли ИдентификаторПартии в реквизиты регистра.

Мы очень вам признательны.

Сервис поддержки клиентов работает на платформе UserEcho