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

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

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

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

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

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

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

Определите, какая именно задача перед вами

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

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

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

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

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

Обновление данных на форме в режиме пользователя

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

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

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

Порядок действий
  1. 1
    Откройте форму объекта или списка, данные которого нужно обновить
  2. 2
    Для объекта: меню «Ещё» → «Перечитать» или клавиша F5
  3. 3
    Для списка: кнопка «Обновить» в командной панели или F5
  4. 4
    Проверьте, что на форме отобразились актуальные значения

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

Программное обновление формы: методы для разработчика

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

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

bsl
&НаКлиенте
Процедура ОбновитьДанные(Команда)
    // Перечитать объект из базы
    ЭтотОбъект.Прочитать();
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьСписок(Команда)
    // Обновить динамический список
    Элементы.Список.Обновить();
КонецПроцедуры

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

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

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

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

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

Обновление формы при обновлении релиза конфигурации

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

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

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

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

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

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

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

Данные на форме после перечитывания
Норма

Отображаются значения, актуальные в базе данных

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

Значения старые — форма не перечиталась, закройте и откройте заново

Форма после обновления конфигурации базы данных
Норма

В новом сеансе видны добавленные элементы и реквизиты

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

Форма старая — сеанс не перезапущен или обновление не завершено

Модуль формы после объединения при обновлении релиза
Норма

Проверка синтаксиса проходит, форма открывается без ошибок

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

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

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

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

Почему F5 не обновляет данные на форме документа?

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

Нужно ли перезапускать сервер 1С после обновления конфигурации?

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

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

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

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

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

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

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

Чем отличается «Перечитать» от «Записать и закрыть»?

«Перечитать» загружает данные из базы на форму и отбрасывает несохранённые изменения. «Записать и закрыть» делает обратное — сохраняет введённые на форме данные в базу. Это противоположные по направлению операции.

Итог

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

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