Загрузка макета из файла в конфигурацию и в рабочую базу 1С 8.3
Содержание
Загрузить макет в 1С можно тремя путями: в Конфигураторе через сам объект макета, через буфер обмена в редакторе табличного документа или в режиме Предприятия — через список Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм. Какой выбрать, зависит от двух вещей: где должен жить макет (в конфигурации или в данных базы) и стоит ли конфигурация на поддержке.
Если вам прислали готовый файл .mxl или .docx и нужно, чтобы печатная форма стала выглядеть по-новому, чаще всего не нужен даже Конфигуратор. Если же вы дорабатываете конфигурацию или внешнюю обработку
— работаете в Конфигураторе. Ниже оба сценария по шагам, плюс загрузка макета программно и разбор ошибок.
Подготовка файла: какие форматы макетов понимает 1С
Макет в 1С — это не один тип файла. При создании макета платформа просит выбрать его вид, и от вида зависит, что вообще можно загрузить.
| Вид макета | Что загружают | Типичное применение |
|---|---|---|
| Табличный документ | .mxl, а также .xls/.xlsx после открытия и пересохранения в 1С | печатные формы, шаблоны загрузки |
| Двоичные данные | любой файл: .docx, .odt, .xlsx, .zip, картинка | шаблоны Word, вложенные файлы, библиотеки |
| Текстовый документ | .txt | шаблоны писем, SQL-тексты, настройки |
| HTML-документ | .htm, .html | справочные тексты, формы с HTML |
| Схема компоновки данных | создаётся в редакторе СКД | отчёты |
Перед загрузкой проверьте файл:
- 📄 Кодировка текстовых файлов — UTF-8 или Windows-1251. Если кириллица после загрузки превратилась в «кракозябры», файл сохранён в другой кодировке.
- 📐 Excel-файл лучше заранее открыть в 1С (
Файл → Открытьв Конфигураторе) и сохранить как.mxl. Так вы увидите, что ушло при конвертации: объединения ячеек, шрифты, ширина колонок. - 🏷️ Именованные области. Если макет печатной формы, код ищет в нём области по именам (
Шапка,Строка,Подвал). Новый файл должен содержать те же имена, иначе печать упадёт. - 🔣 Параметры ячеек. В табличных макетах ячейки с данными заполнены как «Параметр» (например,
Номер,Контрагент). Простой текст вместо параметра код не заполнит.
Самый надёжный способ подготовить новый макет печатной формы — сначала выгрузить текущий, отредактировать копию и загрузить обратно. Имена областей и параметров тогда гарантированно совпадут.
Где найти макет в дереве конфигурации
В Конфигураторе макеты лежат в двух местах.
- Общие макеты — ветка
Общие → Макеты. Это макеты, доступные из любого модуля черезПолучитьОбщийМакет("Имя"). - Макеты конкретного объекта — раскройте документ, справочник, обработку или отчёт в дереве, внутри будет ветка
Макеты. Например,Документы → РеализацияТоваровУслуг → Макеты.
Быстрее всего найти нужный макет поиском по дереву: встаньте в окно конфигурации и начните набирать имя — платформа подсветит совпадение. Ещё вариант — Правка → Найти (Ctrl+F) с областью поиска по всей конфигурации, если знаете кусок имени макета из кода (ПолучитьМакет("ПФ_MXL_...")).
Чтобы понять, какой именно макет использует печатная форма, откройте модуль менеджера объекта и найдите в нём вызов ПолучитьМакет или УправлениеПечатью.МакетПечатнойФормы. В типовых конфигурациях на БСП имя передаётся строкой вида "Документ.РеализацияТоваровУслуг.ПФ_MXL_Накладная" — последняя часть и есть имя макета.
Если объект на поддержке без возможности изменения, макет откроется только для чтения. Как с этим быть — в разделе про ошибки.
Загрузка макета через Конфигуратор: пошагово
Здесь порядок зависит от вида макета.
Макет вида «Двоичные данные» (Word, архивы, картинки)
- Найдите макет в дереве конфигурации.
- Откройте контекстное меню (правая кнопка мыши) и выберите команду загрузки макета из файла. Рядом стоит парная команда сохранения в файл — ею удобно сначала сделать резервную копию.
- Укажите файл на диске и подтвердите замену.
- Сохраните конфигурацию и обновите конфигурацию базы данных:
Конфигурация → Обновить конфигурацию базы данных(F7).
Новый макет такого вида создаётся иначе: правой кнопкой по ветке Макеты → Добавить, в конструкторе выберите тип «Двоичные данные» — платформа сразу предложит указать файл.
Макет вида «Табличный документ» (.mxl)
Табличный макет удобнее менять целиком через открытие файла:
- Откройте файл
.mxlв Конфигураторе:Файл → Открыть. Он откроется в отдельном окне редактора. - Двойным щелчком откройте макет в дереве конфигурации — это второе окно.
- Перенесите содержимое через буфер обмена (подробно — в следующем разделе).
- Нажмите F7, чтобы обновить конфигурацию базы данных.
Если нужен новый табличный макет, при добавлении выберите тип «Табличный документ», а затем заполните его так же — копированием из открытого файла.
Перед заменой макета в рабочей конфигурации сохраните старую версию в файл. Откатить изменения в макете через «Отменить» после сохранения конфигурации уже не получится.
Перенос макета через буфер обмена в редакторе
Этот способ выручает, когда нужно перенести не весь макет, а часть: одну область, шапку, строку таблицы. И когда файл пришёл в Excel.
- Откройте файл-источник через
Файл → Открыть(Конфигуратор понимает.mxlи.xls/.xlsx). - Выделите нужные строки целиком — щелчком по номерам строк слева. Для всего макета нажмите Ctrl+A.
- Скопируйте Ctrl+C.
- Перейдите в макет конфигурации, встаньте в первую ячейку (R1C1) или в начало нужной области.
- Вставьте Ctrl+V.
- Проверьте имена областей: выделите строки и посмотрите, отображается ли имя слева от номеров. Список имён доступен в меню
Таблица → Имена.
Почему выделять строки целиком, а не диапазон ячеек: при копировании строк переносятся высота строк и привязанные к ним имена областей. При копировании прямоугольника ячеек часто теряется разметка, и имена приходится назначать заново.
Если код обращается к областям «Строка|Колонка» (пересечение горизонтальной и вертикальной областей), проверьте и вертикальные имена — их выделяют по заголовкам колонок.
После вставки сравните ширину колонок: при переносе из Excel 1С пересчитывает её по своей сетке, и таблица может «уехать» по ширине страницы. Откройте предпросмотр печати в Предприятии и поправьте ширину вручную.
Загрузка макета в режиме Предприятия без Конфигуратора
В типовых конфигурациях на Библиотеке стандартных подсистем (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) есть механизм пользовательских макетов. Изменённый макет хранится в данных базы, а не в конфигурации. Плюсы очевидны: не нужно снимать с поддержки, не мешает обновлению, можно откатить одной командой.
Путь одинаков в основных конфигурациях:
| Конфигурация | Где список макетов |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм |
| ЗУП 3.1 | Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм |
| УТ 11, КА 2, ERP | НСИ и администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм |
Порядок действий:
- Найдите макет в списке — поиском по названию печатной формы (например, «Счет на оплату»).
- Откройте его на изменение. Табличный макет откроется во встроенном редакторе, а макет Word или OpenDocument предложит выгрузку в файл и открытие во внешней программе.
- Внесите правки или замените содержимое: для табличного макета — копированием из открытого
.mxl(Файл → Открытьв главном меню Предприятия), для офисного — правкой файла и загрузкой обратно. - Сохраните. В списке у макета появится отметка, что используется изменённый вариант.
Вернуть всё как было можно командой использования стандартного макета в том же списке. Пользовательская версия при этом не удаляется сразу, её можно включить снова.
После обновления конфигурации поставщик мог поменять стандартный макет: добавить поле, переименовать область. Изменённый вами макет об этом не знает. Если после обновления печать падает с ошибкой — первым делом временно включите стандартный макет.
Внешняя печатная форма как альтернатива
Если нужна не правка существующей формы, а новая, удобнее сделать внешнюю печатную форму (файл .epf с макетом внутри) и подключить её через Дополнительные отчеты и обработки в том же разделе администрирования. Макет при этом загружается в Конфигураторе внутрь обработки — так же, как описано выше, только в дереве внешней обработки.
Программная загрузка макета из файла
Бывает, что макет нужно подхватывать кодом: шаблон для загрузки данных, форма, которую пользователь меняет сам, или обработка, читающая чужие .mxl. Табличный документ умеет читать файл методом Прочитать() — но только на стороне, где файл физически лежит. В клиент-серверном режиме файл с компьютера пользователя сначала передают на сервер.
Пример для управляемой формы: пользователь выбирает файл, он уходит на сервер, там читается в табличный документ.
&НаКлиенте
Процедура ЗагрузитьМакет(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДопПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
Расширение = НРег(Прав(ВыбранноеИмяФайла, 4));
ЗагрузитьНаСервере(Адрес, Расширение);
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьНаСервере(Адрес, Расширение)
Данные = ПолучитьИзВременногоХранилища(Адрес);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(СтрЗаменить(Расширение, ".", ""));
Данные.Записать(ИмяВременногоФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяВременногоФайла);
ТабличныйДокумент = ТабДок; // реквизит формы типа ТабличныйДокумент
УдалитьФайлы(ИмяВременногоФайла);
КонецПроцедуры
Что важно в этом коде:
- 🗂️ Расширение временного файла должно совпадать с исходным. По нему
Прочитать()определяет формат:.mxlили.xlsx. - 🧹
УдалитьФайлыв конце — иначе временные файлы копятся на сервере. - 🔒 Код работает и в веб-клиенте: используется асинхронный
НачатьПомещениеФайла, а не модальные диалоги.
Если макет нужно не просто показать, а сохранить для повторного использования, двоичные данные файла кладут в реквизит типа ХранилищеЗначения справочника или регистра. Изменить макет самой конфигурации из режима Предприятия кодом нельзя — конфигурация меняется только через Конфигуратор или расширение.
Макет внутри внешней обработки
Во внешней обработке свой макет получают так: ЭтотОбъект.ПолучитьМакет("ИмяМакета") в модуле объекта. Если обработку открыли из файла, а макет внутри неё обновили в Конфигураторе, пересохраните .epf и заново подключите или откройте её — иначе в базе останется старая версия.
Ошибки при загрузке макета и как их снять
Большинство проблем делятся на три группы: макет не даёт себя изменить, файл не читается, печать после загрузки ломается.
Конфигурация → Поддержка → Настройка поддержки. Последний вариант усложняет будущие обновления.Файл → Открыть.Таблица → Имена со строками в модуле менеджера. Восстановите отсутствующее имя или верните стандартный макет.Обновление конфигурации базы данных (F7) после загрузки макета обычно проходит без монопольного режима — меняются только метаданные. Но если вместе с макетом вы меняли реквизиты или табличные части, понадобится монопольный доступ: предупредите пользователей, что их сеансы будут завершены, и делайте это вне рабочего времени.
Частые вопросы
Можно ли загрузить макет из Excel без конвертации в mxl?
Сохранится ли загруженный макет после обновления типовой конфигурации?
Можно ли поменять макет через расширение конфигурации?
Как перенести изменённые макеты в другую базу?
.cf.