В процессе работы с конфигурациями на базе 1С:ERP и 1С:Управление торговлей 11 пользователи часто сталкиваются с загадочным явлением: в списке Безналичные платежи или в банковской выписке один и тот же документ отображается дважды. При этом, если попытаться удалить одну строку, исчезает и вторая, а при попытке открыть «дубль», система просто переносит фокус на уже открытое окно документа. Проанализируем эту ситуацию и разберем по шагам, как исправить эту техническую ошибку.
Важно понимать, что в 99% случаев мы имеем дело не с копированием самого объекта ДокументСсылка в базе данных, а с ошибкой формирования динамического списка. В современных решениях 1С списки документов строятся не напрямую по таблицам документов, а через вспомогательные механизмы оптимизации. Если в этих механизмах происходит сбой, одна и та же ссылка на документ начинает «двоиться» в представлении пользователя.
Рассмотрим основные причины, по которым это происходит:
Это самый эффективный метод решения проблемы. Выясним причину: почему реестр «глючит»? Обычно это происходит при обновлении релиза или прерывании процесса записи. Нам необходимо заставить систему пересчитать записи в этом служебном регистре.
Для исправления выполним следующие действия:
Проанализируем пример кода, который принудительно обновляет записи в реестре для конкретной ссылки:
// Очистка записей реестра по конкретному документу
НаборЗаписей = РегистрыСведений.РеестрДокументов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Ссылка.Установить(ПроблемнаяСсылка);
НаборЗаписей.Записать();
// Вызов процедуры обновления из типового модуля (имя может меняться в зависимости от релиза)
РегистрыСведений.РеестрДокументов.ОбновитьДанныеОбъекта(ПроблемнаяСсылка);
Если обновление реестра не помогло, рассмотрим ситуацию с ключами аналитики. В УТ 11 за построение связей отвечает регистр КлючиАналитикиУчетаПоПартнерам. Если для одного ИНН в базе создано несколько Партнеров или Контрагентов, система может запутаться.
Посмотрим на алгоритм действий:
Также стоит проверить регистр СоответствиеОбъектовИнформационныхБаз, если вы используете обмен с бухгалтерией. Иногда «фантомные» связи приходят именно оттуда в процессе синхронизации.
Чтобы окончательно убедиться, что документ в базе один, выполним диагностический запрос. Это поможет исключить версию о физическом дублировании объектов (что было бы критической ошибкой базы данных).
Используем следующий текст запроса:
ВЫБРАТЬ
Списание.Ссылка,
Списание.Номер,
Списание.Дата,
КОЛИЧЕСТВО(Списание.Ссылка) КАК Количество
ИЗ
Документ.СписаниеБезналичныхДенежныхСредств КАК Списание
ГДЕ
Списание.Номер = &НомерДокумента
СГРУППИРОВАТЬ ПО
Списание.Ссылка,
Списание.Номер,
Списание.Дата
Если в результате мы видим только одну строку с количеством «1», значит, проблема локализована в слое отображения (динамический список + регистры-кэши). Если же строк две и у них разные внутренние идентификаторы (UUID), то это реальные дубли, которые нужно удалять через Поиск и замену значений.
Для того чтобы в будущем избежать «клонирования» документов в банковских выписках, придерживайтесь следующих правил:
Реестра документов были существенно доработаны.Текстовое описание внеоборотных активов и реестра документов. Оно отвечает за актуализацию строковых представлений в списках.Таким образом, мы выяснили, что «клонирование» документов — это всего лишь некорректное поведение служебных таблиц оптимизации. Используя инструменты пересчета реестров и очистки дублей аналитики, вы сможете вернуть спискам документов корректный вид.