Многие разработчики при переходе на версии платформы 8.3.19 и 8.3.20 столкнулись с критической проблемой: при попытке обновить конфигурацию базы данных после изменения расширения (или даже при простом добавлении реквизита в расширение) программа аварийно завершает работу. Это происходит как в файловых, так и в серверных вариантах на различных СУБД, включая PostgreSQL.
В этой статье мы подробно разберем причины такого поведения платформы и рассмотрим пошаговые методы решения, которые помогут вернуть стабильность рабочему процессу. Давайте вместе проанализируем ситуацию и выясним, как обойти эти «подводные камни» технологической платформы.
Проанализируем техническую сторону вопроса. Падение платформы в данных релизах (особенно часто упоминаются 8.3.20.1613, 8.3.20.1674 и 8.3.19.1417) обычно связано с несколькими ключевыми факторами:
Объект, механизм может дать сбой, приводя к обращению к неверному адресу памяти._ExtensionXXXX).Рассмотрим наиболее надежный способ, который помогает «вылечить» базу, если обычное обновление вызывает вылет. Этот метод позволяет очистить системные таблицы от фантомных записей о расширении.
Разберем алгоритм действий:
.cfe).Этот метод принудительно пересоздает все связи метаданных «с чистого листа», что во многих случаях предотвращает падение.
Проанализируем ситуацию, когда расширение разрабатывалось на старой платформе (например, 8.3.14), а запуск происходит на 8.3.20. Разница в механизмах работы расширений между этими версиями колоссальна.
Попробуем выполнить следующие шаги:
8.3.14, не оставляйте в расширении значение «Не использовать» или «Версия 8.3.20».Обычная очистка папок в %AppData% часто бывает недостаточной. Если вы работаете в клиент-серверном варианте, необходимо обратить внимание на серверный кэш.
Выполним процедуру полной очистки:
C:\Program Files\1cv8\srvinfo).reg_1541), а внутри нее — папку конкретной информационной базы по её UUID.snccntx. Там хранятся сеансовые данные и кэш метаданных, которые могут вызывать сбои при обновлении расширений.Если база работает на PostgreSQL, падение может быть спровоцировано повреждением индексов в служебных таблицах, где хранятся конфигурации. Попробуем выполнить обслуживание БД средствами СУБД.
Выполните следующие SQL-команды через pgAdmin или консоль:
REINDEX TABLE config;
REINDEX TABLE configsave;
VACUUM ANALYZE config;
VACUUM ANALYZE configsave;
Эти действия перестроят индексы и обновят статистику для таблиц, в которые Конфигуратор записывает изменения перед их применением. Это часто помогает, если платформа «зависает» на этапе «Запись конфигурации» и затем вылетает.
Выясним причину, описанную некоторыми разработчиками как «эффект пустых строчек». Иногда при заимствовании формы в расширение вместе с реквизитом Объект платформа теряет описание типов. Если вы заметили, что в расширении имена реквизитов стали пустыми или вместо типов отображается <Объект не найден>, сделайте следующее:
Подводя итог, стоит отметить, что релизы 8.3.20.1613 и 8.3.20.1674 официально признаны экспертным сообществом «проблемными» в части работы с расширениями. Если вышеперечисленные методы не помогают, рассмотрим следующие варианты:
rphost и Конфигуратора при обновлении расширений.Помните, что перед любыми манипуляциями с расширениями в Конфигураторе на этих версиях платформы крайне желательно завершать все активные сеансы пользователей и отключать фоновые задания, чтобы минимизировать риск блокировки таблиц метаданных.