В современной складской и производственной логистике мобильные решения на базе платформы 1С становятся стандартом. Система Simple UI представляет собой гибкий конструктор, позволяющий создавать интерфейсы для ТСД (терминалов сбора данных) без необходимости сложной разработки мобильных приложений. В этой статье мы подробно разберем ключевые вопросы, возникающие у разработчиков при создании процессов, управлении циклами и обработке данных на мобильных устройствах.
Одной из наиболее частых задач является корректный выход из цикла обработки данных (например, сканирования товаров в заказе) и возврат в родительский процесс или на начальный экран. Проанализируем, как это реализовано в системе. Для управления потоком выполнения предусмотрены специальные управляющие переменные.
Для прерывания цикла и перехода к следующему шагу внутри процесса используется переменная exitloop. Если вы определили экран как циклический, установка этой переменной в любое значение (часто используют "true" или пустую строку) заставляет систему выйти из итерации.
Рассмотрим пример кода в обработчике, когда нам нужно выйти из цикла, если задачи в рабочем листе закончились:
Если РезультатЗапроса.Пустой() Тогда
Переменные.Вставить("exitloop", "true");
КонецЕсли;
Важно понимать различие между exitloop и break. Переменная break полностью завершает текущий процесс. Если дочерний процесс был вызван методом StartProcessHashMap, он закроется как отдельное активити, и пользователь вернется в предыдущее окно. Если же необходимо программно переключиться на конкретный процесс (например, экран завершения заказа), эффективнее использовать команду StartProcess.
Интерфейс Simple UI позволяет динамически менять содержимое выпадающих списков. Разберем, как правильно заполнить элемент "Список значений" программно на стороне сервера 1С. Для этого переменной, привязанной к элементу, необходимо присвоить строку, где значения разделены точкой с запятой ;.
Важный нюанс: первое значение в такой строке считается заголовком или значением по умолчанию и обычно не используется для выбора как целевой элемент данных.
Пример формирования списка в обработчике "При запуске":
СписокВариантов = "Выберите номенклатуру...;Товар 1;Товар 2;Товар 3";
Переменные.Вставить("list_variable", СписокВариантов);
Если вам требуется обновить список в процессе ввода (например, после сканирования части наименования), помните, что Simple UI работает на переходах между экранами. Чтобы остаться на том же визуальном шаге, рекомендуется создать экран-копию или замкнуть переход самого на себя, предварительно обновив переменную списка.
Вывод табличных данных — критическая функция для WMS-систем. В Simple UI существует несколько способов отображения таблиц. Наиболее распространенный — использование режима План-факт. Рассмотрим по шагам, как передать таблицу с сервера на клиент и организовать навигацию по ней.
Таблица передается вместе с остальными переменными. Для обращения к полям текущей строки таблицы используются переменные с префиксом @@. Например, если в таблице есть колонки Item и Qty, то в надписях на экране можно использовать @Item для отображения данных текущей строки в цикле обхода.
Основные особенности работы с таблицами:
Qty) не отображается, убедитесь, что в конфигурации элемента задан заголовок для этого поля.Проанализируем работу со сканирующими устройствами. Simple UI имеет встроенную интеграцию с библиотекой ZXing для сканирования через камеру смартфона, что делает процесс максимально быстрым. Однако на профессиональных ТСД используется аппаратный сканер.
Часто возникает проблема: пользователь случайно нажимает кнопку "Scan" вместо экранной кнопки "Вперед", что может привести к пропуску логических шагов. Для реализации "бесшовного" цикла сканирования без лишних нажатий используйте опцию "Переключаться по окончанию ввода". Если установить этот флаг для поля ввода штрихкода, система автоматически инициирует событие перехода сразу после успешного считывания кода, исключая необходимость ручного подтверждения.
В последних версиях платформы добавлены специализированные элементы управления, такие как ввод даты и графическая подпись. Это позволяет автоматизировать процессы выдачи ТМЦ или приемки документов.
Для реализации поля подписи на экране:
Ввод даты реализуется через стандартный системный календарь Android, что минимизирует ошибки ручного набора цифр при вводе номеров приходных ордеров или сроков годности.
Разберем ситуацию, когда клиент под Windows выдает ошибку AttributeError: 'NoneType' object has no attribute 'read'. Это типичная проблема инициализации, связанная с тем, что скрипт не может найти или прочитать файл конфигурации. Проверьте секцию [CONNECTION] в файле config.ini. Там обязательно должны быть заполнены параметры url, code, username и password. Без связи с веб-сервисом 1С клиент не сможет получить структуру экранов.
Что касается ошибок в коде 1С внутри обработчиков ПриЗапуске: если система выдает общее сообщение "Не задано значение переменной", а подробностей нет, это может быть следствием перезаписи переменной СообщениеОбОшибке. В таких случаях рекомендуется временно логировать промежуточные значения в Журнал регистрации 1С на стороне сервера, чтобы понять, на каком этапе вычисления переменная принимает неопределенное значение.
Помните, что переменные в Simple UI существуют внутри процесса. Если вам нужно передать данные между разными процессами (например, из авторизации в сборку), это необходимо реализовывать на стороне сервера, сохраняя данные в привязке к конкретному мобильному клиенту (устройству) в базе 1С.