Как отредактировать макет в расширении 1С, если открываются только свойства

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

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

Выясним причину проблемы

Проанализируем ситуацию: почему платформа ведет себя подобным образом? Чаще всего это связано с особенностями работы механизма расширений в конкретных версиях платформы (особенно это было актуально до версии 8.3.15) или с некорректным «захватом» объекта. Когда мы просто переносим макет в расширение, связь между ним и метаданными может нарушиться, и конфигуратор перестает воспринимать его как редактируемый табличный документ MXL. Также это может происходить, если тип макета в расширении не определился автоматически.

Способ 1: Передобавление и очистка кэша

Рассмотрим самый простой, «механический» способ, который помогает в большинстве случаев. Если макет «завис» в состоянии просмотра свойств, выполним следующие шаги:

  1. Полностью удалим макет из расширения.
  2. Выполним команду «Обновить конфигурацию базы данных» (F7) для расширения.
  3. В основной конфигурации найдем нужный макет, нажмем на него правой кнопкой мыши и выберем команду «Добавить в расширение».
  4. Если это не помогло, попробуем не просто добавлять, а создать в расширении новый макет с тем же типом (например, Табличный документ) и вручную скопировать в него содержимое.

Способ 2: Метод ручного копирования содержимого

Посмотрим на ситуацию, когда стандартное добавление не срабатывает. В этом случае мы можем прибегнуть к «ручному» переносу данных. Это гарантирует, что структура макета будет корректно воспринята расширением.

Разберем по шагам:

  1. Создадим в расширении новый пустой макет (тип — Табличный документ).
  2. Откроем оригинальный макет в основной конфигурации.
  3. Выделим все ячейки макета. Для этого удобно нажать на «перекрестие» (пустой квадрат на пересечении заголовков строк и колонок в левом верхнем углу).
  4. Скопируем содержимое (Ctrl+C).
  5. Перейдем в созданный макет в расширении и вставим данные (Ctrl+V).
  6. Важно: Проверим свойства областей. Иногда при копировании могут «слететь» имена именованных областей, которые используются в коде для формирования печатной формы.

Способ 3: Программная подмена макета через механизм &Вместо

Проанализируем более продвинутый и «чистый» с точки зрения разработки подход. Вместо того чтобы пытаться заставить платформу использовать измененный стандартный макет, мы можем создать свой собственный макет с уникальным именем и программно направить печать на него.

Это решение избавляет нас от проблем при обновлении основной конфигурации, так как мы не меняем типовой объект, а дополняем его. Рассмотрим пример кода в модуле менеджера объекта (например, документа или обработки):


&Вместо("СформироватьПечатнуюФорму")
Функция ПФ_СформироватьПечатнуюФорму_Кастом(ПараметрыПечати, Объекты)
    // Мы перехватываем управление и указываем путь к нашему макету в расширении
    Макет = УправлениеПечатью.МакетДанных("Документ.СчетНаОплатуПокупателю.ПФ_MXL_МойМакет");
    
    // Далее идет стандартная или измененная логика формирования документа
    // ...
КонецФункции

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

Иерархия и приоритеты макетов

Важно понимать, как 1С выбирает, какой макет вывести на экран. Выясним приоритетность, чтобы не искать ошибку там, где её нет:

  1. Пользовательские макеты: Это изменения, внесенные пользователем прямо в режиме «Предприятие» (Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм). Они имеют высший приоритет. Если бухгалтер изменил макет там, то ваши правки в расширении или конфигурации просто не будут видны.
  2. Макеты расширений: Если пользовательских макетов нет, система ищет макет в активных расширениях.
  3. Макеты конфигурации: Это стандартные макеты, предусмотренные разработчиком вендора.

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

Особенности работы со схемами компоновки данных (СКД)

Если ваш макет — это не таблица MXL, а СКД (часто используется в отчетах), будьте предельно осторожны. При добавлении СКД в расширение платформа полностью игнорирует оригинал. Если после обновления основной конфигурации в отчете добавились новые поля или изменились связи в запросе, ваше расширение со старой схемой может вызвать ошибку или выдавать неверные данные. В таких случаях рекомендуется не заменять СКД целиком, а программно модифицировать нужные части схемы при компоновке результата.

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

← На главную