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