Кто подскажет как определить диагональ экрана? Я знаю, что есть функция "ПолучитьИнформациюЭкрановКлиента" которая возвращает информацию о подключенных экранах, но к сожалению получить из этих данных диагональ экране не получается... Более того информация не всегда корректна (например телефон показывает разрешение 2340×1080 при 397 ppi а 1С возвращает 2137*1080 и 480 DPI) имея эти данные никак не могу получить диагональ экрана... Другими словами имея данные 2340×1080, 397 ppi - высчитать диагональ не проблема а вот имея вместо ppi --> dpi начинается проблема.
(1) В 1С-овской 1С:Мобильная касса есть такая функция, посмотрите, вдруг поможет.
Там тоже используется ПолучитьИнформациюЭкрановКлиента(), но не в лоб, а есть некоторые вычисления, попробуйте насколько корректно на вашем экране отработает.
Функция ЭтоПланшет() Экспорт
ЭтоПланшет = Ложь;
#Если МобильноеПриложениеСервер Тогда
Попытка
ИнформацияЭкрана = ПолучитьИнформациюЭкрановКлиента();
DPI = ИнформацияЭкрана[0].DPI;
Высота = ИнформацияЭкрана[0].Высота;
Ширина = ИнформацияЭкрана[0].Ширина;
ВысотаDP = Окр(160 / DPI * Высота);
ШиринаDP = Окр(160 / DPI * Ширина);
Диагональ = Окр(Sqrt((Высота/DPI*Высота/DPI)+(Ширина/DPI*Ширина/DPI)));
Если Диагональ < 7 Тогда // http://developer.android.com/intl/ru/design/style/metrics-grids.html
ЭтоПланшет = Ложь;
Иначе
ЭтоПланшет = Истина;
КонецЕсли;
Исключение
ЭтоПланшет = Ложь;
КонецПопытки;
#Иначе
ЭтоПланшет = Истина;
#КонецЕсли
Возврат ЭтоПланшет;
КонецФункции
(10) Спасибо, я делаю все тоже самое, но проблема в том, что для данной формулы (что бы она правильно работала) требуется ppi а не dpi иначе диагональ вычисляется не правильно (в их случае возможно это не критично ибо они всего лишь пытаются определить планшет это или нет)
(2) Будет аналогично первому :)
(3) Информация конечно интересная, только толку от нее ноль.
(4) Способ реально рабочий, но к сожалению нужно програмно определить и в зависимости от диагонали открыть нужную форму.