В практике разработчика 1С иногда возникает загадочная ситуация: вы вносите изменения в конфигурацию, добавляете новый тип документа в План видов характеристик (ПВХ), привязываете его к предопределенному виду субконто, и всё начинает работать. Однако через некоторое время тип данных «исчезает» из режима «1С:Предприятие», хотя в Конфигураторе все настройки и «галочки» остаются на месте. Это типичный симптом рассинхронизации метаданных и физической структуры таблиц базы данных. Рассмотрим подробно, почему это происходит и как восстановить работоспособность системы.
Одной из самых коварных причин возникновения подобных «глюков» является динамическое обновление конфигурации, которое в среде разработчиков часто называют «демоническим». Если вы вносили изменения в состав типов Плана видов характеристик и обновляли базу, когда в ней находились пользователи, структура метаданных в оперативной памяти сервера или кэше могла обновиться некорректно.
Проанализируем ситуацию: в Конфигураторе мы видим, что тип выбран, но в режиме Предприятия при попытке выбрать документ в субконто или при просмотре состава типов ПВХ нужный объект отсутствует. Это верный признак того, что конфигурация базы данных не соответствует тому, что «думает» о ней сервер приложений.
Для решения этой проблемы выполним следующие шаги:
.cf через меню «Конфигурация — Выгрузить конфигурацию в файл».Начиная с версии платформы 1С 8.3, у объектов метаданных (включая ПВХ) появилось свойство Обновление предопределенных данных. Рассмотрим, как это влияет на нашу проблему. Если для ПВХ установлено значение «Не обновлять автоматически», то любые изменения, внесенные вами в состав предопределенных элементов в Конфигураторе, просто не попадут в базу данных при запуске.
Выясним причину через программный код. Мы можем принудительно заставить систему обновить предопределенные значения. Для этого в модуле управляемого приложения или в специальной обработке можно использовать следующий метод:
// Установим режим обновления предопределенных данных для Плана Видов Характеристик
ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.Авто);
После выполнения этого кода и перезапуска системы 1С проверит соответствие объектов в коде и в базе данных, восстановив недостающие связи типов.
Если программные методы не помогают, нам придется заглянуть «под капот» системы. В СУБД (например, MS SQL Server) 1С хранит информацию о типах ПВХ в специальных таблицах. Для Плана видов характеристик это обычно таблицы с префиксами _Chrc (основная таблица) и _ChrcSInf (таблица состава типов).
Когда мы добавляем новый документ в состав типов ПВХ, в таблице _ChrcSInf должна появиться соответствующая запись. Если из-за сбоя запись не была создана, 1С в режиме Предприятия не будет видеть этот тип, так как она строит дерево типов на основании данных из этих таблиц, а не из «дерева метаданных» конфигуратора.
Для исправления ситуации воспользуемся механизмом «Тестирование и исправление» (ТиИ):
Процедура ТиИ пересчитает записи в системных таблицах _ChrcSInf и синхронизирует их с метаданными конфигурации.
Разберем ситуацию, когда проблема проявляется только у части пользователей или на конкретном рабочем месте. Кэш 1С хранит описание метаданных локально для ускорения работы. Если в кэше «застряла» старая версия ПВХ, новый тип документа не появится.
Посмотрим, как правильно очистить кэш:
%AppData%\1C\1Cv8\.1C:Enterprise 8.3 Server Agent. В особо сложных случаях помогает удаление содержимого папки snccntx в каталоге данных сервера (в ней хранятся сеансовые данные, которые могут содержать устаревшую структуру типов).Проанализируем еще один современный аспект — расширения. Если План видов характеристик или документ заимствованы в расширение, система начинает вести себя иначе. Если в расширении «зафиксирован» старый состав типов ПВХ, то изменения в основной конфигурации могут игнорироваться.
Проверим это, временно отключив все расширения в базе. Если тип в ПВХ появился — значит, необходимо обновить расширение, удалив из него ПВХ и заимствовав его заново с актуальным составом типов. Помните, что ВидыСубконто — это критически важный объект, и любые манипуляции с его типами в расширениях требуют особой осторожности.
Иногда причина кроется не в «глюках» платформы, а в написанном ранее коде. Выясним, не ограничивается ли состав типов программно. В 1С существует метод НастройкаХраненияТипов(), который может вызываться при старте системы или в модуле менеджера ПВХ.
Рекомендуем выполнить глобальный поиск (Ctrl+Shift+F) по названию вашего Плана видов характеристик во всей конфигурации. Ищите методы, которые могут изменять доступные типы «на лету». Также стоит проверить подписки на события, которые могут срабатывать при записи или получении данных ПВХ.
Поскольку речь часто идет о субконто Документы расчетов с контрагентами, важно помнить, что это составной тип, который используется во многих регистрах бухгалтерии. Если вы добавили новый документ, проверьте также:
ДокументРасчетовСКонтрагентом).Подводя итог, можно сказать: если в Конфигураторе «галки» стоят, а в Предприятии типа нет — это почти всегда вопрос синхронизации. Последовательное выполнение очистки кэша, ТиИ и «жесткого» обновления через .cf файл решает проблему в 99% случаев.