Почему не отображается макет в списке пользовательских макетов и как это исправить

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При работе с типовыми конфигурациями «1С», особенно после масштабных обновлений, пользователи и программисты часто сталкиваются с «мистическим» исчезновением макетов. Ситуация выглядит следующим образом: макет был отредактирован ранее, изменения сохранены, но в списке Пользовательские макеты печати нужная строка отсутствует. При этом физически данные в базе есть — их можно найти через консоль запросов в соответствующем регистре сведений. Разберем подробно, почему так происходит и как вернуть возможность редактирования форм.

Проверка наличия макета в системе через отладку и запросы

Прежде чем приступать к исправлению интерфейсных ошибок, проанализируем ситуацию на уровне данных. Если макет не виден в общем списке, выясним, существует ли запись в регистре ПользовательскиеМакетыПечати. Для этого мы можем воспользоваться консолью запросов или программным кодом:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ПользовательскиеМакетыПечати.Объект,
    |	ПользовательскиеМакетыПечати.ИмяМакета,
    |	ПользовательскиеМакетыПечати.Макет
    |ИЗ
    |	РегистрСведений.ПользовательскиеМакетыПечати КАК ПользовательскиеМакетыПечати
    |ГДЕ
    |	ПользовательскиеМакетыПечати.ИмяМакета ПОДОБНО ""%Акт%""";

РезультатЗапроса = Запрос.Выполнить();

Если запрос возвращает данные, значит, макет физически присутствует в ХранилищеЗначения, но механизмы Библиотеки стандартных подсистем (БСП) по какой-то причине игнорируют его при построении списка в интерфейсе. Рассмотрим основные причины такого поведения.

Способ 1. Сброс настроек через сформированную печатную форму

Наиболее быстрый и действенный способ «проявить» макет в списке — это принудительный сброс изменений непосредственно из документа. Этот метод помогает, когда кэш макетов в сеансе пользователя работает некорректно. Выполним следующие действия:

  1. Откроем документ (например, Реализация (акт, накладная, УПД)).
  2. Сформируем печатную форму, макет которой «потерялся» (например, Акт об оказании услуг).
  3. В окне предварительного просмотра нажмем кнопку Еще.
  4. Выберем пункт Изменить макет.
  5. В открывшемся окне редактора снова нажмем Еще и выберем команду Удалить все изменения макета.

После этой операции система должна вернуться к использованию типового макета из метаданных, и он снова станет доступен для выбора и редактирования в общем списке пользовательских макетов.

Способ 2. Устранение проблем с фильтрами и поиском в списке

Иногда причина оказывается банальнее, чем кажется на первый взгляд. В типовой форме списка макетов установлены жесткие отборы по владельцу (документу). Проанализируем настройки списка:

Попробуем отключить отбор по наименованию документа. Бывают случаи, когда макет АктОбОказанииУслуг привязан к общему менеджеру печати, а не к конкретному документу РеализацияТоваровУслуг. В форме поиска введите просто часть названия макета, игнорируя выбор объекта-владельца. Если макет появился, значит, в метаданных произошла перепривязка владельца макета в новом релизе.

Способ 3. Проверка прав доступа и функциональных опций

Если в меню Еще печатной формы полностью исчезли команды Изменить макет или Перейти к макетам, это сигнализирует о проблемах с правами доступа или настройками программы. Проверим следующие моменты:

Способ 4. Программная корректировка в модуле менеджера

Рассмотрим ситуацию, когда макет относится к отчету или документу, в котором механизм печати переопределен. Для того чтобы макеты корректно «подхватывались» БСП, в модуле менеджера объекта должна присутствовать процедура ДобавитьКомандыПечати. Хотя она отвечает за список кнопок печати, ее некорректная работа может влиять на дерево доступных объектов в списке макетов.

Если вы разрабатываете собственное решение, убедитесь, что структура метаданных совпадает с тем, что ожидает БСП:


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    // Код регистрации команд печати
    // Убедитесь, что ИмяМакета в точности совпадает с именем в дереве метаданных
КонецПроцедуры

Способ 5. Очистка кэша и обновление вспомогательных данных

Проанализируем техническую сторону: БСП хранит информацию о соответствии макетов и объектов в специальных внутренних таблицах (индексах). После обновления эти данные могут устареть. Выясним, как их обновить:

  1. Запустите информационную базу с параметром /ClearCache.
  2. Используйте обработку Обновление вспомогательных данных (она входит в состав БСП). Это заставит систему заново просканировать метаданные и сопоставить их с записями в регистре ПользовательскиеМакетыПечати.
  3. В крайнем случае, если UUID макета в конфигурации изменился (например, макет был удален и создан заново с тем же именем), старая запись в регистре станет «битой». В такой ситуации поможет только программное пересоздание записи с новым идентификатором через НаборЗаписей.

Подводя итог, можно сказать, что «исчезновение» макета чаще всего связано с тем, что интерфейс 1С не находит связки между объектом метаданных и записью в регистре из-за изменившихся внутренних идентификаторов или некорректных фильтров. Применяя вышеописанные шаги, мы сможем восстановить работоспособность системы без обращения к разработчику конфигурации.

← На главную