Как исправить ошибку «Обнаружено дублирование ключевых значений в колонках: "Ссылка"» в БГУ 2.0?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет
← На главную

При работе в конфигурации 1С:Бухгалтерия государственного учреждения 2.0 (БГУ 2.0) пользователи часто сталкиваются с неприятным сообщением: «Обнаружено дублирование ключевых значений в колонках: "Ссылка"». Чаще всего эта ошибка проявляется в справочнике ОсновныеСредства, а именно на вкладке «Инвентарные объекты». Давайте разберем по шагам, почему возникает эта проблема и как её устранить.

Понимаем природу ошибки

Для начала проанализируем ситуацию: вкладка «Инвентарные объекты» — это не просто таблица справочника, а динамический список. Его содержимое формируется «на лету» с помощью сложного запроса. Этот запрос обращается не только к основной таблице справочника, но и соединяет её с различными регистрами сведений, такими как МестонахождениеОС, СчетаУчетаОС, СостоянияОС и другие.

Ошибка возникает в тот момент, когда для одного основного средства (одной уникальной ссылки) запрос находит в регистрах более одной «актуальной» записи. Система ожидает получить строго одну строку на каждый объект, но из-за левых соединений в запросе строки начинают «размножаться». В итоге интерфейс 1С не понимает, какую именно строку из нескольких дублей нужно отобразить для данной ссылки, и выдает ошибку.

Шаг 1. Локализация проблемы через консоль запросов

Выясним причину дублирования. Самый эффективный способ — вытащить запрос динамического списка из конфигуратора и выполнить его в консоли запросов. Рассмотрим алгоритм действий:

  1. Откроем конфигуратор и найдем справочник ОсновныеСредства.
  2. Перейдем к форме, где расположен список «Инвентарные объекты», и найдем реквизит формы с типом ДинамическийСписок.
  3. Скопируем текст запроса и вставим его в консоль запросов.
  4. Выполним запрос и проанализируем результат. Если в результате выполнения запроса для одного инвентарного номера или одной ссылки ОС вы видите несколько строк — мы нашли «виновника».

Важное замечание: Текст запроса может меняться программно при открытии формы (в процедуре ПриСозданииНаСервере). Поэтому иногда полезно в режиме отладки вычислить значение ЭтаФорма.Список.ТекстЗапроса, чтобы увидеть итоговый вариант со всеми присоединенными условиями.

Шаг 2. Проверка регистров сведений

Если в консоли запросов мы видим дубли, нужно понять, из какой таблицы они приходят. Разберем основные регистры, которые чаще всего вызывают задвоение в БГУ 2.0:

Проанализируем ситуацию с внутренним перемещением. Часто ошибка возникает, когда в один и тот же день (или даже секунду) по объекту проведено несколько документов перемещения. Если у документов разный состав измерений (например, разные Центры материальной ответственности или подразделения), виртуальная таблица СрезПоследних может вернуть обе записи.

Шаг 3. Поиск технических ошибок в данных

Иногда корень проблемы кроется не в логике учета, а в технических сбоях. Рассмотрим, на что стоит обратить внимание:

  1. Записи на одну и ту же секунду: Если два документа (например, Изменение параметров ОС и Внутреннее перемещение) проведены одновременно, 1С может выдать дубль. Попробуйте разнести документы по времени хотя бы на одну секунду.
  2. Дополнительные реквизиты и сведения: Проверьте, не выведены ли в список дополнительные реквизиты. Если для одного объекта создано два одинаковых доп. реквизита, запрос гарантированно выдаст дубль. Проверить это можно простым запросом:
    
    ВЫБРАТЬ
        ДополнительныеРеквизиты.Объект,
        ДополнительныеРеквизиты.Свойство,
        КОЛИЧЕСТВО(ДополнительныеРеквизиты.Значение) КАК КолВо
    ИЗ
        РегистрСведений.ДополнительныеСведения КАК ДополнительныеРеквизиты
    ГРУППИРОВАТЬ ПО
        ДополнительныеРеквизиты.Объект,
        ДополнительныеРеквизиты.Свойство
    ИМЕЮЩИЕ
        КОЛИЧЕСТВО(ДополнительныеРеквизиты.Значение) > 1
    
  3. Пустые даты: Проверьте наличие записей с пустым периодом (01.01.0001) в регистрах сведений. Такие записи часто появляются при некорректном переносе данных и сбивают работу виртуальных таблиц.

Шаг 4. Практическое решение на примере «Внутреннего перемещения»

Как показывает практика, чаще всего проблема решается анализом движений документов. Рассмотрим пример из реальной практики: монитор перемещается от одного материально-ответственного лица к другому. Если в системе создано лишнее перемещение или в одном документе по ошибке указано два разных инвентарных номера для одной карточки ОС, динамический список выдаст ошибку.

Алгоритм исправления:

  1. Найдем проблемный объект в консоли запросов.
  2. Отфильтруем по этому объекту записи в регистрах Местонахождение ОС и События ОС.
  3. Найдем документы-основания этих записей.
  4. Если обнаружено лишнее перемещение — отменим его проведение. Если записи в регистре «раздвоились» из-за одного документа — проверим заполнение табличной части этого документа. Возможно, там дважды указано одно и то же ОС с разными параметрами.

Профилактика и обслуживание базы

Если визуально в регистрах всё чисто, но ошибка сохраняется, рекомендуем выполнить следующие действия:

Подведем итог: ошибка дублирования ссылок — это всегда следствие того, что соединение в запросе 1:1 превратилось в 1:N. Тщательный анализ регистров сведений и документов перемещения в большинстве случаев позволяет быстро устранить причину сбоя в БГУ 2.0.

← На главную