При разработке мобильных приложений на платформе 1С:Предприятие часто возникает задача однозначной идентификации устройства. Это необходимо для лицензирования ПО, защиты базы данных, организации обмена с сервером или привязки конкретной рабочей сессии к определенному гаджету. Рассмотрим, какие инструменты предоставляет платформа 1С для решения этой задачи и с какими ограничениями можно столкнуться на практике.
В платформе 1С предусмотрен встроенный механизм для получения уникального идентификатора клиента. Для этого используется свойство ИдентификаторКлиента объекта СистемнаяИнформация.
Разберем простой пример получения этого значения в коде:
СистемнаяИнформация = Новый СистемнаяИнформация;
Сообщить(СистемнаяИнформация.ИдентификаторКлиента);
Данный метод возвращает уникальный идентификатор (GUID), сформированный платформой. Посмотрим на особенности работы этого свойства:
Чтобы зафиксировать полученный идентификатор и использовать его в дальнейших сессиях обмена или привязки логики, проанализируем пример сохранения значения в константу при первом старте приложения:
&НаСервере
Процедура ПроверитьИдентификаторНаСервере()
Если НЕ ЗначениеЗаполнено(Константы.СистемныйИдентификатор.Получить()) Тогда
СИ = Новый СистемнаяИнформация;
Константы.СистемныйИдентификатор.Установить(СИ.ИдентификаторКлиента);
Сообщить("Установлен системный идентификатор");
КонецЕсли;
КонецПроцедуры
Многие разработчики пытаются использовать IMEI или жесткие аппаратные идентификаторы оборудования. Однако штатный язык 1С не имеет прямых методов для считывания IMEI. Выясним основные причины и нюансы этого ограничения:
Если стандартного ИдентификаторКлиента недостаточно и требуется гарантированная привязка к мобильному гаджету, рассмотрим альтернативные варианты архитектуры:
Разработка внешней компоненты под мобильную платформу позволяет обращаться к системному API операционной системы Android и получать Settings.Secure.ANDROID_ID (SSAID). Этот код уникален для комбинации устройства и разработчика и сохраняется при переустановке приложения (до полного сброса устройства к заводским настройкам).
Использование штатного объекта 1С ЗапускПриложенияМобильногоУстройства позволяет передать Intent вспомогательному нативному приложению, которое считывает параметры ОС и возвращает результат обратно в 1С через массив ДополнительныеДанные.
С помощью внешней компоненты генерируется уникальный GUID при первом запуске и сохраняется в системное защищенное хранилище (KeyStore в Android или Keychain в iOS). Данное значение не удаляется даже при полной очистке кэша или переустановке самого мобильного приложения 1С.