Как увеличить размер кнопок в диалогах 1С для работы на ТСД?

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

При работе с 1С через терминалы сбора данных (ТСД) по удаленному рабочему столу программисты часто сталкиваются с аппаратными ограничениями устройств. Маленький физический размер экрана (например, 5 на 8 см) делает стандартные системные диалоги практически непригодными для использования: кнопки «Да», «Нет» или «ОК» оказываются слишком мелкими, и кладовщикам трудно попасть по ним пальцем. Стандартная функция Вопрос() позволяет стилизовать текст сообщения с помощью объекта ФорматированнаяСтрока, но она никак не влияет на геометрические размеры самих кнопок.

В этой статье мы разберем несколько стратегий решения этой проблемы: от создания собственных форм до настройки параметров платформы и операционной системы.

Вариант 1. Создание собственной формы диалога

Проанализируем самый надежный способ, к которому рано или поздно приходят все разработчики мобильных решений на базе RDP — это отказ от стандартного метода Вопрос() в пользу разработки собственной универсальной формы. Это позволяет полностью контролировать визуальное представление элементов.

Разберем по шагам, как это реализовать:

  1. Создадим в конфигурации новую общую форму (например, ОбщаяФорма.ДиалогВопросаТСД).
  2. На форме разместим декорацию типа «Надпись» для текста вопроса и несколько кнопок (например, «Кнопка1», «Кнопка2»).
  3. Для кнопок установим свойства РастягиватьПоГоризонтали и зададим значительную МинимальнуюВысоту (например, 2 или 3 в единицах платформы), а также увеличим шрифт в свойстве Шрифт.
  4. В модуле формы опишем логику закрытия с передачей выбранного значения.

Рассмотрим пример кода для вызова такой формы из программного модуля:


ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТекстВопроса", "Выполнить загрузку данных?");
ПараметрыФормы.Вставить("Заголовок", "Подтверждение");

ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ДиалогВопросаТСД", ПараметрыФормы, , , , , ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);

В самой форме в обработчике нажатия кнопки мы просто закрываем форму, возвращая результат:


&НаКлиенте
Процедура КомандаДа(Команда)
    Закрыть(КодВозвратаДиалога.Да);
КонецПроцедуры

Этот метод гарантирует, что кнопки будут именно того размера, который удобен пользователю на конкретной модели ТСД.

Вариант 2. Использование режима тактильного управления

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

Проанализируем ситуацию: когда этот режим активирован, платформа автоматически увеличивает отступы между элементами и делает некоторые системные элементы крупнее. Активировать его можно несколькими способами:

  1. Использовать параметр запуска в ярлыке 1С: /TouchInterface.
  2. Установить в свойствах конфигурации режим использования интерфейса «Тактильный».

Хотя это не даст такого же гибкого контроля, как собственная форма, это может значительно улучшить общую эргономику приложения на ТСД без изменения программного кода.

Вариант 3. Масштабирование через настройки RDP и Windows

Посмотрим на проблему с точки зрения системного администрирования. Поскольку работа ведется через удаленный рабочий стол, отрисовкой окон занимается ОС сервера. Если мы изменим настройки масштабирования (DPI) для пользователя на стороне сервера, Windows увеличит все элементы интерфейса, включая системные шрифты и заголовки кнопок диалога Вопрос().

Для этого необходимо:

  1. Зайти под учетной записью пользователя ТСД на сервер.
  2. В настройках экрана (Display Settings) изменить параметр «Изменение размера текста, приложений и других элементов» (Scaling) на 125% или 150%.

Важно: Этот метод затронет абсолютно все приложения в сессии пользователя, что может быть как плюсом, так и минусом.

Вариант 4. Использование готовых решений из БСП или типовых конфигураций

Если вы работаете в современной типовой конфигурации (например, «Розница 2.3» или «Управление торговлей 11»), в них уже могут быть реализованы механизмы для работы на малых экранах. Проанализируем пример из конфигурации «Розница».

В ней существует общая форма ФормаРМКУправляемаяИнформацииОбОшибке или механизмы обработки РМК (рабочего места кассира). В этих формах кнопки изначально проектировались под сенсорные мониторы. Вы можете найти в коде вызовы через ОбщегоНазначенияКлиент.СообщитьПользователю или аналогичные методы Библиотеки стандартных подсистем (БСП). В БСП часто используется форма СтандартныйВопрос, которую можно один раз кастомизировать в конфигураторе, и это изменение применится ко всем вызовам в системе.

Вариант 5. Асинхронные методы и современный подход

Рассмотрим подробнее использование метода ПоказатьВопрос(). Хотя сам по себе переход на асинхронность не меняет визуальный размер кнопок, он является обязательным для современных конфигураций 1С. При работе в веб-клиенте или мобильном клиенте (не RDP), асинхронные окна отрисовываются средствами браузера или мобильной ОС, которые часто автоматически адаптируют размер кнопок под палец пользователя.

Пример использования асинхронного метода:


ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьОтвет", ЭтотОбъект);
Текст = Новый ФорматированнаяСтрока("Вы уверены?", Новый Шрифт(,,Истина, 16));
ПоказатьВопрос(ОписаниеОповещения, Текст, РежимДиалогаВопрос.ДаНет);

Резюме: Если вам требуется гарантированный результат и удобство для кладовщика, наиболее правильным путем будет создание собственной общей формы с крупными кнопками. Это позволит вам не зависеть от настроек масштабирования Windows и ограничений платформы по стилизации стандартных диалогов.

← На главную