При разворачивании новой чистой базы или настройке конфигурации 1С:Бухгалтерия 8 (редакция 3.0) разработчики и администраторы часто сталкиваются с ситуацией, когда в режиме «1С:Предприятие» в справочнике (например, СтатьиДвиженияДенежныхСредств) отсутствует часть или все предопределенные элементы, хотя в конфигураторе они объявлены. Проанализируем, почему так происходит, как устроена логика платформы 8.3 и Библиотеки Стандартных Подсистем (БСП), и какими способами можно восстановить или включить отображение этих данных.
В современных конфигурациях 1С на платформе 8.3 многие предопределенные элементы справочников и сами справочники привязаны к функциональным опциям (ФО). Если функциональная опция выключена (например, отключено ведение учета по статьям движения денежных средств), система скрывает соответствующий интерфейс и связанные с ним элементы.
При включении соответствующей функциональной опции в настройках программы в справочнике сразу становятся видимыми и доступными связанные с ней предопределенные элементы. Если же включить лишь часть опций функционала, отобразятся только те предопределенные элементы, которые относятся к активированным возможностям учета.
В прикладных решениях на базе Библиотеки Стандартных Подсистем (БСП) программная логика создания и связи элементов часто вынесена в процедуры первоначального заполнения информационной базы и обновления ИБ. При первом запуске пустой базы запускаются обработчики, которые создают необходимые записи в таблицах базы данных и связывают их с предопределенными именами метаданных.
Если первый запуск был выполнен с ошибкой, фоновые задания не завершились или обновление информационной базы не прошло полностью, предопределенные элементы в таблицах ИБ могут не создаться.
В платформе 8.3 у объектов метаданных имеется свойство ОбновлениеПредопределенныхДанных. Если для базы данных или конкретного справочника установлено значение, отличное от автоматического обновления, платформа не создает записи в базе данных автоматически при реструктуризации.
Разберем по шагам основные способы решения этой проблемы.
/C ЗапуститьОбновлениеИнформационнойБазы
Это инициирует выполнение процедур БСП по заполнению первичных данных и созданию недостающих элементов.
УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы(ОбновлениеПредопределенныхДанных.Авто);
ИмяПредопределенныхДанных:
ОбъектСправочника = ЭлементСсылка.ПолучитьОбъект();
ОбъектСправочника.ИмяПредопределенныхДанных = "НазваниеПредопределенногоЭлемента";
ОбъектСправочника.Записать();
Таким образом, отсутствие предопределенных элементов в режиме пользователя чаще всего не является сбоем, а обусловлено работой функциональных опций и механизмов начального заполнения БСП.