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

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

Как обновить форму документа в 1С

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

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

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

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

Определите, какое именно обновление формы вам нужно

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

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

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

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

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

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

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

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

Если в базе работают пользователи, платформа может потребовать монопольный доступ. В этом случае завершите сеансы через «Администрирование — Пользователи — Активные пользователи» или запланируйте обновление на нерабочее время. После обновления попросите пользователя закрыть и заново открыть форму документа — уже открытые окна не перечитывают структуру формы автоматически.

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

Как получить обновлённую форму при обновлении типовой конфигурации

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

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

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

Как вернуть типовую форму вместо доработанной

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

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

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

Как обновить открытую форму программно

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

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

bsl
&НаКлиенте
Процедура ПослеЗаписиВнешнегоОбъекта()
    ОповеститьОбИзменении(Объект.Ссылка);
    ЭтотОбъект.Прочитать();
    ЭтотОбъект.ОбновитьОтображениеДанных();
КонецПроцедуры

Не злоупотребляйте методом Прочитать(): он отменяет несохранённые изменения пользователя в форме. Если пользователь мог что-то редактировать, сначала проверьте свойство Модифицированность и при необходимости задайте вопрос о сохранении.

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

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

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

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

Как проверить, что форма обновилась корректно

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

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

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

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

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

Форма открывается без ошибок, новые элементы видны

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

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

Заполнение и проведение документа
Норма

Документ записывается и проводится, кнопки работают

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

Ошибки в обработчиках, неактивные команды

Вид под обычным пользователем
Норма

Все нужные поля доступны с учётом прав

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

Поля скрыты или недоступны из-за прав и опций

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

Обновил форму в конфигураторе, а пользователи видят старую. Что делать?

Нажмите F7 («Обновить конфигурацию базы данных») и примите изменения. Затем пользователь должен закрыть открытую форму и открыть её заново. Если не помогло — перезапустите сеанс пользователя полностью, а в клиент-серверном варианте при необходимости очистите кэш метаданных.

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

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

После обновления релиза форма стала типовой, доработки пропали. Почему?

При сравнении и объединении для формы был выбран режим «взять версию поставщика». Доработки нужно восстановить из резервной копии или внести заново. В будущем отслеживайте изменённые объекты в окне объединения и выбирайте осознанный режим для каждого.

Чем отличается «Обновить конфигурацию базы данных» от «Обновить конфигурацию» в меню Поддержка?

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

Форма не открывается с ошибкой после обновления. Как откатиться?

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

Как обновить форму внешней обработки или печатной формы?

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

Итог

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

Изменения формы вступают в силу после обновления конфигурации базы данных (F7) и переоткрытия формы пользователем. Новые версии форм от поставщика приходят с обновлением релиза через сравнение и объединение. Всегда делайте резервную копию и проверяйте результат под обычным пользователем.