В практике разработчика 1С иногда случаются ситуации, которые на первый взгляд кажутся «мистическими». Одна из таких проблем — внезапное исчезновение объекта (например, регистра, справочника или документа) из дерева конфигурации в режиме Конфигуратора, при том что в режиме Предприятия объект продолжает функционировать, принимать данные и отображаться в интерфейсе. Особенно часто подобные «чудеса» начали проявляться на версиях платформы ветки 8.3.27.
В данной статье мы подробно разберем, почему возникает такая рассинхронизация, проанализируем механизмы работы кэша метаданных и изучим пошаговый алгоритм восстановления видимости объектов.
Для начала разберем внутреннюю структуру хранения метаданных. Платформа 1С хранит информацию об объектах в нескольких местах:
Проблема «пропажи» обычно связана с тем, что после аварийного завершения работы сервера или сессии Конфигуратора локальный кэш помечает объект как отсутствующий, хотя в основной конфигурации он физически существует. В новых версиях платформы, таких как 8.3.27.1606, механизмы оптимизации поиска ссылок и кэширования модулей работают агрессивнее, что при сбоях приводит к подобным артефактам. Если Конфигуратор при отрисовке дерева «доверяет» поврежденному локальному индексу, вы не увидите объект, даже если он есть в БД.
Прежде чем приступать к радикальным мерам, нам необходимо убедиться, что объект действительно существует в структуре базы. Рассмотрим, как это проверить:
Как показывает практика и опыт участников сообщества, простая очистка временных файлов через удаление папок в AppData помогает не всегда. Рассмотрим наиболее надежный способ полной очистки кэша метаданных:
Почему это работает? При удалении базы из списка 1С разрывает связь между путем к базе и уникальным идентификатором (UUID) кэша. При повторном добавлении базе присваивается новый внутренний ID, и платформа создает абсолютно чистые папки в каталогах Local и Roaming. Все метаданные заново выкачиваются из базы данных, и дерево объектов восстанавливается в актуальном состоянии.
Если ваша база подключена к хранилищу, проанализируем ситуацию через его историю. Это поможет, если объект пропал сразу после помещения (commit) или получения (update) изменений.
Рассмотрим последовательность действий:
.cf файл с вашей текущей конфигурацией.Если очистка списка баз не помогла, проанализируем состояние метаданных через выгрузку. Попробуем пересобрать локальную копию:
.cf.Важное примечание: Загружать нужно именно в новую базу, а не в существующую «другую», чтобы исключить влияние старых индексов кэша. Если в новой базе объект появился — значит, проблема была локальной. Если нет — повреждена сама таблица Config.
В ветке 8.3.27 зафиксирована критическая ошибка: иногда после динамического обновления или сбоя текста модулей (особенно нетиповых) просто исчезают, оставляя пустое полотно. Если вы столкнулись с этим вместе с исчезновением объектов, обычное Тестирование и исправление (ТИИ) не поможет, так как оно проверяет ссылочную целостность, но не содержимое текстовых блоков.
В этом случае единственным надежным решением будет:
8.3.24 или 8.3.25), так как 8.3.27 на данный момент может вести себя непредсказуемо при работе с тяжелыми конфигурациями.Проанализируем еще несколько инструментов, которые могут помочь в диагностике:
/ClearCache: Его можно добавить в дополнительные параметры запуска базы. Он очищает кэш клиент-серверных вызовов, что иногда «проталкивает» обновление метаданных модулей.Подводя итог, можно сказать: в любой непонятной ситуации с «исчезновением» или «фантомным» поведением объектов в 1С, начинайте с полного удаления базы из списка. Это экономит часы времени, которые могли быть потрачены на бесполезное тестирование базы данных, находящейся в исправном состоянии.