Установка, удаление и миграции
Процесс установки (DoInstall()) и деинсталляции (DoUninstall()) модуля управляет структурой таблиц, копированием файлов компонентов и регистрацией обработчиков событий. При удалении обязательно реализуется пошаговый диалог с запросом сохранения таблиц (savedata), предотвращающий случайную безвозвратную потерю пользовательских данных.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Метод DoInstall()
-
2
Метод DoUninstall()
-
3
Миграции базы данных
Материалы
Официальная документация
-
Создание модуля Новая дока
Рекомендуем со стороны
-
sprint.migration (Миграции для разработчиков) Репозиторий
Проверь себя
Заказчик нажал «Стереть» у модуля на проде, чтобы переустановить, и таблица заявок за два года исчезла. Что должно было быть в модуле?
Пошаговое удаление: DoUninstall() на первом шаге показывает форму через IncludeAdminFile() с флагом savedata, и UnInstallDB() не вызывает dropTable(), если администратор оставил флаг. Без этого вопроса удаление данных — один клик.
Почему registerModule() вызывают после InstallDB(), а не до?
Если SQL создания таблиц упал, модуль уже числится установленным, но базы у него нет: обработчики и агенты начнут вызываться и падать. Регистрация — последний шаг после успешного создания таблиц и копирования файлов.
Модуль стоит на трёх контурах, и в таблицу нужно добавить колонку. Почему правка install.sql не решает задачу?
install.sql выполняется один раз при установке, на уже установленных контурах он не запустится. Нужен механизм миграций с версионированием и запуском из деплоя; проверки isTableExists() и getTableFields() в коде годятся для одной-двух правок.
Что ядро делает само при удалении модуля, а что остаётся на вас?
Агентов модуля ядро удаляет автоматически. Обработчики событий, таблицы, скопированные файлы и пользовательские поля снимаете вы в UnInstallDB(), UnInstallFiles() и unRegisterEventHandler().
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить