Часто в современных конфигурациях 1С (таких как «Управление торговлей 11», «Комплексная автоматизация 2», «ERP Управление предприятием 2» или «Бухгалтерия предприятия 3») пользователи сталкиваются с неприятным явлением: после проведения документа, пометки на удаление или слияния дублей контрагентов одна и та же запись в журнале документов начинает отображаться в нескольких экземплярах. Давайте подробно разберем, почему возникает этот «глюк» и как мы можем от него избавиться.
Для более глубокого понимания проблемы проанализируем технический механизм формирования списков. В новых редакциях 1С для ускорения работы динамических списков был внедрен регистр сведений РеестрДокументов. Вместо того чтобы при открытии журнала система обращалась к множеству различных таблиц документов, она читает данные из одной «плоской» таблицы этого регистра.
Связь между реальным физическим документом и записью в регистре осуществляется с помощью служебного справочника КлючиРеестраДокументов. Если по какой-то причине (например, сбой при записи, некорректная отработка обработки «Поиск и удаление дублей», ошибки при обмене данными) в этом справочнике создаются две и более записи для одного набора аналитики (например, для одного контрагента), система при построении списка выполняет левое соединение. Как результат — одна строка документа превращается в несколько строк в интерфейсе программы.
Среди других причин появления дублей выделим следующие:
ОбновлениеДанныхРеестраДокументов. Если оно зависло или прервалось, данные в регистре рассинхронизируются с реальными документами.Рассмотрим самый быстрый и штатный способ исправления, который помогает в большинстве случаев. Разработчики 1С знают об этой проблеме (официальная ошибка 00-00172402) и предусмотрели механизм самодиагностики.
КлючиРеестраДокументов.Выясним, что делать, если гиперссылки в справочнике нет (такое бывает в некоторых релизах, например, 11.4.6.166). В этом случае мы воспользуемся стандартным механизмом поиска дублей.
КлючиРеестраДокументов.Важно: Проводите эту операцию, когда в базе нет активных сеансов пользователей, чтобы избежать блокировок и повторного создания ключей в процессе работы.
Если штатные средства интерфейса не дают результата, применим более глубокие методы очистки. Рассмотрим их подробнее.
Метод 1: Программная очистка неиспользуемых ключей
В конфигурациях, построенных на базе БСП (Библиотеки стандартных подсистем), заложен программный метод очистки. Мы можем вызвать его через внешнюю обработку или консоль кода:
РеестрДокументов.ОчиститьНеиспользуемыеКлючи();
Этот код перебирает записи регистра и удаляет те ключи, которые больше не ссылаются на реальные документы или являются дублями.
Метод 2: Полная перестройка реестра документов
Если в регистре наблюдается сильная рассинхронизация, мы можем полностью его перезаполнить.
ЗаполнениеРеестраДокументов (в некоторых конфигурациях она может называться немного иначе).РеестрДокументов и пересчитает его заново на основании проведенных документов. Процесс может занять длительное время в зависимости от объема базы.Метод 3: Проверка регламентных заданий
Убедимся, что механизмы самоочистки работают корректно. Перейдем в список регламентных заданий и проверим, включено ли задание ОчисткаНеиспользуемыхКлючейРеестраДокументов (доступно в новых версиях, начиная с 11.5). Оно должно выполняться по расписанию в часы минимальной нагрузки на систему.
Также проверим настройку функциональной опции Отложенное обновление реестра документов. Если она включена, и при этом фоновое задание не отрабатывает, реестр будет содержать неактуальные или задвоенные данные. Временное отключение и включение этой опции иногда заставляет систему «перезагрузить» логику работы журнала.
Применяя описанные алгоритмы, мы сможем оперативно диагностировать и устранять проблему дублирования строк в журналах документов, обеспечивая комфортную и корректную работу пользователей в 1С.