Как исправить ошибку «Имеются записи с одинаковыми измерениями» в регистре «ОперацииПроверкиКМ» при обновлении 1С:Розница 3.0

Программист 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

При переходе на новые релизы программных продуктов 1С:Розница 3.0 или 1С:УНФ 3.0 пользователи и технические специалисты часто сталкиваются с критической ошибкой: «ОперацииПроверкиКМ. Имеются записи с одинаковыми измерениями». Эта ситуация блокирует процесс обновления информационной базы, так как платформа не может выполнить реструктуризацию таблиц из-за нарушения уникальности данных. В этой статье мы подробно разберем причины возникновения этой проблемы и рассмотрим пошаговые методы её решения.

Выясним причину возникновения ошибки

Прежде чем приступать к исправлению, проанализируем ситуацию. Ошибка возникает в регистре сведений ОперацииПроверкиКМ. Этот регистр предназначен для хранения технических данных о результатах онлайн-проверок кодов маркировки (КМ) в системе «Честный ЗНАК». В новых версиях конфигураций разработчики часто меняют состав измерений этого регистра (например, добавляют новые поля для более детальной идентификации проверок) или изменяют правила уникальности индекса.

Если в вашей базе накоплены записи, которые по старым правилам считались уникальными, а по новым — становятся дублями, система выдает ошибку. Основная проблема заключается в том, что платформа пытается наложить новый уникальный индекс на таблицу, в которой уже есть повторяющиеся комбинации значений в полях (измерениях).

Способ 1: Анализ структуры в Конфигураторе

Рассмотрим, как локализовать проблему через средства разработки. Первым делом нам необходимо понять, что именно изменилось в регистре. Для этого выполним следующие действия:

  1. Запустим информационную базу в режиме Конфигуратор.
  2. Выполним сравнение основной конфигурации с конфигурацией поставщика или с новым файлом обновления.
  3. Найдем в дереве объектов регистр сведений ОперацииПроверкиКМ.
  4. Проанализируем состав его измерений. Обратим внимание на те поля, которые помечены как «Измерение». Если в новой версии добавилось измерение или у существующего изменились свойства (например, тип данных), это и есть причина конфликта.

Обычно ключевыми измерениями, по которым строится уникальность, являются: Организация, ДокументПроверки, Номенклатура и ШтрихкодУпаковки (или КИЗ). Если записи в базе имеют одинаковые значения во всех этих полях, они станут дублями после обновления.

Способ 2: Поиск дублей с помощью консоли запросов

Разберем, как найти конкретные проблемные записи в пользовательском режиме. Для этого нам понадобится «Консоль запросов». Напишем запрос, который сгруппирует данные и выведет только те строки, которые повторяются.

Посмотрим на пример текста запроса:


ВЫБРАТЬ
    Организация,
    ДокументПроверки,
    Номенклатура,
    ШтрихкодУпаковки,
    КОЛИЧЕСТВО(*) КАК КоличествоДублей
ИЗ
    РегистрСведений.ОперацииПроверкиКМ КАК ОперацииПроверкиКМ
СГРУППИРОВАТЬ ПО
    Организация,
    ДокументПроверки,
    Номенклатура,
    ШтрихкодУпаковки
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(*) > 1

После выполнения этого запроса мы получим список комбинаций измерений, которые вызывают ошибку. Эти записи необходимо либо удалить вручную через обработку «Редактирование состава регистров», либо очистить программно.

Способ 3: Полная очистка регистра (рекомендуемый метод)

Поскольку ОперацииПроверкиКМ является вспомогательным регистром, данные в котором носят временный или справочный характер (результаты проверок КМ можно запросить повторно при открытии документа), самым быстрым и эффективным способом решения проблемы является полная очистка этого регистра перед обновлением.

Важно: Перед выполнением этой операции обязательно сделайте резервную копию информационной базы!

Для очистки регистра можно создать внешнюю обработку и выполнить следующий код на встроенном языке 1С:


НаборЗаписей = РегистрыСведений.ОперацииПроверкиКМ.СоздатьНаборЗаписей();
// Мы не устанавливаем никаких отборов, чтобы очистить весь регистр
НаборЗаписей.Записать(Истина);

Метод Записать(Истина) с пустым набором данных полностью удаляет все записи из таблицы регистра. После этого обновление конфигурации должно пройти без ошибок. При последующей работе с документами маркировки система автоматически создаст новые, корректные записи в этом регистре.

Способ 4: Тестирование и исправление

Если вы не хотите прибегать к написанию кода, можно воспользоваться стандартным механизмом платформы. Рассмотрим алгоритм действий:

  1. Зайдем в Конфигуратор.
  2. Выберем меню «Администрирование» — «Тестирование и исправление...».
  3. Установим флаг «Проверка логической целостности» и «Проверка ссылочной целостности».
  4. В разделе «При наличии дублей» выберем вариант «Удалять объект» или «Схлопывать».
  5. Нажмем «Выполнить».

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

Подведем итоги

Мы выяснили, что ошибка «Имеются записи с одинаковыми измерениями» в ОперацииПроверкиКМ — это следствие изменения структуры данных в новых версиях 1С:Розница 3.0. Самым надежным решением является очистка регистра через СоздатьНаборЗаписей(), так как эти данные не влияют на финансовые результаты или остатки товаров, а лишь фиксируют историю технических проверок кодов маркировки. После очистки регистра и успешного завершения обновления система продолжит работу в штатном режиме.

← На главную