При работе в конфигурации 1С:Бухгалтерия государственного учреждения 2.0 (БГУ 2.0) пользователи часто сталкиваются с неприятным сообщением: «Обнаружено дублирование ключевых значений в колонках: "Ссылка"». Чаще всего эта ошибка проявляется в справочнике ОсновныеСредства, а именно на вкладке «Инвентарные объекты». Давайте разберем по шагам, почему возникает эта проблема и как её устранить.
Для начала проанализируем ситуацию: вкладка «Инвентарные объекты» — это не просто таблица справочника, а динамический список. Его содержимое формируется «на лету» с помощью сложного запроса. Этот запрос обращается не только к основной таблице справочника, но и соединяет её с различными регистрами сведений, такими как МестонахождениеОС, СчетаУчетаОС, СостоянияОС и другие.
Ошибка возникает в тот момент, когда для одного основного средства (одной уникальной ссылки) запрос находит в регистрах более одной «актуальной» записи. Система ожидает получить строго одну строку на каждый объект, но из-за левых соединений в запросе строки начинают «размножаться». В итоге интерфейс 1С не понимает, какую именно строку из нескольких дублей нужно отобразить для данной ссылки, и выдает ошибку.
Выясним причину дублирования. Самый эффективный способ — вытащить запрос динамического списка из конфигуратора и выполнить его в консоли запросов. Рассмотрим алгоритм действий:
ОсновныеСредства.ДинамическийСписок.ОС вы видите несколько строк — мы нашли «виновника».Важное замечание: Текст запроса может меняться программно при открытии формы (в процедуре ПриСозданииНаСервере). Поэтому иногда полезно в режиме отладки вычислить значение ЭтаФорма.Список.ТекстЗапроса, чтобы увидеть итоговый вариант со всеми присоединенными условиями.
Если в консоли запросов мы видим дубли, нужно понять, из какой таблицы они приходят. Разберем основные регистры, которые чаще всего вызывают задвоение в БГУ 2.0:
Проанализируем ситуацию с внутренним перемещением. Часто ошибка возникает, когда в один и тот же день (или даже секунду) по объекту проведено несколько документов перемещения. Если у документов разный состав измерений (например, разные Центры материальной ответственности или подразделения), виртуальная таблица СрезПоследних может вернуть обе записи.
Иногда корень проблемы кроется не в логике учета, а в технических сбоях. Рассмотрим, на что стоит обратить внимание:
Изменение параметров ОС и Внутреннее перемещение) проведены одновременно, 1С может выдать дубль. Попробуйте разнести документы по времени хотя бы на одну секунду.
ВЫБРАТЬ
ДополнительныеРеквизиты.Объект,
ДополнительныеРеквизиты.Свойство,
КОЛИЧЕСТВО(ДополнительныеРеквизиты.Значение) КАК КолВо
ИЗ
РегистрСведений.ДополнительныеСведения КАК ДополнительныеРеквизиты
ГРУППИРОВАТЬ ПО
ДополнительныеРеквизиты.Объект,
ДополнительныеРеквизиты.Свойство
ИМЕЮЩИЕ
КОЛИЧЕСТВО(ДополнительныеРеквизиты.Значение) > 1
Как показывает практика, чаще всего проблема решается анализом движений документов. Рассмотрим пример из реальной практики: монитор перемещается от одного материально-ответственного лица к другому. Если в системе создано лишнее перемещение или в одном документе по ошибке указано два разных инвентарных номера для одной карточки ОС, динамический список выдаст ошибку.
Алгоритм исправления:
Местонахождение ОС и События ОС.Если визуально в регистрах всё чисто, но ошибка сохраняется, рекомендуем выполнить следующие действия:
Подведем итог: ошибка дублирования ссылок — это всегда следствие того, что соединение в запросе 1:1 превратилось в 1:N. Тщательный анализ регистров сведений и документов перемещения в большинстве случаев позволяет быстро устранить причину сбоя в БГУ 2.0.