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

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

Как объединить формы в 1С: практическое руководство

Как объединить формы в 1С через сравнение и объединение конфигураций, как перенести изменения формы из расширения или файла, типичные ошибки и проверка результата.

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

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

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

Когда требуется объединение форм и какой инструмент выбрать

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

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

Маршрут решения

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

Изменения формы пришли в файле .cf от поставщика или коллегиИспользуйте «Сравнить, объединить с конфигурацией из файла» и отметьте только нужные формы
Форма доработана в расширении, а изменения нужны в основной конфигурацииПереносите элементы и код вручную по списку из сравнения, затем удаляйте их из расширения
Форма изменена и в вашей конфигурации, и в обновлении поставщикаПри обновлении включите режим объединения с приоритетом и вручную разрешите конфликты формы
Нужно просто скопировать форму в другой объект без существующей формыДостаточно копирования формы в дереве конфигурации без механизма объединения

Подготовка: резервная копия и анализ изменений

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

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

Объединение формы при сравнении конфигураций

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

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

Порядок действий
  1. 1
    Сделайте выгрузку базы (.dt) и сохраните текущую конфигурацию в .cf
  2. 2
    Откройте «Конфигурация → Сравнить, объединить с конфигурацией из файла» и выберите файл с изменениями
  3. 3
    В дереве различий снимите все отметки, затем отметьте только нужный объект и его форму
  4. 4
    Установите режим объединения: «Взять из файла» — если форма полностью заменяется, или разрешайте конфликты вручную, если форма доработана в обеих версиях
  5. 5
    Выполните объединение (кнопка «Выполнить»), затем обновите конфигурацию базы данных (F7)
  6. 6
    Откройте форму в режиме 1С:Предприятие и проверьте отображение, работу кнопок и обработчиков

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

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

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

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

Объединение формы из расширения с основной конфигурацией

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

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

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

Объединение форм при обновлении типовой конфигурации

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

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

Типичные ошибки
01
Объединение всей конфигурации вместо одной формы — в базу попадают лишние изменения, источник которых потом трудно найти
02
Выбор режима «взять из файла» для дважды изменённой формы — собственные доработки формы полностью теряются
03
Забытый модуль формы — после объединения кнопки есть, а их обработчики отсутствуют, форма падает с ошибкой при нажатии
04
Пропуск проверки конфигурации после переноса — в пользовательском режиме всплывают ошибки ссылок на несуществующие реквизиты
05
Работа без резервной копии — откатить неудачное объединение нечем, доработки восстанавливаются по памяти

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

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

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

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

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

Проверка конфигурации в конфигураторе
Норма

Ошибок и ссылок на несуществующие объекты нет

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

Ошибки компиляции модуля формы или битые ссылки на реквизиты

Открытие формы в режиме Предприятия
Норма

Форма открывается, все элементы на месте

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

Ошибка при создании формы или пропавшие элементы

Работа кнопок и команд
Норма

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

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

Ошибка «Процедура или функция не обнаружена»

Запись и проведение объекта
Норма

Объект сохраняется без ошибок

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

Ошибки в обработчиках ПриЗаписи, ОбработкаПроверкиЗаполнения

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

Можно ли объединить две формы автоматически, построчно, как текст?

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

Что делать, если после объединения форма не открывается?

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

Как перенести форму из расширения в основную конфигурацию полностью?

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

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

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

Как не потерять доработки формы при обновлении типовой конфигурации?

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

Почему после объединения кнопка на форме есть, а при нажатии возникает ошибка?

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

Итог

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

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