Ошибки неуникальности записей в 1С
Часто ошибки возникают при обновлении конфигурации, — особенно если обновление «перескакивает» через несколько релизов. Рассмотрим причину появления и как исправить ошибку 1С «Записи регистра сведений стали неуникальными».
Отображение ошибки
Подобная ошибка может иметь два идентичных отображения от системы 1С:
Суть этой ошибки состоит в том, что после очередного обновления изменился состав измерений для одного из регистров (или нескольких).
Программные требования к регистрам
Мы знаем, что регистр (register, англ.) сведений формируется для хранения в виде записей (строк). Каждая из них характеризуется видами измерений (профилями) и ресурсов.
Измерения характеризуют разрезы (типы), в которых хранятся данные. А ресурсы— непосредственно содержат их значения.
Например, register сведений «Цены товаров» имеет структуру, состоящую из двух видов профилей («Товар», «ВидЦен») и одного ресурса («Цена»):
Таким образом, строки регистра в базе данных будут выглядеть так:
Кроме того, при создании записи ей присваивается уникальный ключ. Формирование его системой происходит автоматически.
Одинаковыми считаются такие записи, ключи которых идентичны.
ВАЖНО. Итак — каждый register имеет один и только единый набор профилей. Строки этого регистра должны соответствовать этому набору.
Изменение структуры
Рассмотрим другой пример.
В одно время разработчиком был создан регистр «ОтветственныеЛицаПоСкладам» структурно состоящий из двух измерений («Склад» и «Помещение») и одного ресурса («Ответственный»).
В последующем кем-то было принято решение о том, что такая детализация является излишней. Это решение отразилось в очередном релизе.
И теперь обновлённый register имеет только единственный профиль и ресурс:
Структура его изменилась. Но строки остались!
И в них указано, что для профиля «Помещение» — есть ответственные (ресурсы). Но что с ними делать при переходе на новый релиз — сама программа без пользователя такую задачу не решит.
Поэтому появляется ошибка 1С:«записи регистра сведений стали неуникальными». Может быть такая — имеются записи с одинаковыми измерениями.
Ручное исправление
Смысл этих сообщений сводится к тому, что новая структура содержит несколько строк с лишними измерениями и их нужно свернуть в одну:
В этом случае нужно удалить те, которые соответствуют теперь уже ненужным профилям.
Обычно при использовании типовых конфигураций такая задача решается разработчиками на программном уровне. И сворачивание происходит автоматически при обновлении.
Пропущенный релиз
Возможным решением проблемы будет, если вновь установленную конфигурацию откатить назад (путём восстановления архивной копии), а затем обновиться заново (уже без пропуска пропущенных релизов).
Метод сравнения
Тяжелее ситуация складывается, когда обновление происходит с пропуском нескольких релизов. Или предыдущая конфигурация была доработанной. Здесь также возникает необходимость свёртывания строчек. Но сложность состоит в поиске утерянных измерений и реквизитов.
Для решения такой задачи нужно войти в режим «Конфигурация» и выполнить команду «Сравнить конфигурации»:
После этого удалить найденные с помощью консоли запросов неуникальные строчки.
При небольшом их количестве это несложно сделать вручную.
Автоудаление 1
Для программного удаления очень большого количества неуникальных строчек можно воспользоваться обработкой, предложенной Евгенией Карук:
- Сначала скачать и открыть обработку;
- Открыть register сведений с неуникальными строчками;
- Отметить те из измерений, которые нужно удалить в результате обновления;
- Дать команду нажатием «Свернуть дубли».
Дубли строк будут найдены обработкой и свёрнуты в одну.
После проведения обработки обновление конфигурации будет проведено корректно.
Также можно использовать обработку для проверки наличие дублей без изменения данных (для тестирования или проверки):
Автоудаление 2
Другая обработка для той же цели предложена другим специалистом в этой области — Павлом Чистовым (для мобильного варианта не поддерживается).
Мы рассмотрели причины появления и методы исправления ошибок, связанных с нарушениями структуры строк. Теперь вы знаете, что проявляются они при наложении одной конфигурации на другую.
Комментируйте наши публикации. Описывайте свой опыт в решении проблемных вопросов.
Источник: winzen.ru