Почему документы дважды выводятся в списке закупок в УТ 11, ERP или КА 2 и как это исправить?

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

В программах нового поколения на платформе «1С:Предприятие 8» (таких как «1С:Управление торговлей 11», «1С:ERP Управление предприятием» и «1С:Комплексная автоматизация 2») пользователи иногда сталкиваются с крайне странным поведением системы. В журнале документов закупок или продаж (например, в списке «Приобретения товаров и услуг») один и тот же документ начинает отображаться дважды — двумя абсолютно одинаковыми строками. При этом, если пометить один документ на удаление, пометка автоматически появляется и на второй строке. В то же время консоль запросов по этому же динамическому списку при прямой выборке может показывать ровно одну строку.

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

В чем первопричина сбоя: разбираем архитектуру 1С

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

Данные для построения списков хранятся в специальном регистре сведений РеестрДокументов. Данные в этот регистр записываются автоматически при проведении документов. Чтобы минимизировать объем хранимых данных и ускорить поиск, ключевые аналитики (Организация, Партнер, Контрагент, Договор, Физическое лицо) группируются в уникальные комбинации. Каждой такой уникальной комбинации соответствует элемент служебного справочника КлючиРеестраДокументов.

Проблема задвоения строк возникает в следующей цепочке событий:

  1. В информационной базе ведется активный учет, в процессе которого неизбежно появляются дубли нормативно-справочной информации (например, два одинаковых контрагента «Поставщик-М» с разными ссылками).
  2. Для наведения порядка администратор или ответственный пользователь запускает стандартную обработку ПоискИУдалениеДублей. Ссылки схлопываются: «дубль» помечается на удаление, а во всех проведенных документах ссылка заменяется на «оригинал».
  3. Документы перенаправляются на правильного контрагента, но служебный справочник КлючиРеестраДокументов при этом автоматически не очищается. В базе данных остаются два физически разных ключа реестра, которые теперь ссылаются на одного и того же (оставшегося) контрагента-оригинала.
  4. Регистр сведений РеестрДокументов при попытке обновить данные записывает по одной строке для каждого из этих ключей. В результате для одного физического документа в регистре появляется две записи. Динамический список журнала документов, опирающийся на этот регистр, послушно выводит документ дважды.

Именно поэтому стандартная процедура «Тестирование и исправление» (ТиИ) в конфигураторе не приносит никаких результатов. С точки зрения платформы обе записи в справочнике ключей абсолютно валидны, уникальны по ссылке и не нарушают физическую целостность базы данных. Платформа просто не знает прикладной бизнес-логики этого реестра.

На что еще влияет эта проблема (скрытые последствия)

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

Пошаговое руководство по исправлению проблемы

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

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

Шаг 1. Переход к справочнику «Ключи реестра документов»

В современных интерфейсах прикладных решений этот справочник скрыт от глаз обычных пользователей. Чтобы открыть его:

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

Шаг 2. Запуск встроенных механизмов обслуживания реестра

В форме списка открывшегося справочника разработчики предусмотрели штатный инструментарий для борьбы с подобными сбоями. Нам доступны три основные команды (они могут находиться в меню «Еще» или в виде отдельных кнопок/ссылок в зависимости от релиза конфигурации):

  1. Удаление дублей ключей — эта процедура просканирует справочник, выявит ключи с одинаковым набором реквизитов аналитики и схлопнет их в один правильный элемент.
  2. Создание недостающих ключей — процедура создаст новые ключи для тех документов, которые по какой-то причине вообще выпали из реестра.
  3. Проверка корректности отражения — выполнит полную сверку документов и записей в регистре РеестрДокументов.

Запустите поочередно эти процедуры, начав с удаления дублей.

Шаг 3. Исправление реестра документов и переотражение

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

  1. В меню «Функции для технического специалиста» перейдите в раздел «Обработки».
  2. Найдите и откройте обработку ИсправлениеРеестраДокументов.
  3. Запустите выполнение исправления. Программа пересчитает движения по регистру РеестрДокументов для всех проблемных объектов.

Шаг 4. Автоматизация решения (профилактика на будущее)

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

В форме списка справочника КлючиРеестраДокументов найдите гиперссылку для настройки регламентного задания. Перейдите по ней и установите расписание автоматического запуска процедуры поиска и удаления дублей ключей (например, каждую неделю в субботу ночью, когда в базе никто не работает). Это позволит поддерживать реестры документов в актуальном и чистом состоянии без ручного вмешательства администратора.

Что делать, если затронуты прошлые (закрытые) периоды?

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

← На главную