При разработке мобильных приложений на платформе 1С часто возникает необходимость получить информацию об аппаратной части устройства. Это может быть полезно для оптимизации производительности, сбора статистики или адаптации интерфейса под конкретное железо. Одной из ключевых характеристик является тип процессора. В данной статье мы разберем, какими способами можно получить эти данные, начиная от стандартных методов платформы и заканчивая более сложными техническими решениями.
Самый простой и очевидный способ, предусмотренный разработчиками 1С, — это обращение к свойствам объекта СистемнаяИнформация. Рассмотрим, как это реализовано в коде. Этот метод работает быстро и не требует специальных разрешений от операционной системы.
Проанализируем пример кода, который позволяет вывести информацию о процессоре:
СисИнфо = Новый СистемнаяИнформация;
ТипПроцессора = СисИнфо.Процессор;
Сообщить("Тип процессора устройства: " + ТипПроцессора);
Разберем подробнее, что именно мы получаем в результате. На настольных ПК это свойство возвращает подробную информацию (например, «Intel Core i7»). Однако на мобильных устройствах (Android или iOS) ситуация иная. Платформа 1С стремится к универсальности, поэтому свойство Процессор чаще всего вернет архитектуру набора команд (ISA), например, ARM или x86.
Важный нюанс: Если вам достаточно знать архитектуру для выбора нужной библиотеки или компоненты, этого метода хватит. Но если ваша задача — узнать коммерческое название чипа (например, Snapdragon 8 Gen 2), стандартных средств будет недостаточно.
Для получения детальных характеристик «железа» мы можем воспользоваться механизмом внешних компонент. Это позволяет 1С напрямую обращаться к API операционной системы Android или iOS. Рассмотрим, как это работает для каждой системы.
Для ОС Android: Мы можем написать небольшую компоненту на Java, которая будет обращаться к классу android.os.Build. В этом классе содержатся поля, которые дают гораздо больше информации:
BOARD — название основной платы.HARDWARE — название чипсета от производителя.SOC_MODEL — модель однокристальной системы (доступно в современных версиях API Android).Для iOS: В экосистеме Apple прямой доступ к названию процессора через программный код ограничен из соображений безопасности. Тем не менее, внешняя компонента может получить идентификатор модели (например, «iPhone 15,3»). Далее, используя внутреннюю таблицу соответствия, мы можем легко определить, какой процессор установлен в данной модели (в данном примере это A16 Bionic).
Выясним причину, по которой Android позволяет получить больше данных. Это открытая операционная система на базе ядра Linux, где информация о системе представлена в виде виртуальных файлов. Мы можем попытаться прочитать файл /proc/cpuinfo с помощью средств 1С или системных команд оболочки.
Рассмотрим пример алгоритма действий:
/proc/cpuinfo.Processor, model name или Features.Обратите внимание: В последних версиях Android (начиная с 10-11 и выше) доступ к системным файлам для обычных приложений постепенно ограничивается Google. Поэтому данный метод может вернуть пустую строку или ошибку доступа на новых смартфонах без специальных прав (root).
Если нам не удается получить данные напрямую от железа, мы можем применить обходной, но очень эффективный путь. Идея заключается в связке локальных данных и внешнего справочника характеристик. Разберем этот метод по шагам:
СистемнаяИнформация.Модель.Этот способ является наиболее надежным для бизнес-приложений, так как позволяет получить маркетинговое название процессора, которое понятно пользователю.
Проанализируем ситуацию, когда 1С работает через Мобильный клиент или как веб-приложение. В этом случае у нас есть доступ к объекту ПолеHTMLДокумента и возможностям JavaScript. С помощью библиотек WebGL можно получить информацию о видеоускорителе (GPU). Поскольку в современных смартфонах GPU жестко интегрирован в процессор (SoC), зная модель GPU (например, Adreno 740), мы со 100% вероятностью можем определить модель центрального процессора.
Подведем итог: Для базовых задач инвентаризации используйте СистемнаяИнформация.Процессор. Если же вам требуется глубокая диагностика устройства, оптимальным выбором будет использование внешних компонент или интеграция с онлайн-базами данных характеристик по модели устройства.