Как определить, на какой операционной системе запущен мобильный клиент 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке мобильных приложений на платформе 1С:Предприятие часто возникает необходимость выполнить специфический код в зависимости от типа устройства: будь то iOS или Android. Разберем, как правильно реализовать эту задачу, учитывая лучшие практики написания чистого и производительного кода.

Использование объекта СистемнаяИнформация

Основным инструментом для получения данных об устройстве, на котором выполняется код, является объект СистемнаяИнформация. Этот объект предоставляет доступ к множеству свойств, включая ВерсияОС, которая содержит строку с названием операционной системы и её версией.

Для определения типа ОС мы можем проанализировать строку, которую возвращает свойство ВерсияОС. Рассмотрим простой пример реализации функций-проверок:


Функция ЭтоIOS() Экспорт
    СИ = Новый СистемнаяИнформация();
    ВерсияОС = ВРЕГ(СИ.ВерсияОС);
    Возврат Найти(ВерсияОС, "IOS") <> 0;
КонецФункции

Функция ЭтоANDROID() Экспорт
    СИ = Новый СистемнаяИнформация();
    ВерсияОС = ВРЕГ(СИ.ВерсияОС);
    Возврат Найти(ВерсияОС, "ANDROID") <> 0;
КонецФункции

Оптимизация архитектуры кода

Хотя предложенный выше вариант работает, он не является оптимальным с точки зрения производительности. Объект СистемнаяИнформация — это «тяжелый» объект. Если вызывать его конструктор каждый раз при проверке типа ОС внутри циклов или сложных алгоритмов, приложение начнет работать медленнее.

Более грамотным подходом будет создание единой функции, которая определяет тип ОС один раз, и использование оберток. Мы рекомендуем реализовать механизм кэширования или вызывать определение единожды при старте сеанса.

Рассмотрим структуру «универсального определителя»:


Функция ОпределитьТипКлиента() Экспорт
    СИ = Новый СистемнаяИнформация();
    ВерсияОС = ВРЕГ(СИ.ВерсияОС);
    
    Если Найти(ВерсияОС, "IOS") <> 0 Тогда
        Возврат "iOS";
    ИначеЕсли Найти(ВерсияОС, "ANDROID") <> 0 Тогда
        Возврат "Android";
    Иначе
        Возврат "Other";
    КонецЕсли;
КонецФункции

Теперь на основе этой функции мы можем создать удобные методы-обертки, которые будут использовать результат предыдущего вычисления, что значительно повысит быстродействие вашего приложения.

Рекомендации по реализации

  1. Избегайте избыточного вызова конструктора: Старайтесь получать данные об операционной системе один раз при запуске программы и сохранять их в переменную модуля или параметры сеанса.
  2. Логика условий: Вместо каскада условий Если - ИначеЕсли, используйте централизованную функцию возврата строкового или перечислимого значения. Это упростит поддержку кода в будущем.
  3. Учет платформы: Помимо анализа строк, помните, что платформа 1С может предоставлять специфические возможности для проверки окружения. Старайтесь использовать стандартные методы платформы, прежде чем прибегать к парсингу строк.

Подводя итог, можно сказать, что хотя анализ СистемнаяИнформация.ВерсияОС является рабочим решением, чистота вашего кода зависит от того, насколько грамотно вы организуете обращение к этим системным данным. Старайтесь инкапсулировать логику определения типа клиента в отдельные функции, чтобы сделать ваш проект масштабируемым и легко поддерживаемым.

← На главную