Как вытащить макет печатной формы из конфигуратора 1С 7.7 в файл mxl?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

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

Почему пункт меню «Сохранить как» заблокирован в Конфигураторе

Выясним причину, по которой платформа блокирует сохранение. В отличие от современной платформы 1С:Предприятие 8.х, где каждый макет является самостоятельным объектом метаданных и может быть сохранен в один клик, в версии 7.7 архитектура хранения данных устроена иначе. Здесь макет печатной формы (таблица) физически является неотъемлемой частью формы диалога конкретного документа, справочника или отчета. Вся эта информация упакована внутри конфигурационного файла 1Cv7.MD (или во внешних файлах отчетов .ert и форм .frm).

Когда мы открываем форму объекта в Конфигураторе и переходим на вкладку «Таблица», активным окном для операционной системы и самой платформы все равно остается редактор формы в целом. Команда главного меню «Файл — Сохранить как» в этот момент пытается примениться ко всему файлу описания формы, а не к конкретной табличной сетке, отображаемой на экране. Из-за этого несоответствия платформа превентивно блокирует возможность сохранения активной вкладки во внешний файл .mxl.

Способ 1. Копирование через буфер обмена в новый табличный документ

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

Разберем этот процесс по шагам:

  1. Откроем в Конфигураторе форму документа или отчета, содержащую нужный макет, и перейдем на вкладку «Таблица».
  2. В главном меню платформы выберем пункт «Файл», затем нажмем «Новый».
  3. В появившемся окне выбора типа создаваемого документа выберем пункт «Табличный документ» (в некоторых локализациях он может называться просто «Таблица») и нажмем «ОК». Перед нами откроется абсолютно чистое поле таблицы.
  4. Вернемся в окно нашего исходного макета. Чтобы полностью перенести структуру макета, нам нужно выделить его целиком. Внимание: обычное выделение ячеек протягиванием мыши или сочетанием клавиш Ctrl + A здесь не подойдет!
  5. Найдем серый прямоугольник на стыке горизонтальной и вертикальной линеек (координатных шкал строк и колонок) в левом верхнем углу таблицы. Кликнем по нему левой кнопкой мыши. Вся таблица окрасится в черный цвет — это означает, что мы выделили документ полностью вместе со служебной разметкой.
  6. Нажмем сочетание клавиш Ctrl + C (или выберем «Правка — Копировать») для копирования макета в буфер обмена Windows.
  7. Перейдем в окно созданного ранее пустого табличного документа.
  8. Снова кликнем по серому прямоугольнику в левом верхнем углу новой пустой таблицы, чтобы сфокусировать и подготовить структуру для вставки.
  9. Нажмем сочетание клавиш Ctrl + V (или выберем «Правка — Вставить»). Все данные из исходного макета перенесутся в новый документ.
  10. Теперь окно нового документа содержит наш макет, но при этом является самостоятельным файлом. Перейдем в меню «Файл — Сохранить как...». Вы увидите, что кнопка сохранения стала активной. Выберем тип файла «Табличный документ (*.mxl)», укажем имя и сохраним макет на жесткий диск.

Важные нюансы и «подводные камни» метода буфера обмена

Проанализируем технические особенности копирования, несоблюдение которых может привести к повреждению структуры макета при переносе:

Способ 2. Извлечение макетов из «Общих таблиц»

Бывают ситуации, когда вы открываете форму документа, но вкладка «Таблица» там отсутствует или содержит совершенно не тот макет. В 1С 7.7 печатные формы часто выносились в так называемые Общие таблицы, чтобы использовать их сразу в нескольких объектах конфигурации (например, формы Торг-12, Счёт-фактура или УПД).

Чтобы извлечь макет из общей таблицы, выполним следующие шаги:

  1. В Конфигураторе откроем дерево метаданных (окно «Конфигурация»).
  2. Кликнем правой кнопкой мыши по самому верхнему элементу дерева (корневому элементу с названием конфигурации).
  3. В контекстном меню выберем пункт «Общие таблицы».
  4. В открывшемся списке найдем нужную таблицу и дважды кликнем по ней для открытия.
  5. Применим уже знакомый нам метод: кликнем в левый верхний угол общей таблицы, скопируем всё содержимое через Ctrl + C, вставим в новый созданный табличный документ и сохраним как файл .mxl.

Способ 3. Декомпиляция MD-файла с помощью утилиты GComp

Если перед нами стоит задача массового извлечения макетов из старой конфигурации или если ручной метод по каким-то причинам дает сбои, лучшим решением станет использование специализированного инструмента — утилиты GComp.

GComp — это внешняя консольная утилита, разработанная сообществом для декомпиляции (разборки) структуры файла метаданных 1Cv7.MD на текстовые файлы и отдельные ресурсы.

Проанализируем процесс работы с утилитой:

  1. Скачаем утилиту GComp и распакуем ее файлы в отдельный каталог на диске.
  2. Скопируем файл конфигурации нашей базы 1Cv7.MD в каталог с утилитой (предварительно обязательно сделаем резервную копию базы).
  3. Запустим процесс декомпиляции через командную строку Windows. Команда выглядит следующим образом: gcomp.exe -d -i 1Cv7.MD -o C:\UnpackedConfig\
  4. Дождемся завершения работы утилиты. В целевой папке C:\UnpackedConfig\ создастся структурированный каталог со всеми объектами метаданных.
  5. Перейдем в подкаталог, соответствующий документам или отчетам. В папке каждого конкретного объекта мы обнаружим файлы его форм. При этом встроенные макеты таблиц утилита автоматически извлечет и сохранит в виде чистых файлов с расширением .mxl. Их можно сразу открывать, редактировать или использовать как внешние файлы в коде.

Способ 4. Обход защиты «Только просмотр» в режиме «1С:Предприятие»

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


Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Макет");
// Заполнение таб части...
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.Показать("Печать документа");

При использовании методов ТолькоПросмотр(1) и обнулении опций сетки и колонок через команду Опции(0,0,0,0) главное меню «Файл — Сохранить» и кнопка сохранения на панели инструментов полностью блокируются для пользователя.

Выясним, как обойти эту защиту и сохранить сформированный документ в формат .mxl:

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

← На главную