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