В процессе сопровождения информационных баз часто возникает задача автоматизации обновлений. При обслуживании нескольких систем регулярные процедуры выполняют с помощью программы автоматического обновления и архивирования баз 1С. Одной из подзадач является проверка: является ли текущая версия платформы 1С, на которой запущена база, актуальной (последней выпущенной вендором). В этой статье мы разберем, как отличить текущую установленную версию от актуальной версии на сайте, и какими программными способами можно получить заветный номер релиза с портала техподдержки.
Для начала проанализируем ситуацию и разграничим понятия. Многие начинающие разработчики путают объект СистемнаяИнформация с сервисами обновлений. Рассмотрим стандартный метод встроенного языка:
СИ = Новый СистемнаяИнформация;
ВерсияПлатформы = СИ.ВерсияПриложения;
Сообщить("Текущая версия платформы: " + ВерсияПлатформы);
Использование свойства ВерсияПриложения объекта СистемнаяИнформация позволяет узнать только ту версию, которая уже установлена на компьютере пользователя или сервере. Это не дает ответа на вопрос, вышла ли на сайте 1c.ru более новая версия. Чтобы узнать именно "актуальную" версию, нам придется обратиться к внешним ресурсам.
Если ваша конфигурация построена на базе БСП, в ней уже заложены механизмы взаимодействия с порталом 1С. Рассмотрим подробнее модуль ОбновлениеПрограммыВызовСервера. Типовые решения умеют проверять наличие обновлений как для конфигурации, так и для платформы.
Проанализируем алгоритм работы БСП:
https://update-api.1c.ru.Чтобы реализовать это в своей обработке, рекомендуется изучить функцию ПроверитьНаличиеОбновлений в общем модуле ОбновлениеПрограммы. БСП автоматически формирует структуру запроса, включая туда идентификатор вашего программного продукта. Для быстрого поиска примеров работы с функциями библиотеки пригодится справочник по методам БСП.
Если использование БСП невозможно или избыточно, разберем по шагам, как написать собственный "велосипед" для получения номера последнего релиза. Основная сложность здесь заключается в необходимости авторизации. Для предварительной отладки таких запросов можно использовать консоль HTTP-запросов для управляемых форм.
Выясним причину, по которой нельзя просто скачать файл: доступ к списку релизов платформы закрыт авторизацией для проверки наличия действующего договора ИТС. Рассмотрим схему действий:
Шаг 1: Авторизация на login.1c.ru
Нам необходимо отправить POST-запрос с логином и паролем, чтобы получить сессионные куки (cookies). Без них сервер releases.1c.ru отклонит любой запрос.
Соединение = Новый HTTPСоединение("login.1c.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/login");
Запрос.УстановитьТелоИзСтроки("inviteCode=&execution=e1s1&_eventId=submit&username=" + Логин + "&password=" + Пароль);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
// Здесь необходимо извлечь Cookie из заголовков ответа "Set-Cookie"
Шаг 2: Получение страницы со списком релизов
После успешного получения куки, выполним GET-запрос к странице проекта платформы. Например, для версии 8.3 URL будет следующим: https://releases.1c.ru/project/Platform83.
Шаг 3: Парсинг HTML-кода
Поскольку 1С не предоставляет публичного API для платформы в формате "одна ссылка — одна версия", нам придется проанализировать полученный текст страницы. Актуальная версия обычно находится в верхней строке таблицы. Ищите теги с классом versionColumn или аналогичные структуры внутри table.
// Пример упрощенного поиска версии в тексте страницы
ПозицияВерсии = Найти(ТекстСтраницы, "class=""versionColumn""");
// Далее программно извлекаем номер релиза из найденной строки
Существует менее известный, но более удобный для программной обработки ресурс https://releases.1c.ru/total. Если вы авторизованы, этот ресурс возвращает сводную информацию по всем доступным вам продуктам в формате XML.
Посмотрим на пример структуры такого файла:
<projects>
<project id="Platform83">
<version id="8.3.23.1865" date="2023-10-25"/>
</project>
</projects>
Для программиста этот способ является наиболее предпочтительным, так как работать с XML-структурой через ЧтениеXML гораздо надежнее и быстрее, чем парсить "сырой" HTML-код страницы, который может измениться при обновлении дизайна портала.
Важно помнить, что понятие "актуальная версия" может варьироваться в зависимости от операционной системы. При программном поиске учитывайте следующие идентификаторы продуктов (Project ID) на портале:
Platform83 — полная дистрибутивная версия платформы.ThinClient83 — только тонкий клиент.Технологическая платформа 8.3 — часто разделяется на пакеты для Windows, Linux и macOS.Мы выяснили, что стандартная СистемнаяИнформация полезна только для анализа локального окружения. Для получения действительно актуальной информации извне необходимо реализовать механизм HTTP-запросов с поддержкой SSL и авторизации на портале ИТС. Наиболее стабильным решением будет использование XML-фида /total или интеграция с методами БСП, которые берут на себя всю сложность взаимодействия с API обновлений 1С.