Клиент 1С показывает старую форму — как заставить его подхватить новую
Содержание
Если клиент 1С после обновления конфигурации открывает старую форму, в 9 случаях из 10 помогает простой перезапуск: закройте окно 1С:Предприятия полностью и откройте базу заново. Не помогло — чистим локальный кэш клиента, в нём и лежит устаревшая копия формы.
Новая форма приходит в базу при обновлении конфигурации, но на клиент подтягивается не мгновенно. Тонкий клиент хранит метаданные и уже открытые формы в своём кэше, чтобы не тянуть их с сервера при каждом запуске. Пока кэш не сброшен, вы видите прошлую версию интерфейса. Для веб-клиента и мобильного приложения правила свои — разберём их отдельно.
Где клиент хранит формы и почему возникает задержка
Тонкий клиент 1С при подключении к базе загружает описание форм, модулей и команд и кладёт их в локальный кэш в профиле пользователя Windows. При следующих запусках клиент берёт данные из кэша, а с сервером сверяет только изменения. Это ускоряет работу, но и порождает эффект «старой формы»: структура в базе уже новая, а на машине пользователя лежит прежняя.
Кэш хранится не в самой базе, а на компьютере клиента, в каталоге профиля:
%LOCALAPPDATA%\1C\1cv8\— здесь по подкаталогам с длинными именами-хэшами лежит кэш по каждой информационной базе;%APPDATA%\1C\1cv8\— здесь настройки и список баз (ibases.v8i), это НЕ кэш форм, его трогать не нужно.
Длинное имя подкаталога — это хэш конкретной базы. У одного человека, подключённого к пяти базам, будет пять таких каталогов.
В клиент-серверном варианте добавляется ещё серверный кэш сеанса, но для задачи «обновить форму» он роли почти не играет: его сбрасывает обычный перезапуск сеанса. Главный виновник устаревшей формы — именно локальный кэш на машине пользователя.
Способов обновить форму несколько, и выбирают их по нарастанию: сначала самое простое и безопасное, потом более радикальное. Коротко — что когда применять:
| Способ | Когда применять | Что сбрасывает |
|---|---|---|
| Перезапуск клиента | Первым делом, всегда | Открытые формы и часть кэша сеанса |
Запуск с /ClearCache | Перезапуск не помог | Весь локальный кэш базы при старте |
| Ручное удаление кэша | Ключ недоступен или не сработал | Весь локальный кэш базы вручную |
Ctrl+F5 / кэш браузера | Веб-клиент | Кэш веб-клиента в браузере |
Разберём каждый способ по порядку.
Перезапуск клиента — самый быстрый способ
Начинать всегда стоит с него, потому что он закрывает большинство случаев и ничего не ломает.
- Сохраните несохранённые данные в открытых документах.
- Закройте окно 1С:Предприятия целиком — не только текущую форму, а именно приложение.
- Убедитесь, что процесс завершился: в диспетчере задач не должно остаться
1cv8.exeпо этой базе. - Запустите базу заново.
При старте клиент сверяет версию конфигурации с сервером и, если она изменилась, подтягивает новые формы. Часто этого достаточно.
Почему перезапуск не всегда помогает: клиент обновляет из кэша только то, что считает изменившимся. Если в кэше остался «обрывок» старой формы или сам клиент не распознал, что версия поменялась (так бывает после сбоев и жёстких завершений процесса), перезапуск форму не освежит. Тогда и нужны следующие два способа с принудительной очисткой кэша.
Отдельный случай — динамическое обновление. Когда администратор обновил конфигурацию базы данных с разрешённым динамическим обновлением, работающие пользователи видят сообщение о том, что получены изменения и для продолжения работы программу нужно перезапустить. Соглашайтесь и перезапускайте — после этого формы станут новыми. Если проигнорировать сообщение, клиент продолжит показывать прежний интерфейс до перезапуска.
Нюанс: сообщение приходит не мгновенно в секунду обновления, а когда клиент в очередной раз обращается к серверу. Поэтому между обновлением базы администратором и предложением перезапуститься у пользователя может пройти несколько минут. Если ждать некогда — перезапустите клиент сами, результат будет тот же.
Запуск с очисткой кэша: ключ /ClearCache
Если обычный перезапуск не помог, запустите базу с очисткой кэша. Это промежуточный вариант между перезапуском и ручным удалением файлов: кэш чистится автоматически при старте, руками в каталоги лезть не нужно.
Добавьте к команде запуска клиента параметр /ClearCache. В свойствах ярлыка 1С строка выглядит так:
"C:\Program Files\1cv8\<номер версии>\bin\1cv8.exe" ENTERPRISE /ClearCache
Либо, если запускаете через окно со списком баз, создайте отдельный ярлык с этим ключом. При первом запуске клиент сбросит локальный кэш по базе и загрузит формы заново.
Ключ /ClearCache действует на один запуск: он очищает кэш в момент старта. Постоянно держать его в ярлыке не нужно — каждый вход будет медленнее обычного.
Этот способ удобен поддержке: пользователю достаточно один раз запустить специальный ярлык, а не искать каталоги в профиле. Ключ можно комбинировать с параметрами запуска базы, которые у вас уже прописаны в ярлыке, — он не конфликтует с адресом информационной базы и логином.
Ручная очистка локального кэша
Крайний вариант, когда /ClearCache недоступен или не сработал: удалить кэш из профиля вручную.
- Полностью закройте 1С по этой базе и проверьте в диспетчере задач, что процессов
1cv8.exeне осталось. - Откройте проводник, в адресной строке введите
%LOCALAPPDATA%\1C\1cv8\и нажмите Enter. - Внутри вы увидите подкаталоги с длинными именами-хэшами. Если баз несколько, а какой именно каталог относится к нужной базе, непонятно — проще удалить все подкаталоги: они пересоздадутся при следующем запуске.
- Удалите подкаталоги кэша и запустите базу заново.
Чистите кэш только при закрытой программе. Если удалить файлы, пока база открыта, клиент может завершиться с ошибкой, а в худшем случае потерять часть несохранённых настроек интерфейса.
Настройки и список баз в %APPDATA%\1C\1cv8\ при этом не трогаются — пользовательские настройки форм, отборы и история сохранятся.
На терминальном сервере (RDS, публикация через RemoteApp) кэш лежит в профиле каждого пользователя отдельно. Поэтому старая форма у одного сотрудника и новая у другого на одном и том же сервере — обычное дело: чистить нужно кэш именно того профиля, под которым запускается сеанс с проблемой. Переменная %LOCALAPPDATA% в проводнике раскроется в путь текущего профиля автоматически.
Если форму меняли в Конфигураторе
Когда форма правилась не поставщиком, а вами в Конфигураторе, одного клиентского перезапуска мало — изменения сначала нужно применить к базе данных.
Здесь важно различать два состояния конфигурации. То, что вы правите в Конфигураторе, — это основная конфигурация. То, по чему реально работают пользователи, — конфигурация базы данных. Пока вы не применили изменения, новая форма живёт только в основной конфигурации, а клиент берёт форму из конфигурации базы данных и показывает старую. Признак несохранённых изменений — звёздочка в заголовке окна Конфигуратора и активная команда обновления.
- В Конфигураторе сохраните изменения формы.
- Примените их к базе: пункт меню Конфигурация → Обновить конфигурацию
базы данных (горячая клавиша
F7). - Если платформа предложит применить изменения динамически — соглашайтесь, когда правка касается только форм и модулей. Монопольный доступ нужен для изменений структуры данных (новые реквизиты, таблицы), а не для правки макета формы.
- На клиенте перезапустите сеанс 1С:Предприятия, чтобы он подтянул новую форму.
При отладке ведёт себя так же: если вы отлаживаете конфигурацию и поправили форму, запущенный сеанс предприятия продолжит работать со старой версией до перезапуска отладочного сеанса. Остановите отладку, обновите конфигурацию базы данных и запустите сеанс заново.
Применять изменения к рабочей базе в часы работы пользователей рискованно: при нединамическом обновлении потребуется монопольный доступ, и активные сеансы придётся завершать. Планируйте обновление структуры на время, когда в базе никто не работает.
Веб-клиент и мобильное приложение: правила свои
В веб-клиенте роль локального кэша 1С играет кэш браузера. Поэтому и обновляют форму средствами браузера.
- Жёсткая перезагрузка страницы:
Ctrl+F5(илиCtrl+ кнопка обновления). Браузер перечитает ресурсы веб-клиента. - Не помогло — очистите кэш браузера за последний час и войдите в базу заново.
- Полезно проверить в другом браузере или в приватном окне: если там форма новая, дело точно в кэше основного браузера.
Отдельная причина для веб-клиента — кэширование на стороне веб-сервера или прокси. Если жёсткая перезагрузка и чистый браузер всё равно отдают старую форму, попросите администратора проверить, не закэшировал ли статику веб-сервер, через который опубликована база. На самом клиенте сделать с этим уже ничего нельзя.
Мобильное приложение 1С обновляет формы, когда получает новую версию мобильной конфигурации. Если приложение собрано под конкретную базу, новую форму оно увидит после того, как мобильная конфигурация будет пересобрана и опубликована, а приложение переподключится к ней. Простого «сбросить кэш , как на десктопе» в мобильном клиенте нет — ориентируйтесь на переподключение и обновление самого приложения.
Для мобильного клиента, который подключается к серверной базе как тонкий клиент, логика ближе к веб-варианту: достаточно выйти из базы и войти снова, чтобы приложение перечитало формы с сервера. Полная переустановка мобильного приложения — крайняя мера, к ней прибегают, только если переподключение не помогло и приложение ведёт себя явно нестабильно.
Диагностика: форма не обновляется — почему
Если ни перезапуск, ни очистка кэша не дали результата, причина обычно не в клиенте, а в том, что новая форма до базы попросту не дошла.
/ClearCache) на том клиенте, где форма старая. Это локальный кэш каждой рабочей станции.Отдельно про расширения конфигурации
: если нужная форма переопределена расширением, клиент покажет форму из расширения, а не из основной конфигурации. Тогда и менять, и обновлять форму нужно в самом расширении, а после загрузки .cfe — отдельным шагом применить изменения к базе данных.
Это частая ловушка: администратор правит форму в основной конфигурации, применяет обновление, а на клиенте ничего не меняется, потому что поверх лежит форма из расширения. Проверьте список подключённых расширений: если среди них есть то, что переопределяет эту форму, правка основной конфигурации на неё не повлияет. Расширения, напомним, появились в платформе 8.3.6 — на более старых их просто не будет.
Частые вопросы
Нужен ли монопольный доступ, чтобы обновить форму?
Чем `/ClearCache` отличается от ручного удаления каталога кэша?
/ClearCache делает это автоматически при запуске и безопаснее: не нужно вручную искать и удалять каталоги в профиле. Ручное удаление оставляют на случай, когда запуск с ключом по каким-то причинам недоступен.После очистки кэша 1С стала запускаться медленнее. Это нормально?
Удалятся ли мои настройки отборов и колонок при очистке кэша?
%LOCALAPPDATA% и пользовательские настройки в %APPDATA% — разные каталоги. Удаляя кэш форм, вы не трогаете сохранённые настройки интерфейса.В веб-клиенте форма старая, а `/ClearCache` не подходит. Что делать?
Ctrl+F5 и очистку кэша браузера. Проверка в приватном окне быстро покажет, в кэше ли дело.