При работе с устаревшими, но все еще активно используемыми конфигурациями на платформе 1С:Предприятие 7.7 разработчики часто сталкиваются с необходимостью выгрузить макет печатной формы (таблицу) во внешний файл формата .mxl. Это может потребоваться для переноса макета в другую информационную базу, создания внешней печатной формы или редактирования шаблона без изменения метаданных конфигурации. Однако при попытке сделать это стандартным способом через меню «Файл — Сохранить как» кнопка сохранения часто оказывается недоступной.
В этой статье мы подробно разберем, почему возникает эта проблема, рассмотрим классический метод копирования через буфер обмена со всеми его тонкостями, а также изучим альтернативные и продвинутые варианты извлечения макетов как из Конфигуратора, так и непосредственно из режима «1С:Предприятие».
Выясним причину, по которой платформа блокирует сохранение. В отличие от современной платформы 1С:Предприятие 8.х, где каждый макет является самостоятельным объектом метаданных и может быть сохранен в один клик, в версии 7.7 архитектура хранения данных устроена иначе. Здесь макет печатной формы (таблица) физически является неотъемлемой частью формы диалога конкретного документа, справочника или отчета. Вся эта информация упакована внутри конфигурационного файла 1Cv7.MD (или во внешних файлах отчетов .ert и форм .frm).
Когда мы открываем форму объекта в Конфигураторе и переходим на вкладку «Таблица», активным окном для операционной системы и самой платформы все равно остается редактор формы в целом. Команда главного меню «Файл — Сохранить как» в этот момент пытается примениться ко всему файлу описания формы, а не к конкретной табличной сетке, отображаемой на экране. Из-за этого несоответствия платформа превентивно блокирует возможность сохранения активной вкладки во внешний файл .mxl.
Рассмотрим самый простой и быстрый способ, который позволяет обойти ограничение платформы без использования стороннего софта. Идея заключается в переносе данных макета в новый пустой контейнер, который изначально создается как независимый табличный документ.
Разберем этот процесс по шагам:
Ctrl + A здесь не подойдет!Ctrl + C (или выберем «Правка — Копировать») для копирования макета в буфер обмена Windows.Ctrl + V (или выберем «Правка — Вставить»). Все данные из исходного макета перенесутся в новый документ.Проанализируем технические особенности копирования, несоблюдение которых может привести к повреждению структуры макета при переносе:
#Шапка, #Строка, #Подвал), которые используются в коде для формирования печатной формы методами ВывестиСекцию() или ПрисоединитьСекцию(), будут утеряны. Применение клика по пересечению шкал гарантирует перенос структуры секций.Бывают ситуации, когда вы открываете форму документа, но вкладка «Таблица» там отсутствует или содержит совершенно не тот макет. В 1С 7.7 печатные формы часто выносились в так называемые Общие таблицы, чтобы использовать их сразу в нескольких объектах конфигурации (например, формы Торг-12, Счёт-фактура или УПД).
Чтобы извлечь макет из общей таблицы, выполним следующие шаги:
Ctrl + C, вставим в новый созданный табличный документ и сохраним как файл .mxl.Если перед нами стоит задача массового извлечения макетов из старой конфигурации или если ручной метод по каким-то причинам дает сбои, лучшим решением станет использование специализированного инструмента — утилиты GComp.
GComp — это внешняя консольная утилита, разработанная сообществом для декомпиляции (разборки) структуры файла метаданных 1Cv7.MD на текстовые файлы и отдельные ресурсы.
Проанализируем процесс работы с утилитой:
1Cv7.MD в каталог с утилитой (предварительно обязательно сделаем резервную копию базы).
gcomp.exe -d -i 1Cv7.MD -o C:\UnpackedConfig\
C:\UnpackedConfig\ создастся структурированный каталог со всеми объектами метаданных..mxl. Их можно сразу открывать, редактировать или использовать как внешние файлы в коде.Иногда возникает необходимость сохранить печатную форму в файл прямо из режима пользователя (при работе в «1С:Предприятие»), но разработчик конфигурации программно заблокировал эту возможность. Посмотрим, как это выглядит на уровне программного кода:
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Макет");
// Заполнение таб части...
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.Показать("Печать документа");
При использовании методов ТолькоПросмотр(1) и обнулении опций сетки и колонок через команду Опции(0,0,0,0) главное меню «Файл — Сохранить» и кнопка сохранения на панели инструментов полностью блокируются для пользователя.
Выясним, как обойти эту защиту и сохранить сформированный документ в формат .mxl:
Ctrl + Shift + R (в некоторых релизах платформы или при использовании альтернативных раскладок клавиатуры может сработать сочетание Ctrl + R). Это действие принудительно переключит документ из режима просмотра в режим редактирования. На стандартной панели инструментов загорится иконка с изображением карандаша, а меню «Сохранить как» вернет свою активность..mxl, позволяя просматривать их структуру, редактировать ячейки, а также конвертировать устаревший формат 7.7 в современные форматы Excel (.xls), PDF или в формат MXL, используемый в платформе 8.х.Используя предложенные методики, мы можем гибко работать со структурой печатных форм старых конфигураций, легко выгружая любые необходимые шаблоны для дальнейшей разработки и кастомизации.