При выполнении длинной цепочки обновлений типовой конфигурации (например, при переходе через 10–15 релизов подряд) разработчики нередко сталкиваются со странным поведением платформы: основная конфигурация успешно получает новый номер версии, а конфигурация поставщика в окне настройки поддержки застревает на предыдущем релизе или вовсе «прыгает» назад после запуска программы в пользовательском режиме. В результате при попытке установить следующий файл обновления (.cfu) система сообщает, что файл не предназначен для текущей конфигурации, либо возникает путаница с дважды примененными объектами.
В этой статье разберем внутреннюю механику работы механизма поддержки платформы «1С:Предприятие», выясним технические причины подобного сбоя и рассмотрим пошаговые алгоритмы безопасного обновления цепочки релизов.
Чтобы понять природу ошибки, проанализируем, как платформа хранит метаданные в информационной базе:
Config и ConfigSave. Конфигурация поставщика, правила поддержки и метаданные основной конфигурации хранятся во внутренних системных таблицах базы данных. При выполнении обновления через поддержку измененные метаданные и новая конфигурация поставщика сначала помещаются во временную область — таблицу ConfigSave. Перенос данных в рабочую таблицу Config происходит только при успешном завершении реструктуризации и обновлении конфигурации базы данных (по нажатию F7). Если во время объединения или сохранения происходит непредвиденный сбой, аварийное завершение процесса или нехватка памяти, платформа сбрасывает незафиксированные изменения и откатывает состояние конфигурации поставщика к исходному из таблицы Config.ВерсииПодсистем) отменяется. При повторном открытии Конфигуратора база данных воспринимается как недообновленная.1cv8.exe. В процессе установки нескольких обновлений подряд без перезапуска Конфигуратора процесс накапливает в оперативной памяти сотни мегабайт кэшированных структур метаданных. В линейках платформы 8.3 при работе со старыми конфигурациями в режиме совместимости с версией 8.2 такое переполнение памяти часто приводит к тому, что ссылки на дескрипторы конфигурации поставщика не сбрасываются вовремя на диск.Главная ошибка при накатывании длинной цепочки релизов — спешка и автоматическое согласие на все всплывающие диалоговые окна платформы. Применим метод раздельного сохранения метаданных, который исключает сбои в таблицах ConfigSave.
Разберем последовательность действий по шагам:
.cfu или .cf) следующего по порядку релиза.Ctrl + S, либо выбрав пункт меню Конфигурация → Сохранить конфигурацию. Дождемся завершения сохранения в строке состояния.F7 (или пункт меню Конфигурация → Обновить конфигурацию базы данных).F5), дождемся отработки всех регламентных процедур и служебных обработчиков обновления данных, убедимся в успешном открытии рабочего стола и только затем закроем программу.Если в процессе обновления конфигурация поставщика уже «залипла» или окно поддержки показывает неактуальный релиз, выполним принудительную очистку кэша.
Разберем процедуру:
1cv8.exe и 1cv8c.exe полностью завершены.%LocalAppData%\1C\1cv8\
%AppData%\1C\1cv8\
d41d8cd9-8f00-b204-e980...).Рассмотрим частую критическую ситуацию: основная конфигурация уже обновлена (например, до версии 2.0.16.1), а конфигурация поставщика осталась на версии 2.0.15.5. При попытке применить следующий релиз Конфигуратор выдает ошибку совместимости.
В этом случае выровняем конфигурацию поставщика без изменения метаданных основной конфигурации:
.cf этого релиза.Платформа перепишет во внутренние таблицы только правила поддержки и эталонную конфигурацию поставщика, оставив конфигурацию базы данных и все пользовательские доработки нетронутыми. После этого конфигурации синхронизируются, и можно продолжать штатное обновление цепочки релизов.
Если конфигурация поставщика регулярно откатывается назад даже при соблюдении регламента, причиной может быть повреждение внутренней структуры файла 1Cv8.1CD (для файловых баз). Проверим базу на ошибки:
.dt или прямое копирование файла 1Cv8.1CD).chdbfl.exe (располагается в папке bin установленной версии платформы). Установим флаг «Исправлять обнаруженные ошибки» и выполним проверку.Последовательное обновление через 15–20 файлов .cfu — долгий процесс, многократно увеличивающий вероятность ошибок. Фирма «1С» регулярно выпускает полные файлы поставки (.cf) для так называемых ключевых или узловых релизов.
Проанализируем файл ReadMe.txt или описание порядка обновления в дистрибутиве. Если текущий релиз позволяет совершить «прыжок» сразу через 3–5 версий с использованием полного файла поставки .cf, выполним обновление через него. Это сократит количество циклов реструктуризации и сбережет таблицы базы данных от фрагментации.
Чтобы избежать отката и рассинхронизации конфигурации поставщика при масштабных обновлениях, придерживаемся следующих правил:
Ctrl + S) и лишь затем нажимаем F7.