К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как скопировать форму в 1С

Как скопировать форму в 1С: через конфигуратор, Ctrl+C/Ctrl+V, перетаскивание и между конфигурациями. Особенности управляемых и обычных форм, типичные ошибки.

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

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

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

Когда нужно копировать форму

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

Вторая ситуация — перенос разработки между конфигурациями. Например, форма обработки, написанная для одной базы, нужна в другой. Третья — создание «черновой» копии формы перед рискованной доработкой, чтобы был вариант для отката. Наконец, копирование используют при переименовании объектов: старую форму копируют к новому объекту, а затем удаляют исходную.

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

Копирование формы внутри одного объекта

Самый простой случай — создать копию формы в рамках того же объекта метаданных. Откройте конфигуратор, найдите нужный объект (справочник, документ, обработку) и разверните ветку «Формы». Выделите форму, которую хотите скопировать, и нажмите Ctrl+C или выберите «Копировать» в контекстном меню.

Затем снова встаньте на ветку «Формы» того же объекта и нажмите Ctrl+V. Конфигуратор создаст новую форму с тем же содержимым и предложит задать ей имя. Имя должно быть уникальным в рамках объекта и соответствовать правилам именования идентификаторов: без пробелов, без начала с цифры, только буквы, цифры и подчёркивания.

Порядок действий
  1. 1
    Откройте конфигуратор и найдите объект метаданных с нужной формой
  2. 2
    Разверните ветку «Формы», выделите форму и нажмите Ctrl+C
  3. 3
    Встаньте на ветку «Формы» целевого объекта и нажмите Ctrl+V
  4. 4
    Задайте уникальное имя новой формы и подтвердите создание
  5. 5
    Откройте модуль скопированной формы и проверьте обращения к реквизитам
  6. 6
    Сохраните конфигурацию (Ctrl+S) и обновите конфигурацию базы данных (F7)
  7. 7
    Запустите 1С в режиме предприятия и откройте новую форму для проверки

После копирования форма не назначается автоматически ни на одну из ролей (форма по умолчанию, форма списка, форма выбора). Чтобы новая форма использовалась, откройте свойства объекта и укажите её в соответствующем поле, либо вызывайте её программно через ПолучитьФорму() или ОткрытьФорму().

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

Если форму нужно перенести к другому объекту — например, из одной обработки в другую — приём тот же: скопируйте форму, встаньте на ветку «Формы» целевого объекта и вставьте. Конфигуратор перенесёт описание формы и её модуль.

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

Для управляемых форм дополнительно проверьте реквизиты формы: они хранятся внутри описания формы и переносятся целиком. Если реквизит формы имеет ссылочный тип на объект, которого нет в целевой конфигурации, такой реквизит придётся удалить или изменить его тип.

Перенос формы между разными конфигурациями

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

Первый способ — сравнение и объединение конфигураций. В конфигураторе целевой базы выберите «Конфигурация → Сравнить, объединить с конфигурацией из файла», укажите выгруженный .cf-файл исходной конфигурации и в диалоге сравнения отметьте только нужную форму. Платформа перенесёт её вместе с модулем. Этот способ надёжен, но требует аккуратности, чтобы не затянуть лишние объекты.

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

Способы переноса формы

Копирование Ctrl+C / Ctrl+V

Подходит внутри одной конфигурации. Быстро, но не работает между разными базами

Сравнение и объединение конфигураций

Подходит для переноса между базами. Требует внимательного отбора объектов, чтобы не перенести лишнее

Выгрузка в файлы и ручной перенос

Гибкий способ для опытных разработчиков. Высок риск рассогласования структуры файлов

Внешняя обработка как контейнер

Удобно для переноса форм обработок: сохранили .epf, открыли в целевой базе, скопировали форму

Особенности управляемых и обычных форм

Управляемые формы (режим «Такси» и управляемое приложение) копируются целиком: переносятся реквизиты формы, команды, элементы и модуль. Однако в модуле управляемой формы часто встречаются обращения к контексту владельца и директивы &НаКлиенте, &НаСервере с вызовами серверных процедур общих модулей. Если целевая конфигурация не содержит этих общих модулей, код нужно адаптировать.

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

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

Проверка результата после копирования

После копирования и сохранения конфигурации выполните проверку встроенными средствами: «Конфигурация → Проверка конфигурации». Отметьте проверку модулей — она покажет синтаксические ошибки и обращения к несуществующим реквизитам в скопированной форме.

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

Контрольные точки

Как проверить результат

Открытие формы
Норма

Форма открывается без сообщений об ошибках

Тревожный признак

Ошибка «Метод объекта не обнаружен» или «Поле объекта не обнаружено»

Реквизиты и элементы
Норма

Все поля отображаются и связаны с данными

Тревожный признак

Пустые поля или элементы без привязки к реквизитам

Команды и кнопки
Норма

Кнопки выполняют заявленные действия

Тревожный признак

При нажатии возникает ошибка или ничего не происходит

Сохранение данных
Норма

Данные записываются и перечитываются корректно

Тревожный признак

Данные теряются или запись завершается ошибкой

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

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

Вторая ошибка — попытка скопировать форму между базами через буфер обмена. Конфигураторы разных баз не делят общий буфер метаданных, поэтому вставка либо не сработает, либо вставит текст. Используйте сравнение/объединение или выгрузку в файлы.

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

Типичные ошибки
01
Копирование без проверки модуля — форма падает с ошибками обращения к чужим реквизитам
02
Попытка вставить форму из конфигуратора другой базы — буфер обмена метаданных между базами не работает
03
Форма скопирована, но не назначена формой по умолчанию — пользователи видят старую форму
04
Имя новой формы совпадает с существующим — конфигуратор отказывает в создании или возникает путаница
05
Перенос формы между управляемым и обычным режимами без переработки — интерфейс отображается некорректно
Маршрут решения

Как выбрать действие

Нужна копия формы в том же объекте или другом объекте этой же базыИспользуйте Ctrl+C и Ctrl+V в дереве метаданных конфигуратора
Форму нужно перенести в другую базу или конфигурациюИспользуйте сравнение и объединение с выгруженным .cf-файлом, отметив только нужную форму
Переносится форма внешней обработкиСохраните обработку как .epf, откройте её в целевой базе и скопируйте форму внутри
Конфигурация типовая и закрыта от измененийСначала включите возможность изменения в настройках поддержки и оцените влияние на обновления

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

Часто задаваемые вопросы

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

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

Почему скопированная форма не открывается и выдаёт ошибку?

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

Как скопировать форму из типовой конфигурации в свою доработку?

Откройте типовую конфигурацию, скопируйте форму в буфер, затем вставьте её в свой объект в той же базе. Если доработка в другой базе — выгрузите типовую конфигурацию в .cf и перенесите форму через сравнение и объединение.

Можно ли скопировать форму через расширение конфигурации?

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

Копируется ли модуль формы вместе с формой?

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

Что делать, если имя новой формы уже занято?

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

Итог

Что важно запомнить

Формы в 1С копируются через конфигуратор: Ctrl+C / Ctrl+V внутри базы, сравнение и объединение — между базами. После копирования обязательно проверьте модуль, назначьте форму объекту и протестируйте её работу в режиме предприятия. Для доработки типовых конфигураций предпочтительнее расширения.