Загрузка формы в конфигурацию 1С — способы переноса

· 9 мин

Содержание

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

Чаще всего вопрос появляется у разработчика, когда коллега прислал доработанную форму, а её нужно поставить в рабочую базу. Или когда форму случайно удалили и восстанавливают из копии. Инструмент один и тот же — Конфигуратор, а вот путь зависит от того, что именно у вас на руках.

Какой способ подойдёт в вашем случае — подскажет короткий выбор ниже.

Что именно вы переносите?

Разбираемся, что на самом деле нужно перенести

Прежде чем что-то грузить, определите тип задачи — от этого зависит набор шагов.

  • 🧩 Форма объекта (форма списка, элемента, документа, обработки). Хранится внутри объекта конфигурации. Перенос — только через метаданные: XML-выгрузку, копирование или расширение.
  • 📄 Печатная форма / табличный документ (.mxl). Это не «форма» в терминах конфигурации, а табличный документ. Его открывают как файл или кладут в макет.
  • 🛠 Внешняя обработка или отчёт (.epf / .erf). Самостоятельный файл с собственной формой. Его не «загружают в дерево конфигурации» — его подключают и запускают.

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

Расширение файла подсказывает способ. .cf — полная конфигурация, .cfe — расширение, .epf/.erf — внешняя обработка и отчёт, .mxl — табличный документ, .xml — выгрузка объектов в файлы.

Чтобы не держать всё в голове, вот способы переноса рядом — что каждый умеет и когда он уместен.

СпособКогда подходитЧто переносит
Выгрузка/загрузка в файлы XMLПолный или частичный перенос метаданных между базамиОбъект вместе с его формой
Копирование в КонфигуратореОдин-два объекта, обе базы открыты рядомВыбранную форму или объект целиком
Расширение (.cfe)Доработка типовой формы без снятия с поддержкиДобавочную или заимствованную форму
Внешняя обработка (.epf/.erf)Форма нужна как отдельный инструментФорму внутри обработки или отчёта
Загрузка файла .mxlЭто печатная форма или табличный документТабличный документ (не форму объекта)

Готовим базу: копия, доступ и права

Любая загрузка метаданных меняет конфигурацию, поэтому подготовка одинакова для всех способов.

  1. Сделайте выгрузку базы в файл .dt (Администрирование → Выгрузить информационную базу) либо копию файловой базы целиком. Это ваш путь назад, если загрузка пройдёт неудачно.
  2. Убедитесь, что у вашей учётной записи есть права администратора и доступ к Конфигуратору. Без них меню изменения конфигурации будет недоступно.
  3. Сверьте версию платформы в источнике и приёмнике. Загрузить метаданные можно только в базу, где номер версии платформы не ниже версии, в которой выгрузка сделана. Иначе платформа откажется читать файлы.
  4. Запланируйте время, когда в базе нет пользователей: финальный шаг — обновление структуры — потребует монопольного доступа.

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

Перенос формы через выгрузку и загрузку XML

Это основной способ, когда форма нужна вместе с объектом из другой базы. В Конфигураторе конфигурация выгружается в набор XML-файлов, где каждый объект лежит в своей папке, а форма — в подпапке Ext/Form этого объекта.

В Конфигураторе источника:

  1. Откройте Конфигурация → Выгрузить конфигурацию в файлы….
  2. Укажите пустой каталог. Платформа разложит всю конфигурацию по папкам в формате XML.

В Конфигураторе приёмника:

  1. Откройте Конфигурация → Загрузить конфигурацию из файлов….
  2. Укажите тот же каталог. Можно загрузить всё или выбрать только нужные файлы объекта с формой.
  3. После загрузки обновите конфигурацию базы данных (см. раздел ниже).

Если обе базы под рукой, те же действия удобно выполнить из командной строки — например, в скрипте обновления:

1cv8 DESIGNER /F"D:\base_src" /N"Администратор" /P"пароль" /DumpConfigToFiles "D:\xml"
1cv8 DESIGNER /F"D:\base_dst" /N"Администратор" /P"пароль" /LoadConfigFromFiles "D:\xml"
1cv8 DESIGNER /F"D:\base_dst" /N"Администратор" /P"пароль" /UpdateDBCfg

Формат выгрузки в файлы удобен ещё и тем, что каждый объект лежит в отдельной папке. Можно загрузить не всю конфигурацию, а только папку нужного объекта — так в приёмник попадёт именно та форма, которую вы переносите, без лишних изменений. По той же причине этот формат кладут под систему контроля версий: видно, что именно поменялось в форме между версиями.

Не путайте выгрузку конфигурации с типовой обработкой «Выгрузка и загрузка данных XML». Эта обработка переносит данные (справочники, документы) между одинаковыми конфигурациями и форму не передаёт. Метаданные и формы живут только в выгрузке конфигурации.

Копирование формы между конфигурациями в Конфигураторе

Когда нужен один-два объекта, а обе базы можно открыть одновременно, проще обойтись без файлов.

  1. Откройте два окна Конфигуратора — для базы-источника и базы-приёмника.
  2. В дереве конфигурации источника найдите объект и раскройте его ветку Формы.
  3. Выделите нужную форму, нажмите Ctrl+C (или правой кнопкой → «Копировать»).
  4. Перейдите в приёмник, встаньте на ветку Формы нужного объекта и нажмите Ctrl+V.

Так переносится сама форма. Но форма обращается к реквизитам и командам своего объекта. Если в приёмнике таких реквизитов нет, в модуле формы появятся ошибки. Поэтому для полноценного переноса чаще копируют весь объект целиком — тогда реквизиты, макеты и модуль приедут вместе с формой.

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

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

Добавление или замена формы через расширение конфигурации

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

  1. Откройте Конфигурация → Расширения конфигурации.
  2. Добавьте новое расширение или выберите присланное. Если расширение пришло файлом, в окне расширений выполните Конфигурация → Загрузить конфигурацию из файла… и укажите .cfe.
  3. Чтобы доработать существующую форму, в расширении заимствуйте нужный объект и его форму, затем вносите изменения в копию внутри расширения.
  4. Закройте окно расширения и обновите конфигурацию базы данных.

Загрузка файла .cfe и обновление конфигурации базы данных — два разных шага. Пока вы не выполнили обновление, изменения формы в базе не появятся.

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

Загрузка табличного документа и макета из файла MXL

Если «формой» вы называете печатную форму в файле .mxl, это табличный документ, и грузится он иначе.

Просто посмотреть или распечатать файл . В режиме 1С:Предприятие откройте Файл → Открыть и выберите .mxl — документ откроется в отдельном окне.

Открыть табличный документ из кода:

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("D:\pechatnaya_forma.mxl");
ТабДок.Показать("Печатная форма");

Поместить содержимое в макет объекта. Макет типа «Табличный документ» редактируется прямо в Конфигураторе. Отдельной кнопки «импортировать MXL в макет» нет, поэтому содержимое переносят копированием: откройте .mxl как файл, выделите нужные области и вставьте их в макет объекта. После этого обновите конфигурацию базы данных.

Если печатная форма оформлена как внешняя — это уже не .mxl, а внешняя обработка .epf. Такой файл подключают через Администрирование → Печатные формы, отчёты и обработки → справочник дополнительных обработок, а не загружают в дерево конфигурации.

Пару слов про внешние обработки и отчёты отдельно, раз форма часто приходит именно в них. Разовый запуск: в 1С:Предприятии откройте Файл → Открыть и выберите .epf или .erf — для этого у пользователя должно быть право на открытие внешних обработок. Для постоянного использования обработку регистрируют в справочнике дополнительных отчётов и обработок: тогда её форма открывается из интерфейса, а файл хранится в базе и не теряется при переустановке на другом компьютере.

Обновление конфигурации базы данных и проверка результата

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

  1. Нажмите F7 или откройте Конфигурация → Обновить конфигурацию базы данных.
  2. Если менялась структура (добавлены реквизиты, таблицы), платформа покажет окно реорганизации — подтвердите.
  3. Запустите 1С:Предприятие и откройте тот объект, в который грузили форму.

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

После обновления проверьте три вещи: форма открывается без ошибок в модуле; на форме видны все нужные реквизиты и команды; форма доступна пользователю под его ролью (а не только администратору). Если форму видит админ, но не рядовой пользователь — дело в правах роли, а не в самой загрузке.

Типичные ошибки при загрузке формы

Разберём сбои, которые не очевидны из текста ошибки.

Диагностика: выберите симптом

Частые вопросы

Можно ли загрузить форму, не снимая базу с поддержки?
Да. Для этого сделайте расширение конфигурации и заимствуйте нужную форму в нём. Типовая конфигурация остаётся на поддержке и обновляется штатно.
Есть ли у формы отдельный файл, который можно загрузить в типовую базу?
Отдельного «файла формы» для готовой базы нет. При выгрузке конфигурации в файлы форма сохраняется как XML внутри папки своего объекта (подпапка Ext/Form), но загружается только вместе с этой выгрузкой, а не сама по себе.
Чем отличается файл .cf от .cfe?
.cf — это полная конфигурация, её загружают через Загрузить конфигурацию из файла… и она заменяет основную конфигурацию. .cfe — расширение, оно подключается отдельным слоем и не трогает типовую конфигурацию.
Перенесётся ли форма вместе с модулем и реквизитами?
Если переносить объект целиком — да, приедут и форма, и её модуль, и реквизиты объекта, и макеты. Если копировать только форму — реквизиты и команды объекта в приёмнике должны уже существовать, иначе в модуле будут ошибки.
Затронет ли загрузка формы данные в базе?
Меняются только метаданные — структура конфигурации. Учётные данные (документы, справочники) при этом не удаляются. Но резервную копию перед загрузкой всё равно делайте: ошибка в структуре может потребовать отката.