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