Разработка и Конфигурация · 10 мин
Как обновить форму в 1С: все способы
Как обновить форму в 1С: обновление данных на форме, перечитать объект, обновить конфигурацию и формы после доработки. Пошаговые инструкции и типичные ошибки.
Под фразой «обновить форму» в 1С скрываются несколько разных задач: перечитать данные объекта на открытой форме, обновить список документов, применить изменения конфигурации после доработки или обновить форму при обновлении релиза. Способ действий зависит от того, кто вы — пользователь, администратор или разработчик — и что именно требуется получить в результате.
Чаще всего вопрос возникает в трёх ситуациях. Первая: данные на форме устарели, потому что кто-то изменил объект в другом окне или другой сеанс записал новые значения. Вторая: разработчик изменил модуль формы или реквизиты в конфигураторе, и нужно, чтобы пользователи увидели новую форму. Третья: после обновления типовой конфигурации форма ведёт себя не так, как ожидалось, и её нужно привести к актуальному состоянию.
Ниже разобраны все основные сценарии: от простого нажатия кнопки «Обновить» до обновления конфигурации базы данных. Для каждого случая указаны условия применения, ограничения и способы проверить результат.
Определите, какая именно задача перед вами
Прежде чем что-то обновлять, важно понять, какой из сценариев ваш. От этого зависят и инструменты, и риски. Обновление данных на форме — безопасная операция, доступная любому пользователю. Обновление конфигурации базы данных — административная операция, которая при ошибке может нарушить работу всей базы.
Как выбрать действие
Если сомневаетесь, начните с самого безопасного варианта — перечитывания данных на форме. Он не затрагивает ни конфигурацию, ни данные других пользователей.
Обновление данных на форме в режиме пользователя
Самый частый случай: вы открыли документ или справочник, а данные в нём уже изменил коллега или фоновое задание. Форма в 1С не обновляется автоматически при изменении объекта другим сеансом — платформа показывает то состояние, которое было прочитано при открытии.
Чтобы перечитать данные объекта, откройте меню «Ещё» в правом верхнем углу формы и выберите команду «Перечитать». В большинстве типовых форм также работает клавиша F5. После перечитывания форма покажет актуальные данные из базы. Учтите: все несохранённые изменения, которые вы внесли на форме, будут потеряны — платформа обычно предупреждает об этом.
Для форм списков (журналы документов, списки справочников) используйте кнопку «Обновить» — она есть в командной панели списка либо вызывается той же клавишей F5. Список перезапросит данные из базы с учётом текущих отборов и сортировки.
- 1Откройте форму объекта или списка, данные которого нужно обновить
- 2Для объекта: меню «Ещё» → «Перечитать» или клавиша F5
- 3Для списка: кнопка «Обновить» в командной панели или F5
- 4Проверьте, что на форме отобразились актуальные значения
Если перечитывание не помогает и данные по-прежнему старые, закройте форму полностью и откройте заново. Это гарантированно сбрасывает кэш формы и выполняет чтение объекта с нуля.
Программное обновление формы: методы для разработчика
Разработчику часто нужно обновить форму из кода — например, после записи связанного объекта или изменения реквизита. В управляемых формах для этого есть несколько методов, и важно выбрать правильный.
Метод Прочитать() объекта формы перечитывает данные из базы, аналог команды пользователя. Вызов ЭтотОбъект.Прочитать() в модуле формы обновляет все данные объекта, но сбрасывает несохранённые изменения. Метод ОбновитьОтображениеДанных() не перечитывает данные, а лишь заставляет форму заново отрисовать элементы — полезен, когда изменились свойства видимости или доступности. Для динамических списков применяется Элементы.Список.Обновить().
&НаКлиенте
Процедура ОбновитьДанные(Команда)
// Перечитать объект из базы
ЭтотОбъект.Прочитать();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписок(Команда)
// Обновить динамический список
Элементы.Список.Обновить();
КонецПроцедурыОтдельный сценарий — оповещение других открытых форм об изменении. После записи объекта вызовите ОповеститьОбИзменении(Ссылка), и другие формы, подписанные на это событие через обработчик ОбработкаОповещения, смогут обновиться автоматически. Это стандартный механизм платформы, который используют типовые конфигурации.
Обновление формы после изменения в конфигураторе
Когда разработчик меняет состав реквизитов, элементы или модуль формы в конфигураторе, пользователи не увидят изменений сразу. Изменения сохраняются только в основной конфигурации, а работающие сеансы используют конфигурацию базы данных.
Чтобы применить изменения, в конфигураторе откройте меню «Конфигурация → Обновить конфигурацию базы данных» или нажмите F7. Платформа покажет список изменённых объектов и выполнит реструктуризацию, если изменялась структура данных. После завершения пользователям нужно закрыть и заново открыть формы, а лучше — полностью перезапустить сеанс 1С:Предприятия.
В клиент-серверном варианте может потребоваться монопольный режим — платформа сообщит об этом, если есть активные сеансы. Попросите пользователей выйти или завершите сеансы через консоль кластера, предварительно предупредив сотрудников.
Обновление формы при обновлении релиза конфигурации
При обновлении типовой конфигурации формы обновляются автоматически вместе с остальными объектами — через «Конфигурация → Поддержка → Обновить конфигурацию» или через сервис обновления в режиме предприятия. Проблемы возникают, когда форма была доработана: платформа не всегда может объединить типовые изменения с вашими правками.
Если форма изменена и в вашей базе, и в новом релизе поставщика, при обновлении включится режим сравнения и объединения. Внимательно просмотрите изменённые формы: для каждой можно взять версию поставщика, оставить свою или объединить вручную. Автоматическое объединение модулей форм нередко даёт нерабочий код — проверяйте синтаксис после обновления.
Как проверить, что форма обновилась корректно
После любого из способов обновления проверьте результат, а не полагайтесь на отсутствие сообщений об ошибках. Для пользовательского перечитывания достаточно убедиться, что на форме отображаются актуальные значения. Для изменений из конфигуратора — открыть форму в новом сеансе и сравнить состав элементов с тем, что задано в конфигураторе.
Как проверить результат
Отображаются значения, актуальные в базе данных
Значения старые — форма не перечиталась, закройте и откройте заново
В новом сеансе видны добавленные элементы и реквизиты
Форма старая — сеанс не перезапущен или обновление не завершено
Проверка синтаксиса проходит, форма открывается без ошибок
Ошибки компиляции или форма не открывается — нужна ручная доработка объединения
Если после обновления релиза форма открывается с ошибкой «Поле объекта не обнаружено» или подобной, почти всегда причина в некорректном объединении: в модуле остались обращения к реквизитам или элементам, которых больше нет. Откройте форму в конфигураторе, выполните проверку модуля и устраните обращения к отсутствующим объектам.
Частые вопросы
Почему F5 не обновляет данные на форме документа?
Клавиша F5 в форме объекта может быть переназначена или не работать в некоторых конфигурациях. Используйте команду «Ещё → Перечитать». Если объект заблокирован другим сеансом, перечитывание покажет данные на момент последней записи — проверьте, не открыт ли объект у коллеги.
Нужно ли перезапускать сервер 1С после обновления конфигурации?
Нет, перезапуск сервера не требуется. Достаточно, чтобы пользователи перезапустили свои сеансы. Перезапуск сервера может понадобиться только в редких случаях, например при обновлении версии платформы.
Как обновить форму списка автоматически, без нажатия кнопки?
В модуле формы списка можно программно вызывать Элементы.Список.Обновить() по событию — например, в обработчике ОбработкаОповещения, чтобы список реагировал на запись новых документов из других форм. Периодическое автообновление по таймеру возможно через ПодключитьОбработчикОжидания, но злоупотреблять им не стоит из-за нагрузки.
Что делать, если после обновления релиза пропали доработки формы?
Это признак того, что при объединении была выбрана версия поставщика. Восстановите доработки из резервной копии, сделанной перед обновлением, или из хранилища конфигурации, и повторите обновление, выбрав для этой формы ручное объединение.
Можно ли обновить форму, не закрывая её, после изменения в конфигураторе?
Нет. Открытая форма работает со старым описанием метаданных. После обновления конфигурации базы данных форму нужно закрыть и открыть заново — только тогда она построится по новой структуре.
Чем отличается «Перечитать» от «Записать и закрыть»?
«Перечитать» загружает данные из базы на форму и отбрасывает несохранённые изменения. «Записать и закрыть» делает обратное — сохраняет введённые на форме данные в базу. Это противоположные по направлению операции.
Что важно запомнить
Устаревшие данные на форме обновляются командой «Перечитать» или F5, списки — кнопкой «Обновить». Изменения формы из конфигуратора применяются через обновление конфигурации базы данных (F7) и требуют перезапуска сеансов. Перед обновлением конфигурации и релиза всегда делайте резервную копию, а объединение доработанных форм проверяйте вручную.