Вопрос динамического обновления (так называемого «обновления на лету») в среде 1С:Предприятие всегда вызывал бурные дискуссии среди администраторов и разработчиков. Переход с платформы 8.2 на 8.3 добавляет новые нюансы в этот процесс. В этой статье мы подробно проанализируем, как ведет себя платформа 8.3.12 при динамическом обновлении, разберем технические причины возможных сбоев и определим безопасные алгоритмы работы.
Рассмотрим, что именно делает платформа, когда мы нажимаем заветную кнопку «Обновить конфигурацию базы данных» при наличии активных пользователей. В отличие от обычного обновления, динамическое не блокирует таблицу Config монопольно. Вместо этого система создает временные записи в таблицах базы данных SQL, которые содержат обновленные метаданные.
Проанализируем основные риски этого процесса:
rphost, в таблице Config могут остаться «фантомные» записи. Это приводит к критической ошибке «Ошибка формата потока», после которой база часто перестает запускаться даже в конфигураторе.В современных версиях 1С 8.3 (включая 8.3.12) реализован механизм фонового обновления базы данных. Это гораздо более безопасная альтернатива динамическому обновлению, особенно если ваши изменения затрагивают структуру таблиц (добавление реквизитов, изменение типов). Выясним, как работает этот процесс по шагам:
Шаг 1: Подготовка. В конфигураторе запускается процесс фонового обновления. Платформа подготавливает изменения в отдельных временных таблицах, не мешая работе пользователей.
Шаг 2: Синхронизация. Система накапливает изменения данных, которые вносят пользователи в процессе обновления.
Шаг 3: Завершение. Требуется лишь кратковременная блокировка (обычно на несколько секунд или минут), чтобы «подменить» старые таблицы новыми. Это исключает риск «Ошибки формата потока», характерный для старого «динамического» метода.
Посмотрим на ситуацию с точки зрения серверных процессов. Даже если обновление прошло успешно, вы можете столкнуться с тем, что пользователи жалуются на странное поведение программы. Проанализируем причины:
Сервер 1С хранит кэш в папке srvinfo. При динамическом обновлении старые версии скомпилированных файлов .v8-cnt могут не удаляться вовремя. Рассмотрим стандартный скрипт для очистки кэша на стороне пользователя, который рекомендуется применять, если после обновления база ведет себя нестабильно:
rem Очистка кэша 1С для текущего пользователя
rmdir /s /q "%AppData%\Local\1C\1Cv8"
rmdir /s /q "%AppData%\Roaming\1C\1Cv8"
Важно помнить, что в версии 8.3 кэш стал многоуровневым, и иногда требуется перезапуск всей службы 1C:Enterprise 8.3 Server Agent для полной очистки серверной памяти.
Если вы все же рискнули и получили «Ошибку формата потока», не спешите сразу восстанавливаться из бэкапа (хотя его наличие обязательно!). Рассмотрим технический прием очистки таблицы Config через SQL Management Studio, который часто помогает спасти ситуацию в серверных базах:
dbnames или временные копии конфигурации.
-- Пример логики очистки таблицы конфига
DELETE FROM Config WHERE FileName = 'dbnames.root'
DELETE FROM Config WHERE FileName LIKE 'save%'
После удаления этих записей и перезапуска сервера 1С, система часто «откатывается» к состоянию до неудачного обновления, позволяя зайти в конфигуратор и выполнить полноценное (не динамическое) обновление.
Для конфигураций вроде УПП, которые используют обычные формы и режим совместимости (например, с 8.2.13 или 8.2.16), динамическое обновление не становится безопаснее. Напротив, механизмы оптимизации памяти 8.3 могут конфликтовать со старым кодом обычных форм.
Разберем основные рекомендации для этой связки:
.dt.Проанализировав опыт многих специалистов, мы приходим к выводу: динамическое обновление — это «мина замедленного действия». Она может не срабатывать годами, но один единственный сбой может стоить компании часов простоя и потери данных.
Сформулируем «кодекс безопасности» программиста 1С:
Следуя этим правилам, мы обеспечим стабильную работу системы и минимизируем риски возникновения критических ошибок в работе предприятия.