Публикация — только начало. Реальная ценность тиражного решения проявляется в том, как вы выпускаете обновления, держите совместимость с новыми версиями ядра и PHP и реагируете на обращения клиентов.
Жизненный цикл после публикации
После того как решение прошло модерацию и появилось в каталоге Маркетплейс, начинается основной этап работы — сопровождение. Он состоит из регулярных обновлений, поддержки пользователей и контроля совместимости с постоянно меняющейся платформой 1С-Битрикс.
Технически обновления распространяются через систему SiteUpdate: партнёр загружает новую версию в кабинете, она попадает на серверы updates.bitrix.info, а установленные копии получают её при очередной проверке обновлений. Клиенту не нужно ничего скачивать вручную — обновление приходит тем же каналом, что и обновления самого ядра.
Версии и семантика
Текущая версия решения хранится в файле install/version.php в виде массива с ключами VERSION и VERSION_DATE. Именно этот файл система сравнивает при проверке обновлений: если на серверах обновлений лежит версия выше, чем установленная, клиент увидит доступное обновление.
Рекомендуется придерживаться семантического версионирования вида MAJOR.MINOR.PATCH. Это делает поведение обновлений предсказуемым и для вас, и для клиентов, и упрощает ведение changelog.
| Тип | Пример | Что меняется | Риск для клиента |
|---|---|---|---|
| Патч | 1.4.0 → 1.4.1 | Исправления ошибок, мелкие правки | Минимальный |
| Минор | 1.4.1 → 1.5.0 | Новая функциональность без ломки совместимости | Низкий |
| Мажор | 1.5.0 → 2.0.0 | Несовместимые изменения, миграции данных | Высокий, нужны предупреждения |
Мажорные версии, ломающие обратную совместимость, стоит выпускать редко и всегда сопровождать понятным описанием миграции.
Updater-скрипты и структура обновления
Каждое обновление — это архив с новыми файлами решения и опциональными updater-скриптами. Файлы вида updater.php внутри пакета обновления выполняются автоматически при установке и позволяют провести миграцию: добавить поля в таблицы, обновить настройки модуля, зарегистрировать новые обработчики событий.
Внутри updater-скрипта доступен объект $updater, через который выполняются служебные операции. Типовой порядок действий:
- Проверить установленную версию модуля и редакцию продукта.
- Выполнить изменения структуры БД идемпотентно (проверять существование полей и таблиц перед созданием).
- Обновить или дополнить настройки, не затирая пользовательские значения.
- Зарегистрировать новые обработчики и агенты, снять устаревшие.
Совместимость с ядром и PHP
Платформа развивается: выходят новые версии ядра, повышаются требования к версии PHP, меняются рекомендованные API. Задача разработчика решения — поддерживать актуальную совместимость и не ломать работу на поддерживаемых конфигурациях.
- Тестируйте решение на актуальных версиях PHP, поддерживаемых платформой, и уходите от устаревших конструкций языка.
- Используйте документированные API ядра (например, ORM D7) вместо прямых запросов к таблицам, которые могут измениться.
- Отслеживайте deprecated-методы и заранее переводите код на актуальные аналоги.
- Указывайте корректные требования к редакции и версии продукта в описании решения.
Проверить окружение перед запуском тяжёлой логики можно, например, обратившись к константам платформы и функциям вида CheckVersion(SM_VERSION, '...'), чтобы аккуратно деградировать функциональность на старых сборках.
Техподдержка, отзывы и рейтинг
Обращения клиентов приходят через кабинет партнёра: там ведётся переписка по каждому решению. Скорость и качество ответов напрямую влияют на рейтинг и отзывы, которые видят потенциальные покупатели в карточке решения.
Как правило, при покупке клиент получает определённый период бесплатных обновлений и поддержки (часто — год), после чего продление платное. Это нужно заранее и прозрачно отразить в описании и лицензионном соглашении, чтобы не порождать конфликтных ситуаций.
- Отвечайте на обращения быстро и по существу — история переписки видна и влияет на репутацию.
- На негативные отзывы реагируйте конструктивно: предлагайте решение проблемы, а не спорьте.
- Ведите публичный
changelog, чтобы клиенты понимали, что именно меняется в каждой версии. - Типовые вопросы выносите в документацию решения и в раздел FAQ карточки.
Регламент выпуска и регрессионное тестирование
Чтобы обновления не превращались в источник инцидентов на сайтах клиентов, нужен воспроизводимый регламент выпуска. Минимальный набор шагов перед публикацией новой версии:
- Прогнать регрессионное тестирование на чистой установке и на копии с демо-данными.
- Проверить установку обновления поверх предыдущей версии, а не только чистую инсталляцию.
- Убедиться, что updater-скрипты отрабатывают на разных редакциях и версиях PHP.
- Обновить
install/version.php, changelog и, при необходимости, документацию. - Загрузить пакет в кабинет и дождаться прохождения модерации.
Отдельная поддерживаемая ветка для критических исправлений позволяет выпускать патчи, не выкатывая клиентам недоделанную мажорную функциональность.
Снятие и архивация решения
Иногда решение достигает конца жизненного цикла: технология устарела, продукт заменён новым или его дальнейшая поддержка нерентабельна. В этом случае решение снимают с продажи или переводят в архив.
Здесь важно позаботиться о действующих клиентах: заранее уведомить их, обозначить дату прекращения поддержки, при возможности предложить путь миграции на актуальный продукт. Резкое исчезновение решения без предупреждения бьёт по репутации всего партнёрского аккаунта.
Итог
Обновление и поддержка — это непрерывный процесс, а не разовая задача. Аккуратное версионирование через install/version.php, безопасные updater-скрипты, контроль совместимости с ядром и PHP, честные условия поддержки и быстрая реакция на обращения формируют репутацию решения и его коммерческий успех.
Если вы хотите выстроить надёжный процесс сопровождения тиражного продукта — настроить регламент выпуска, автоматизировать тестирование и обновления, — мы помогаем с архитектурой сложных проектов, DevOps-практиками и технической поддержкой на всех этапах жизненного цикла решения.
Частые вопросы
Где хранится текущая версия тиражного решения?
В файле install/version.php внутри модуля, в массиве с ключами VERSION и VERSION_DATE. Именно по нему система обновлений определяет, доступна ли новая версия для установленной копии.
Как обновление доходит до сайта клиента?
Через штатную систему обновлений: партнёр загружает пакет в кабинете, он попадает на серверы updates.bitrix.info, а установленная копия получает обновление при очередной проверке тем же каналом, что и обновления ядра.
Что такое updater-скрипт и зачем он нужен?
Это файл, который выполняется автоматически при установке обновления и проводит миграцию: меняет структуру таблиц, дополняет настройки, регистрирует обработчики. Он должен быть идемпотентным и не удалять пользовательские данные.
Как выбрать номер новой версии?
Придерживайтесь семантического версионирования MAJOR.MINOR.PATCH: патч для исправлений, минор для новой функциональности без ломки совместимости, мажор для несовместимых изменений с миграциями.
Сколько времени клиент получает бесплатные обновления?
Обычно при покупке предоставляется ограниченный период бесплатных обновлений и поддержки, часто около года, после чего продление платное. Конкретные условия задаёт партнёр и фиксирует в описании и лицензионном соглашении.
Как поддерживать совместимость с новыми версиями PHP?
Тестировать решение на актуальных поддерживаемых версиях PHP, уходить от устаревших конструкций языка, использовать документированные API ядра вместо прямых запросов к таблицам и заранее заменять deprecated-методы.
Как отвечать на негативные отзывы?
Конструктивно: реагировать быстро, предлагать конкретное решение проблемы через кабинет партнёра. Отзывы и рейтинг видны в карточке решения и напрямую влияют на его продажи.
Что делать при снятии решения с продажи?
Заранее уведомить действующих клиентов, обозначить дату прекращения поддержки, по возможности предложить путь миграции и сохранить исходники, историю версий и документацию для оставшихся пользователей.
Поможем с настройкой и поддержкой Для разработчиков
Поможем с настройкой, доработкой и поддержкой Для разработчиков.