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

Важно понимать, что метод извлечения зависит от версии платформы 1С (8.3, 8.2 или более ранние), типа конфигурации (типовая, отраслевая или самописная) и прав доступа пользователя. Например, в 1С:Бухгалтерия 3.0 формы хранятся иначе, чем в 1С:Управление торговлей 11. Мы укажем нюансы для каждой ситуации, чтобы вы могли выбрать оптимальный путь без риска повредить данные.

Если вы не программист, не пугайтесь терминов вроде «внешняя обработка» или «XDTO-пакет» — для большинства задач хватит первых трёх методов. А для разработчиков мы подготовили раздел с API-решениями и примерами кода на встроенном языке .

📊 С какой целью вы извлекаете печатную форму из 1С?
Перенос в другую базу
Резервное копирование
Модификация формы
Интеграция с внешней системой
Другое

1. Извлечение через Конфигуратор (стандартный метод)

Самый надёжный и универсальный способ — использовать встроенный Конфигуратор 1С. Он подходит для всех версий платформы и не требует дополнительных инструментов. Главное условие: у вас должны быть права администратора или роль с доступом к редактированию конфигурации.

Чтобы вытащить форму:

  1. Откройте базу в режиме Конфигуратор (для этого при запуске 1С удерживайте Shift или выберите пункт в меню запуска).
  2. В дереве объектов найдите раздел Общие → Печатные формы (в некоторых конфигурациях путь может отличаться, например, Документы → [ТипДокумента] → Печатные формы).
  3. Выделите нужную форму и нажмите правой кнопкой мыши → Сохранить как... или Копировать (в зависимости от версии).
  4. Укажите путь для сохранения файла (обычно это .epf для внешних печатных форм или .ert для макетов).

⚠️ Внимание: В типовых конфигурациях (например, 1С:Зарплата и Управление Персоналом) некоторые формы могут быть заблокированы от редактирования. В этом случае их придётся сначала снять с поддержки (через Конфигурация → Поддержка → Настройка поддержки), что может повлиять на обновления.

Убедитесь, что база не используется другими пользователями|Сделайте резервную копию (через Администрирование → Выгрузить информационную базу)|Проверьте права доступа (роль "Администратор" или "Конфигуратор")|Закройте все сеансы 1С на сервере (если работаете в клиент-серверном варианте)-->

2. Экспорт через внешние обработки и отчёты

Если печатная форма привязана к внешней обработке или отчёту, её можно извлечь без глубокого вмешательства в конфигурацию. Этот метод полезен, когда форма была добавлена как дополнение (например, через 1С:Апдейт или сторонние модули).

Инструкция:

  • 📁 Откройте раздел Файл → Открыть... в 1С и выберите внешнюю обработку (файл с расширением .epf или .erf).
  • 🔍 В структуре обработки найдите вкладку Макеты — там хранятся печатные формы.
  • 💾 Нажмите на макет правой кнопкой → Сохранить как... и выберите формат (обычно .mxl или .xlsx для табличных форм).

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

🔹 Ограничение: не все формы хранятся во внешних обработках — типовые (например, Торг-12 или Счёт-фактура) обычно встроены в конфигурацию.

💡

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

3. Использование обмена данными (XDTO, XML)

Для интеграции с другими системами (например, 1С:Документооборот или BI-системы) печатные формы часто экспортируют в универсальных форматах: XML, XDTO или JSON. Этот метод требует знания структуры данных, но позволяет автоматизировать извлечение.

Пример кода для выгрузки формы в XML:


// Получаем макет печатной формы по имени

Макет = ПечатныеФормы.[ИмяФормы].ПолучитьМакет("Основной");

// Сохраняем в XML

Макет.ЗаписатьXML(КаталогТемпа + "Форма.xml");

Для работы с XDTO потребуется:

  1. Создать XDTO-пакет в конфигураторе (Общие → XDTO-пакеты).
  2. Описать структуру печатной формы (или импортировать её из XSD-схемы).
  3. Использовать метод ЗаписатьXDTO() для экспорта.
Формат Преимущества Недостатки Когда использовать
XML Универсален, поддерживается всеми системами Большой размер файла, сложно читать Обмен с внешними системами
XDTO Строгая типизация, валидация данных Требует настройки пакета Интеграция с 1С:Документооборот
JSON Компактен, легко парсится в веб-приложениях Не все версии 1С поддерживают API для мобильных приложений

⚠️ Внимание: При экспорте в XML/XDTO теряются некоторые визуальные настройки формы (например, шрифты или выравнивание). Для точного переноса дизайна используйте методы из раздела 1 или 4.

4. Программное извлечение через API 1С

Для разработчиков, которые нуждаются в автоматизации или массовом извлечении форм, подойдёт работа с API 1С через встроенный язык. Этот метод позволяет получить форму не только в виде файла, но и как объект для дальнейшей обработки.

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

// Получаем список всех печатных форм для документа "РеализацияТоваровУслуг"

ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();

СписокФорм = ДокументОбъект.ПечатныеФормы();

// Проходим по всем формам и сохраняем их макеты

Для Каждого Форма Из СписокФорм Цикл

Макет = Форма.ПолучитьМакет();

Макет.Записать(КаталогТемпа + Форма.Имя + ".mxl");

КонецЦикла;

Более продвинутый вариант — использование HTTP-сервисов для удалённого извлечения:

// Публикуем HTTP-сервис для доступа к формам

&НаСервере

Функция ПолучитьПечатнуюФорму(ИмяФормы)

Возврат ПечатныеФормы[ИмяФормы].ПолучитьМакет().ПолучитьДвоичныеДанные();

КонецФункции

🔹 Где это применимо:

  • 🤖 Автоматизированное резервное копирование форм.
  • 🔄 Синхронизация форм между несколькими базами.
  • 🌐 Интеграция с внешними сервисами (например, печать через облачный принтер).
Как обойти ограничения прав при программном извлечении?

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

5. Альтернативные методы: через отчёты и журналы

Иногда печатные формы «прячутся» в неочевидных местах, например:

  • 📊 В отчётах (раздел Отчёты → [ИмяОтчёта] → Настройки → Печатные формы).
  • 📋 В журналах документов (правая кнопка на документе → Печать → Настроить форму).
  • 📎 В дополнительных обработках (например, Универсальный отчёт или Групповая обработка документов).

Пример извлечения через Универсальный отчёт:

  1. Откройте Отчёты → Универсальный отчёт.
  2. В настройках выберите источник данных (например, документ Счёт-фактура).
  3. На вкладке Печатные формы найдите нужную форму и нажмите Сохранить как шаблон.

⚠️ Внимание: Формы, извлечённые через отчёты, могут содержать только данные макета, без логики заполнения. Для полного переноса потребуется также скопировать модуль формы (если он есть).

Типичные ошибки и как их избежать

Даже опытные пользователи 1С сталкиваются с проблемами при извлечении печатных форм. Вот самые распространённые ошибки и способы их решения:

Ошибка Причина Решение
Ошибка доступа: недостаточно прав У пользователя нет роли Администратор или Конфигуратор Запросите права у администратора или используйте метод 2 (внешние обработки)
Форма не найдена в дереве объектов Форма является встроенной (например, в типовых конфигурациях) Попробуйте извлечь через Все функции (Alt+F12) или метод 5 (отчёты)
Не удалось сохранить макет: файл используется Файл заблокирован другой программой или антивирусом Закройте все программы, временно отключите антивирус, повторите попытку
Ошибка сериализации XDTO Несоответствие структуры данных и XDTO-пакета Проверьте соответствие типов в пакете и макете формы

🔹 Совет для типовых конфигураций: Если форма не редактируется даже после снятия с поддержки, проверьте, не является ли она частью расширения конфигурации. В этом случае её нужно извлекать через Расширения → [ИмяРасширения] → Печатные формы.

🔹 Проблема с кодировкой: При экспорте в XML русские символы могут отображаться как русский. Решение: укажите кодировку UTF-8 при сохранении файла.

Оптимизация извлечённых печатных форм

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

  • 🔧 Редактирование в Конфигураторе: Откройте сохранённый файл .epf или .ert и внесите изменения в макет (например, добавьте логотип компании или измените шрифты).
  • 📑 Конвертация форматов: Используйте 1С:Конвертация данных для перевода формы из одного типа в другой (например, MXL → XLSX).
  • 🤖 Автоматизация заполнения: Напишите скрипт на встроенном языке, который будет динамически подставлять данные в форму (например, текущую дату или реквизиты контрагента).

🔹 Пример оптимизации: Если вы переносите форму Торг-12 в другую базу, проверьте, совпадают ли реквизиты документов (например, поля Контрагент или Номенклатура). При несовпадении форма не будет корректно заполняться.

⚠️ Внимание: При модификации форм для регламентированной отчётности (например, счёт-фактура или УПД) убедитесь, что изменения не нарушают требования законодательства. Например, удаление обязательных реквизитов может привести к штрафам от ФНС.

💡

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

FAQ: Частые вопросы по извлечению печатных форм

Можно ли извлечь печатную форму без прав администратора?

Да, если форма хранится во внешней обработке или дополнительном отчёте. Используйте метод 2 из этой статьи. Также некоторые формы можно сохранить через Печать → Сохранить как... в пользовательском режиме (но это зависит от настроек конфигурации).

Как перенести печатную форму из 1С 8.2 в 1С 8.3?

Для этого:

  1. Извлеките форму в 8.2 через Конфигуратор (метод 1).
  2. Откройте её в 1С:Конвертация данных и преобразуйте в формат, совместимый с 8.3.
  3. В 8.3 импортируйте форму через Конфигуратор → Общие → Печатные формы → Загрузить из файла.

⚠️ Учтите, что в 8.3 изменилась структура некоторых объектов (например, ТабличныйДокумент), поэтому может потребоваться доработка кода формы.

Почему при экспорте в XML теряется форматирование?

Формат XML сохраняет данные и структуру, но не всегда сохраняет визуальные настройки (например, жирный шрифт или цвета). Для точного переноса дизайна:

  • Используйте формат .mxl (для макетов).
  • Экспортируйте форму вместе с модулем управления (если он есть).
  • Для сложных форм лучше использовать метод 1 (через Конфигуратор).
Как извлечь печатную форму из облачной 1С (1С:Fresh)?

В 1С:Fresh прямой доступ к Конфигуратору ограничен. Варианты:

  • 📤 Используйте внешние обработки (метод 2) — их можно загружать и выгружать через веб-интерфейс.
  • 🔄 Настройте обмен данными через 1С:ЭДО или REST API (если доступно в вашем тарифе).
  • 📧 Обратитесь в поддержку 1С:Fresh с запросом на выгрузку конкретной формы.

⚠️ Учтите, что в облачных решениях некоторые формы могут быть заблокированы для редактирования.

Можно ли вернуть форму обратно после извлечения?

Да, для этого:

  1. Откройте Конфигуратор в режиме Предприятие.
  2. Перейдите в Общие → Печатные формы.
  3. Нажмите Загрузить из файла и выберите сохранённый ранее файл (.epf, .mxl и т.д.).

Если форма была модифицирована, перед загрузкой сделайте резервную копию текущей версии!