Почему дублируются документы в журнале 1С и как это исправить?

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

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

Причины возникновения дублирования в журналах

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

Связь между реальным физическим документом и записью в регистре осуществляется с помощью служебного справочника КлючиРеестраДокументов. Если по какой-то причине (например, сбой при записи, некорректная отработка обработки «Поиск и удаление дублей», ошибки при обмене данными) в этом справочнике создаются две и более записи для одного набора аналитики (например, для одного контрагента), система при построении списка выполняет левое соединение. Как результат — одна строка документа превращается в несколько строк в интерфейсе программы.

Среди других причин появления дублей выделим следующие:

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

Шаг 1. Простое решение через справочник ключей

Рассмотрим самый быстрый и штатный способ исправления, который помогает в большинстве случаев. Разработчики 1С знают об этой проблеме (официальная ошибка 00-00172402) и предусмотрели механизм самодиагностики.

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

Шаг 2. Использование поиска и удаления дублей

Выясним, что делать, если гиперссылки в справочнике нет (такое бывает в некоторых релизах, например, 11.4.6.166). В этом случае мы воспользуемся стандартным механизмом поиска дублей.

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

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

Дополнительные технические способы решения

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

Метод 1: Программная очистка неиспользуемых ключей

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


РеестрДокументов.ОчиститьНеиспользуемыеКлючи();

Этот код перебирает записи регистра и удаляет те ключи, которые больше не ссылаются на реальные документы или являются дублями.

Метод 2: Полная перестройка реестра документов

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

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

Метод 3: Проверка регламентных заданий

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

Также проверим настройку функциональной опции Отложенное обновление реестра документов. Если она включена, и при этом фоновое задание не отрабатывает, реестр будет содержать неактуальные или задвоенные данные. Временное отключение и включение этой опции иногда заставляет систему «перезагрузить» логику работы журнала.

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

← На главную