Simple UI: простой конструктор мобильных приложений для устройств на Android. Обновление от 04.03.24 - упрощенный Python
Разработка - Мобильная разработка
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
| Наименование | Скачано | Купить файл | По подписке PRO |
|---|---|---|---|
|
Новый комплект разработчика 12.02.24
.zip 243,12Mb ver:11.95.00
152
|
152 | 2 500 руб. Купить | 1 SM Скачать |
|
Старый комплект разработчика, Февраль 2022 - обработчики python, версия 9.5.05
.zip 134,43Mb ver:9.05.05
264
|
264 | 2 500 руб. Купить | 1 SM Скачать |
|
apk-файл 3.50.00 (последняя версия без Python)
.apk 4,34Mb ver:3.50.00
34
|
34 | 2 500 руб. Купить | 1 SM Скачать |
|
старый apk-файл (3.00.00)
.apk 4,33Mb ver:3.00.00
54
|
54 | 2 500 руб. Купить | 1 SM Скачать |
|
apk-файл 4.20.00
.apk 52,68Mb
43
|
43 | 2 500 руб. Купить | 1 SM Скачать |
|
Только Микро-WMS (без конструктора)
.zip 22,29Kb
32
|
32 | 2 500 руб. Купить | 1 SM Скачать |
|
Все необходимые объекты для Postgre SQL (для всех публикаций)
.txt 40,05Kb
35
|
35 | 2 500 руб. Купить | 1 SM Скачать |
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Полезные ссылки:
Новый телеграмм канал: https://t.me/devsimpleui
Он-лайн документация (которую можно выгрузить в щикарный PDF) : https://uitxt.readthedocs.io/
Режим дополненной реальности в платформе : //infostart.ru/1c/articles/1427287/
Видео о программе: https://youtu.be/G32A67Ny5Es
Мои эксперименты с OCR, распознаванием и т.д.://infostart.ru/1c/articles/1486598/, //infostart.ru/public/1159499/
Само приложение доступно в Google Play и в apk к статье
Возможности платформы
Так как система прежде всего рассчитана как рабочее место для сбора данных, предусмотрены широкие возможности ввода данных и организации интерфейса:
- Организация экранов со всеми возможными элементами ввода и отображения информации с произвольной разметкой
- Работа со штрих-кодами аппаратных сканеров или ТСД, в т.ч. подключение Bluetooth-сканеров в режиме SSP
- Распознавание штрихкодов камерой устройства
- Распознавание текста (OCR) с камеры с использованием оригинального улучшенного алгоритма
- Распознавание голоса
- Синтез речи (воспроизведение текста голосом)
- Звуковые сигналы
- Передачу GPS-координат и расшифровку мест
- Фотографирование и прикрепление из галереи
- Ввод рукописной подписи
- Печать из приложения
- Прием заказов и команд прямо на встроенный веб-сервис(не Push) напрямую, вззаимодействую я с пользователем в ральном времени
- Переключение экранов напямую с сервера или по теймеру
- Организация произвольных структур (документов) с прикреплением файлов и мультимедиа
Режимы работы
Приложение на Simple UI может работать в нескольких режимах:
Он-лайн режим тонкого клиента, где обработка и управление происходит полностью в бекенде (на стороне учетной системы). Т.е. со стороны учетной системы работает веб сервис, который принимает команды и отдает в ответах управляющие данные. Также сама конфигурация скачивается и обновляется с веб-сервиса каждый раз в момент запуска приложения. Весь обмен сводится к обмену стеком(массивом) переменных в обе стороны, которые содержат в себе и вводимые/выводимые данные и управляющие команды (например запуск экрана) Так, конструктор сделан в виде конфигурации 1С и может быть установлен на любую конфигурацию 1С в виде расширения или модуля. При этом код обработчиков можно писать прямо в «экранах» конструктора. Хранилищем данных и бекендом таким образом выступает учетная система.

Самостоятельный режим, где конфигурация хранится на устройстве и функционирует независимо от бекенда или в гибридном режиме. Обработка событий происходит командами конфигурации на устройстве. При этом приложение может работать как полностью off-line так и обмениваясь информацией с учетной системой через REST-интерфейс, т.е. сочетая различные режимы хранения и передачи данных:

- Off-line работа с собственной SQL базой используя SQL-команды. При этом с SQL можно взаимодействовать через встроенный в приложение собственный веб-сервис. Т.е. например сделать автономный ТСД на который данные (например справочник товаров) будут передаваться http-запросом со стороны учетной системы и забираться таким же способом. Например в готовых решениях есть офф-лайн решение для инвентаризации
- HTTP-запросами через REST API. Т.е. приложение отправляет запросы по событиям интерфейса которые обрабатываются на бекенде синхронно или асинхронно (для больших данных, например картинок). В конфигурации задаются команды REST, переменные передаются в теле запросов или в параметрах. В качестве бекенда может быть как та же 1С так и напрмиер Postgre SQL. Так, например на PostgreSQL c API PostgREST устроено бесплатное открытое готовое решение «Микро-WMS» которое работает как самостоятельных промежуточный бекенд между ERP системой и мобильными рабочими местами. Обработка осуществляется отправкой CRUD-команд на добавление, чтение, изменение данных в таблицах облачного бекенда, а логика частично реализована в хранимых процедурах и триггерах и также воспроизводится через RESTful API
- Совмещение этих двух режимов, где хранение в том числе происходит в СУБД на клиенте, а также реализована, например асинхронная отправка данных, отложенная отправка или просто обращения к веб сервисам по событиям приложения
- Документы – произвольные структуры данных со своим интерфейсом, которые являются одновременно контейнером хранения данных и объектом автоматической синхронизации данных и имеют автоматический интерфейс (или настраиваемые формы). Документами могут быть справочники или документы учетной системы (документы разделены по видам). Разработчик просто определяет структуру возможных и обязательных полей и включает ее в конфигурацию. Документы могут работать как самостоятельные объекты так и использоваться в интерфейсах произвольно (например справочник «Клиенты»). С технической точки зрения это произвольные json-объекты разделенные по видам и некоторым другим разделителям для которых генерируется вся инфраструктура. Так например можно настроить хранение и синхронизацию документов через облачную СУБД Postgre с автоматической синхронизацией между несколькими устройствами одного аккаунта.
Список релизов и развитие функционала
Обновление 21.11.19:
- Печать с устройства для обычных форм и для документов. Обновлено приложение, демо-база и инструкция.
Обновление 11.12.19:
-
распознавание текста
-
3 режима поиска в списке документов (по распознаванию текста, голосовой ввод, по штрих коду)
-
таблица в виде списка карточек
-
отправка оповещения на устройство в виде синтеза речи в фоновом режиме
Более подробно об этом с видео вот в этой статье: //infostart.ru/public/1166378
Обновление 20.01.20:
-
3 вида диаграмм
-
стрелочные индикаторы
-
картинки в контейнерах
-
Глобальные переменные
-
Константы
-
таймер экрана (обработчик ожидания)
-
команда управления экраном с сервера
Более подробно об этом с видео вот в этой статье: //infostart.ru/public/1179989/
Обновление 25.01.20 (обновилось только приложение, демку и инструкцию можно не скачивать):
-
Поддержка работы с Bluetooth-сканерами через bluetoоth соединение SSP (не как HID-девайс, а именно через порт). Такое соединение обладает большей надежностью и стабильностью при работе с большими штрих-кодами. Кроме того, так как не эксплуатируется клавиатура то можно на одном экране размещать текстовые поля, они не будут взаимодействовать со сканером, так как он ничего не пишет в клавиатуру. Работа с таким подключением ничем не отличается от работы в режиме "в разрыв клавиатуры" (HID-девайс), только нужно в настройках выбрать устройство и поставить галочку (сканер подключается при запуске приложения, также есть обновление соединения если сканер засыпает):

Обновление 15.02.20 (обновилась конфигурация, описание и приложение):
-
Таблицы в контейнерах: теперь можно размещать на экране сколько угодно таблиц
-
Списки в контейнерах: сколько угодно списков на экране. Например вот так

-
OData интерфейс - теперь можно не писать запросы для источников данных таблиц и списков, а писать OData запросы в одну строчку (при условии что параллельно с веб-сервисом опубликован интерфейс OData. Актуально для 1С и SAP)
Например вот так:
или так:
Для этого должен быть опубликован OData от базы:

-
План-факт для независимых экранов теперь запускает окно План-факт (как и для обычных)
-
Для всех элементов контейнера теперь можно задавать условную видимость
-
Для владельцев Pro-версии: теперь добавлено окно "О программе" в котором выводится ID приложения по которому можно получать обновления по запросу
Исправлены ошибки:
- ошибка экрана диалога - затирал переменные
- ориентация для кнопок не работала
- ошибка offline SQL
- ошибка интерфейса: перекрывание кнопок элементами
Обновление 31.03.20 (обновилась конфигурация, описание и приложение):
Статья с описанием касательно PostgREST тут: //infostart.ru/public/1217831/
Изменения:
- Функции работы с открытым и бесплатным облачным бекендом PostgREST, независимо от основной базы
- магазин конфигураций с возможностью организации собственного магазина в облаке
- функции измерения производительности
- фоновая работа с бекендом (для Pro-версии)
- Значительно улучшено распознавание текста за счет контекстно-зависимых настроек
- Исправлены ошибки:
- проблема с фотографированием
- передача больших SQL запросов теперь через POST а не в параметрах+в транзакции
- исправлена ошибка при нажатии на таблицу для не-Pro версии
Обновление 27.04.20 (обновилась конфигурация, описание и приложение):
- Функции для облачного бекенда PostgreSQL:
- обработка своих исключений/сообщений PostgreSQL, например, триггер на проверку заполнения
- получение ID добавленной записи
- организация Update записи
- организация команды Delete
- автоматическая синхронизация документов в облаке
- хранение картинок, файлов документов в отдельной таблице
- автосинхронизация внутри пользователя по разным устройствам и поддержание актуальности
- в магазине в облаке новая конфа с примерами документов
Прочее:
- Переназначение кнопки Назад в конструкторе
В новом релизе большое внимание уделено совершенствованию функций взаимодействия с PostgreSQL через REST-интерфейс и на текущий момент все CRUD-операции реализованы. А также некоторые сопутствующие функции. Например проверку корректности ввода данных логичнее всего организовать на серверной стороне, повесив триггеры на таблицы в которые осуществляется ввод. И если что то не так, то генерировать свое исключение. Например вот тут я проверяю что наименование не заполнено (в SimpleUI происходит обработка ошибки):

Вот текст кода триггера который это делает:
BEGIN
-- Проверить, что Наименование заполнено
IF NEW.name IS NULL or NEW.name='' THEN
RAISE EXCEPTION 'Наименование не может быть пустым';
END IF;
RETURN NEW;
END;
Также реализован возврат в специальную переменную ID вставленной записи (например если в таблице автонумератор и надо знать ID записи которую вы вставляете в таблицу). Также отдельно реализованы команды на удаление и обновление записи:

Теперь документы можно синхронизировать в своем облаке. Причем документы синхронизируются под своим аккаунтом на разных устройствах. Т.е. происходит поддержка актуальности всех изменений документов под одним пользователем. Вложения (картинки и файлы) при этом хранятся отдельно от JSON-структур документов. А в учетную систему документы попадают уже из PostgREST. В магазине есть конфигурация чтобы попробовать что это такое.

Обновление 09.05.20 (обновилась конфигурация, описание и приложение):
Дальнейшее углубление и развитие функций "самостоятельного режима" и теперь в поставке есть базовая SQL-WMS-система (описание готовится):
- Off-line и REST функции теперь объединены для составление одного потока команд
- REST теперь позволяет работать с любым REST-API поддерживающим JSON (не обязательно Postgre)
- команда "Вычислить выражение" - интерпретатор математических выражений с переменными
- в бекенде можно задавать свою ленту задач (кнопка ЗАДАЧИ в приложении) с запуском своих процессов
- Использование пользователя для бекенда в командах и переменных
- события можно задавать через запятую, например "Input,barcode" - 2 события на один обработчик
- клик по таблице для самостоятельного режима генерит переменные с ID, order и orderRef (чтобы сразу получить ID а не json)
И самое главное: базовая WMS на SQL в комплекте - код серверной части+конфигурация Simple UI : //infostart.ru/public/1234475/
Обновление 30.05.20 (обновилась конфигурация, описание и приложение):
Дальнейшее углубление и развитие функций "самостоятельного режима" и новые настройки программы:
- Загрузка картинок из галереи (аналогично как с камерой)
- Подсветка ШК в режиме сканирования камерой (в настройках)
- Выключение виртуальной клавиатуры полностью(в настройках)
- Другое поведение команды StartProcess - теперь это запуск нового процесса без возврата на предыдущий
- Использование произвольных логических выражений в оффлайн (пока в обычной версии, потом будет в pro) - теперь в самостоятельном режиме точно можно все!
- Команды на звуковые сигналы (100 сигналов андроида)
И самое главное - теперь документация в виде сайта в формате Sphinx/ReStruturedText - она переработана, из нее выкинуто все ненужное и оставлено только нужное, с нормальной навигацией и возможностью выгрузки красиво в PDF/EPUB
Обновление 15.07.20 (обновилась конфигурация и приложение):
Новые возможности:
- корпоративный чат через PostgREST как способ в т.ч. доставки задач до пользователя (описание в отдельной статье готовится)
- задачи через PostgREST с процессами и управляемые из процессов
- полный набор работы с JSON в самостоятельном режиме
Все это описано тут: //infostart.ru/public/1264771/
Обновление 23.07.20 (обновилось приложение):
- Теперь все приложение полностью бесплатно
Обновление 12.09.20 (обновилось приложение, демо-база, описание):
- развертывание конфигурации и настроек через текстовый файл
- сканирование настроек QR-код и запуск нужного процесса
- элемент экрана "Корзина"
- Настройка расположения текста в Таблице
Статья с описание нововведений будет тут: //infostart.ru/public/1293068/
Обновление от 07.11.2020 (обновилось приложение, демо-база, описание на подходе):
- Добавлены представления в виде списков карточек для всех режимов (как альтернатива например таблицам, также может использоваться как меню или список задач)
- Настройки главной страницы приложения
- Отключение настроек
- Расширенный инструментарий работы с JSON в самостоятельном режиме
- HTTP запросы к сторонним сервисам напрямую
- многочисленные исправления
Документация пока не обновлялась изза нехватки времени, но по демо-базе все совершенно понятно.
Подробнее об этом релизе тут: //infostart.ru/public/1322831/
Обновление от 22.01 (программа, демо-база, документация):
Большой пакет дополнений. Подробности тут: //infostart.ru/1c/articles/1357105/
Обновление от 12.02 (программа, демо-база, документация готовится):
- Теперь полноценные скрипты можно писать на Pyton 3.8 с библиотеками + появились новые виды обработчиков. Теперь можно писать обработчики любой сложности на python для оффлайн/онлайн режимов.
- Локальное хранилище конфигураций, он же стартер конфигураций и настроек подключения. Полезная информация о конфигурации, проверка подключения, версии.
- Комплекс дополнительных средств для логина: поле ввода пароля, команды на загрузку учетных данных и перезапуск клиента, переменные для получения текущих учетных данных
В демо есть исчерпывающее количество примеров, также видео https://youtu.be/TdplJaD02gU
Обновление от 11.03 (программа, демо-база, документация):
Большое количество полезных дополнений, все описано в этом посте: //infostart.ru/public/1400633/
Обновление от 17.04 (программа, демо-база, документация):
Новый режим компьютерного зрения и дополненной реальности ActiveCV. Описание тут //infostart.ru/public/1427287/
Обновление от 17.05 (программа, демо-база, документация):
Плитки, плиточные экраны, картинки из кеша и др. Описание тут: //infostart.ru/public/1441742/
Обновление от 12.06 (программа, демо-база, документация):
Фоновый сервис событий, голосовой ассистент и многое другое: //infostart.ru/1c/articles/1458666/
Обновление от 25.06 (программа, демо-база, документация):
Новая система хранения для оффлайн режима, альтернатива SQL . infostart.ru/1c/articles/1465761/
Обновление от 24.07 (программа, демо-база):
Распознавание лиц в ActiveCV , статья готовится
Обновление от 23.08 (программа, демо-база, документация):
Большой пак дополнений и исправлений: //infostart.ru/public/1502217/
Обновление 03.11 (программа, демо-база):
- новые формат хранения/обмена - самостоятельные файлы процессов
- работа с экранами и конфигурацией динамически
Подробнее тут : //infostart.ru/1c/articles/1542393/
Обновление 03.11 (программа, демо-база):
-ОRM, примеры работы с базой через ORM
Подробнее тут: //infostart.ru/public/1556433/
Обновление 25.12 (программа, демо-база, документация):
-Вывод картинок непосредственно из файлов во всех визуальных элементах - плитках, карточках, картинках на форме и т.д.
-Галерея-слайдер
-Awesome-шрифт для иконок
-Работа с файлами онлайн
-Команды бекапа базы
-Команды логирования и дампов (журнала приложения)
DB_PATH - переменная пути к SQL СУБД
_files - словарь для доступа к списку файлов
Подробнее тут: //infostart.ru/1c/articles/1576682/
28.01.2022
- Появился телеграмм канал: https://t.me/devsimpleui
Обновление 01.02.22 (программа, демо-база, документация, статья):
-обновление раздельного режима конфигурации и обработчиков
-использование нескольких конфигураций, автономные конфигурации
-переопределение главного меню
-меню экранов
-публикация конфигураций через GitHub или любой сервис
-контроль качества связи
Статья //infostart.ru/1c/articles/1597030/
Обновление 24.02.22 (программа, демо-база):
-новый подход по работе с python-обработчиками
Видео https://youtu.be/f7rA-GGjwlQ
Обновление 19.04.22 :
-новый комплект разработчика
Видео https://youtu.be/dvk94w7_xAU
Обновление 04.05.22 :
-пакет новых элементов
Обновление 14.05.22 :
-Обновление редактора
-возможности локализации решений
-автоматизация отладки
Подбробности в Телеграмм и документации с 16.05.22
Обновление 10.06.22 :
-прямая работа с NoSQL из Python https://uitxt.readthedocs.io/ru/latest/no_sql.html
Обновление 22.07.22 :
-активные элементы списков
-запоминание позиции списка
-поиск в списках
-группы в списках
-переопределение заголовков окон
-отправка данных на встроенный веб сервер
Подробнее тут: //infostart.ru/public/1698588/
Обновление 22.07.22 :
-печатные формы оффлайн
-html и JS
Подробнее тут: //infostart.ru/public/1716745/
Обновление 04.10.22 (конструктор, документация, приложение):
-векторная графика
Подробнее тут: //infostart.ru/public/1736200/
Обновление 19.11.22 (конструктор, документация, приложение):
* Улучшения customcards, customtable
* Управление видимостью и обновлением экрана
* Новое событие ПослеЗапуска
* Новые свойства контейнера: Переменная, Цвет фона, Padding и Толщина обводки
* Управление элементами из Java, Python
* Управление для ТСД Urovo
Подробнее тут (статья выйдет 21.11.22): //infostart.ru/public/1760354/
Обновление 03.02.23 (конструктор, документация, приложение):
* Новая архитектура обработчиков, хранения, запросов
* Новые команды
Подробнее тут : //infostart.ru/public/1800568/
Обновление 15.03.23 (документация, приложение):
* Воркеры
Подробнее тут (статья выйдет 15.03.23): //infostart.ru/public/1825700/
Обновление 5.04.23 (конструктор, документация, приложение):
* Обработчик runprogress
* Уведомление с прогресс-баром
* Проверка биометрии
* Диалог проверки ПИН-кода
* Плавающие кнопки
* Упрощённая поддержка автозаполнения
* Поле объекта
* BackScreen
* ShowProcessResult/FinishProcessResult, SetResultListener
* parent_screen,current_process_name,current_screen_name
* SetRed, SetGreen
* disable_events
* Переопределение поиска в тулбаре
* Открытие векторного редактора в режиме редактирования заданного файла
* Поддержка функций с произвольным числом аргументов
* Поддержка pymongo
Подробнее тут (статья выйдет 5.04.23): //infostart.ru/public/1839192/
Обновление 20.04.23 (конструктор, приложение):
*OpenCV. Описание в Телеграмм.
Обновление 17.06.23 (конструктор, приложение):
*ActiveCV Описание //infostart.ru/1c/tools/1882131/
Обновление 23.06.23 ( приложение):
*патч на приложение
Обновление 20.07.23 ( приложение,документация):
*Веб сокеты (подробности в статье)
*Исправление ошибок.
Обновление 05.09.23 ( приложение,документация):
*Работа с оборудованием и принтерами (подробности в статье)
*Исправление ошибок.
Подробности в статье
Обновление 03.10.23 ( приложение,документация):
*NoSQL SimpleBase: python-интеграция
*NoSQL SimpleBase: нативная интеграция
*работа с внешними файлами
*ручная работа с таймерами, настройками распознавания, диалогами
*улучшенный Мультисканер
*Исправление ошибок.
*и многое другое
Подробности в статье
Обновление 25.11.23 ( приложение,примеры):
-альтернативное создание экранов и визуальных элементов
Обновление 12.02.24 ( приложение,примеры):
-поддержка JavaScript
Обновление 04.03.24 ( приложение,примеры):
-упрощения для работы с Python
Вступайте в нашу телеграмм-группу Инфостарт
мобильная платформа Андроид Android приложение сканер штрих-код ТСД терминал Simple UI WMS штрихкод распознавание текста голоса синтез речи Odata облако
См. также
Мобильная разработка Сканер штрих-кода Терминал сбора данных 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)
Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.
3050 руб.
03.12.2018 72914 250 108
Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Разработчик Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)
Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически. Решение предназначено для считывания штрихкодов, а не для их создания и печати.
3050 руб.
22.04.2019 124910 739 207
Сканер штрих-кода Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Терминал сбора данных Мобильная разработка Разработчик Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Управленческий учет Платные (руб)
Android смартфон как беспроводной сканер штрих-кодов, QR-кодов (2D), терминал сбора данных (ТСД), подписка на штрих-код Комбайн
2196 руб.
18.01.2017 152653 235 237
Мобильная разработка Бесплатно (free)
Android-клиент: конструктор и выполнение запросов 1С по HTTP к опубликованной базе. Часть экосистемы КонфигРедактор.
06.10.2026 1887 54 aleksandrboldyusov 0
Мобильная разработка Разработчик 1С 8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)
Эта подключаемая обработка для любой конфигурации 1С, позволяет отправить любой объект (и рекуррентно связанные с ним объекты) на устройства c NodaLogic, где они будут полнофункциональны и доступны офлайн, по ним можно вести переписку как со стороны чата в NodaLogic, так и со стороны 1С, заполнять данные и загрузить в 1С по мере надобности. Т.е. обработка содержит генератор UI/UX интерфейса NodaLogic и создает объекты для обмена. При этом не надо ни разбираться в NodaLogic вообще, ни иметь базу/сервер/решение на стороне NL – только учетка и мобильное устройство, а со стороны 1С достаточно галочками отметить, какие поля должны быть на формах. Все данные хранятся в ХранилищеОбщихНастроек, поэтому никакого расширения не нужно, сервера со стороны 1С для связи с устройствами тоже не нужно. Тестировалось на 1С:Предприятие 8.3 (8.3.27.1326), 1С:Комплексная автоматизация 2 (2.4.8.63)
1 стартмани
12.05.2026 1550 6 informa1555 1
Мобильная разработка Разработчик Бесплатно (free)
Мне нужен был высокопроизводительный язык для фронт-сайда, я его сделал, а потом подумал, а что, если сделать 1С-синтаксис? Вот что из этого вышло. Продолжение статьи https://infostart.ru/1c/articles/2614496/
12.03.2026 2833 informa1555 11
Мобильная разработка Разработчик 1С 8.3 1С:Комплексная автоматизация 2.х 1С:КА Управленческий учет Абонемент ($m)
В этой статье простейший документ - ориентированный пример складского учета на клиент-серверной платформе NodaLogic с автономными мобильными рабочими местами. Это чисто скелетный пример как можно вынести часть учета во внешний контур. И расширение - модуль связи с 1С. Тестировалось на платформе 1С:Предприятие 8.3 (8.3.27.1326), 1С:Комплексная автоматизация 2 (2.4.8.63).
1 стартмани
13.02.2026 4120 informa1555 5
WEB-интеграция Мобильная разработка Разработчик 1С:Предприятие 8 1С:Библиотека стандартных подсистем Россия Бесплатно (free)
Бесплатное приложение для интеграции веб-клиента 1С с Android-устройством. Просто установите, укажите веб-адрес вашей базы 1С - и пользуйтесь привычным интерфейсом с расширенным доступом к функциям устройства: лазерный и имидж-сканер ТСД, сканер штрихкода камерой, GPS, Bluetooth, фотокамера, NFC и многое другое.
05.08.2025 4685 221 OneScan 25
Вы - отличный разработчик. Спасибо.
При выборе в меню пункта "Купить Pro-версию" ничего не происходит.
На устройстве нет гугловских сервисов.
И еще вопрос по лицензированию. На каждый терминал сбора данных потребуется покупка и установка собственной лицензии?
Пишет "Не удалось получить конфигурацию, установить адрес веб-сервера и код клиента.
Что сделано. Конфигурация 1с установлена, опубликована. В браузере на компьютере у меня все запускается, по такому адресу
А вот на смартфоне не получается. Пробовал забивать вот так
Всегда выдает одну и ту же ошибку.
Если нажать кнопку задачи, приложение вообще зависает.
Помогите, пожалуйста, разобраться с проблемой. Простой процесс, аналогичный примеру "Приемка по факту", приведенному вами в тестовой конфигурации. В краце, это цикл Сканирование - Ввод количества.
Проблема такая: после первого успешного сканирования (товар распознался) и ввода количества, происходит переход ко второй итерации цикла. И на второй итерации процесс "ломается". Сканирование не дает никаких результатов. Заглядывал в отладчик и заметил, что при первом вызове переменнная listener = "barcode", тогда как на второй итерации listener = "". Попытка вручную устанавливать значение переменной не дает результата, зато "помогает" переключение в другое приложение и возврат. Тогда сканирование отрабатывается нормально, но проблема повторяется на следующей итерации.
Что посоветуете?
Обратите внимание, я прошелся отладчиком, на второй итерации не работает само сканирование как Событие. Переменная barcode не получает никакого значения! И это видимо связано с тем, что перемененная listener = "".
Используем приложение на ТСД в офф-лайн, сети на складе нет.
Постоянно на экране огромными буквами "Ошибка соединения с сервером!"
Остальное все работает. Как эту ошибку убрать с экрана, очень мешает работе?
Купил Про, настроил под наши нужды, сейчас тестируем, хотели инвентаризацию большого склада делать, а такая неприятность. Спасайте.
<ClientConfiguration>
<OfflineOnCreate Launch="Menu" LaunchProcess="" LaunchDocument="">
<OnCreateQuery Query="cre ate table IF NOT EXISTS goods (id integer primary key autoincrement,art text, barcode text, nom text,char text,unit text,nomref text,charref text,unitref text)"/>
<OnCreateQuery Query="cre ate table IF NOT EXISTS cells (id integer primary key autoincrement,cell text, barcodecell text, cellref text, cellfnd text)"/>
<OnCreateQuery Query="cre ate table IF NOT EXISTS docinput (id integer primary key autoincrement, doctype text,docnumber text,art text,barcode text,barcodecell text,nomref text,cellref text,cell text,charref text,unitref text,nom text,qty real,del text,created_at DATETIME DEFAULT CURRENT_TIMESTAMP)"/>
</OfflineOnCreate>
<Processes>
<Process ProcessName="Инвентаризация off-line с ячейками" Column1Title="" Column2Title="" Column3Title="" Column4Title="" PlanTitle="" FactTitle="" PlanFactHeader="План-факт" RandomScreens="true" hidden="false" hideBottomBar="false" login_screen="false">
<Operation Name="Начало инвентаризации c ячейками off-line" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<LinearLayout orientation="vertical" height="match_parent" width="match_parent" weight="0">
<TextView show_by_condition="" Value="Начало работы" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="24" TextColor="#48036F" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="100" weight="0" gravity_horizontal="center"/>
<Button show_by_condition="true" Value="Начать новый сбор данных" NoRefresh="false" document_type="" mask="" Variable="new_document" NextStep="false" TextSize="0" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="#fafa69" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
<Button show_by_condition="" Value="Продолжить существующий сбор данных" NoRefresh="false" document_type="" mask="" Variable="edit_document" NextStep="false" TextSize="0" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="#fafa69" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
</LinearLayout>
<OFFLine>
<Line Run="OnClick" Command="SQLCreateUpdate" Listener="new_document" On line="false" SQLQuery="delete fr om docinput" ErrorText="Очистка подобранных данных отключена"/>
<Line Run="OnClick" Command="ShowScreen" Listener="new_document" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод ячейки offline"/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="edit_document" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод ячейки offline"/>
</Line>
<Line Run="OnClick" Command="FinishProcess" Listener="BACK_BUTTON" On line="false" SQLQuery="" ErrorText=""/>
</OFFLine>
</Operation>
<Operation Name="Ввод ячейки offline" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<barcode show_by_condition="" Value="" Header="" document_type="" mask="" Variable="barcodecell" NextStep="false"/>
<LinearLayout orientation="vertical" height="match_parent" width="match_parent" weight="0">
<TextView show_by_condition="" Value="Сканируйте штрихкод ячейки" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="18" TextColor="#10107a" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="center"/>
<Button show_by_condition="" Value="Ввести адрес вручную" NoRefresh="false" document_type="" mask="" Variable="adr_hnd" NextStep="false" TextSize="0" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="#fafa69" width="wrap_content" height="wrap_content" weight="0" gravity_horizontal="center"/>
<TableLayout show_by_condition="" Value="*input_table" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="22" TextColor="" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
</LinearLayout>
<OFFLine>
<Line Run="OnCreate" Command="SetVar" Listener="" On line="false" SQLQuery="" ErrorText="">
<output var="cell" val=""/>
<output var="cellref" val=""/>
<output var="barcodecell" val=""/>
<output var="cells_list" val=""/>
<output var="id" val="999"/>
</Line>
<Line Run="OnCreate" Command="SQLReadToTable" Listener="" On line="false" SQLQuery="sel ect cell as 'Ячейка',nom as 'Товар',qty as 'Кол-во' fr om docinput where del <> 'Да'" ErrorText="">
<output var="input_table" val=""/>
</Line>
<Line Run="OnClick" Command="ExitProcess" Listener="BACK_BUTTON" On line="false" SQLQuery="" ErrorText=""/>
<Line Run="OnClick" Command="SQLReadToVar" Listener="barcode" On line="false" SQLQuery="sel ect * fr om cells where barcodecell=?" ErrorText="Такая ячейка не найдена">
<params parameter="*barcodecell"/>
<output var="cell" val="cell"/>
<output var="cellref" val="cellref"/>
<output var="barcodecell" val="barcodecell"/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="barcode" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод товара offline"/>
</Line>
<Line Run="OnClick" Command="SetVar" Listener="input_table" On line="false" SQLQuery="" ErrorText="">
<params parameter="*id"/>
<output var="id" val="**id"/>
</Line>
<Line Run="OnClick" Command="SQLReadToVar" Listener="" On line="false" SQLQuery="sel ect * fr om cells where cell=?" ErrorText="Выберите ячейку!">
<params parameter="*cell"/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод товара offline"/>
</Line>
<Line Run="OnClick" Command="StartScreen" Listener="adr_hnd" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод ячейки вручную"/>
</Line>
<Line Run="OnResult" Command="SQLReadToVar" Listener="Ввод ячейки вручную" On line="false" SQLQuery="sel ect * fr om cells where cellfnd=?" ErrorText="Такая ячейка не найдена">
<params parameter="*adr_cell"/>
<output var="cell" val="cell"/>
<output var="cellref" val="cellref"/>
<output var="barcodecell" val="barcodecell"/>
</Line>
<Line Run="OnResult" Command="ShowScreen" Listener="Ввод ячейки вручную" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод товара offline"/>
</Line>
</OFFLine>
</Operation>
<Operation Name="Ввод товара offline" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<LinearLayout orientation="horizontal" height="wrap_content" width="wrap_content" weight="0">
<TextView show_by_condition="" Value="Обрабатывается ячейка: " NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="14" TextColor="#333399" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
<TextView show_by_condition="" Value="*cell" NoRefresh="false" document_type="" mask="" Variable="cell" NextStep="false" TextSize="22" TextColor="" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
</LinearLayout>
<barcode show_by_condition="" Value="" Header="" document_type="" mask="" Variable="barcode" NextStep="false"/>
<Vision show_by_condition="" Value="" Header="" VisionSettings="{"query":"77u/c2VsZWN0ICogZnJvbSBnb29kcyB3aGVyZSBhcnQgbGlrZSA/","mesure_qty":"0","min_freq":"0","control_field":"art","cursor":[{"field":"art","var":"art"},{"field":"nom","var":"nom"},{"field":"nomref","var":"nomRef"},{"field":"unit","var":"unit"},{"field":"unitref","var":"unitRef"},{"field":"char","var":"char"},{"field":"charref","var":"charRef"}]}" document_type="" mask="" Variable="article" NextStep="false"/>
<LinearLayout orientation="vertical" height="match_parent" width="match_parent" weight="0">
<TextView show_by_condition="" Value="Сканируйте штрихкод товара" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="18" TextColor="#10107a" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="center"/>
<Button show_by_condition="" Value="Ввести артикул вручную" NoRefresh="false" document_type="" mask="" Variable="btn_art" NextStep="false" TextSize="0" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="#fafa69" width="wrap_content" height="wrap_content" weight="0" gravity_horizontal="center"/>
<TableLayout show_by_condition="" Value="*input_table" NoRefresh="false" document_type="" mask="" Variable="table" NextStep="false" TextSize="0" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0"/>
</LinearLayout>
<OFFLine>
<Line Run="OnCreate" Command="SetVar" Listener="" On line="false" SQLQuery="" ErrorText="">
<output var="nom" val=""/>
<output var="descr" val=""/>
<output var="nomRef" val=""/>
<output var="descrRef" val=""/>
<output var="unit" val=""/>
<output var="unitRef" val=""/>
<output var="art" val=""/>
<output var="barcode" val=""/>
<output var="nom_list" val=""/>
</Line>
<Line Run="OnCreate" Command="SQLReadToTable" Listener="" On line="false" SQLQuery="sel ect cell as 'Ячейка',nom as 'Товар',qty as 'Кол-во' fr om docinput where del <> 'Да'" ErrorText="">
<output var="central_table" val=""/>
<output var="input_table" val=""/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="BACK_BUTTON" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод ячейки offline"/>
</Line>
<Line Run="OnClick" Command="SQLReadToVar" Listener="barcode" On line="false" SQLQuery="sel ect * fr om goods where barcode=?" ErrorText="Такой товар не найден">
<params parameter="*barcode"/>
<output var="nom" val="nom"/>
<output var="nomRef" val="nomref"/>
<output var="char" val="char"/>
<output var="charRef" val="charref"/>
<output var="unit" val="unit"/>
<output var="unitRef" val="unitref"/>
</Line>
<Line Run="OnClick" Command="StartScreen" Listener="btn_art" On line="false" SQLQuery="" ErrorText="">
<params parameter="Поиск по артикулу offline"/>
</Line>
<Line Run="OnResult" Command="SQLReadToVar" Listener="Поиск по артикулу offline" On line="false" SQLQuery="sel ect * fr om goods where art=?" ErrorText="Такой товар не найден">
<params parameter="*art"/>
<output var="nom" val="nom"/>
<output var="nomRef" val="nomref"/>
<output var="char" val="char"/>
<output var="charRef" val="charref"/>
<output var="unit" val="unit"/>
<output var="unitRef" val="unitref"/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="barcode" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод количества offline"/>
</Line>
<Line Run="OnResult" Command="ShowScreen" Listener="Поиск по артикулу offline" On line="false" SQLQuery="" ErrorText="Такой товар не найден">
<params parameter="Ввод количества offline"/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="vision" On line="false" SQLQuery="" ErrorText="Такой товар не найден">
<params parameter="Ввод количества offline"/>
</Line>
</OFFLine>
</Operation>
<Operation Name="Ввод количества offline" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<LinearLayout orientation="vertical" height="match_parent" width="match_parent" weight="0">
<TextView show_by_condition="" Value="Ячейка" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="14" TextColor="#333399" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
<TextView show_by_condition="" Value="*cell" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="22" TextColor="" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
<TextView show_by_condition="" Value="Товар" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="14" TextColor="#333399" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
<TextView show_by_condition="" Value="*nom" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="22" TextColor="" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
<TextView show_by_condition="" Value="Упаковка" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="14" TextColor="#333399" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
<TextView show_by_condition="" Value="*unit" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="22" TextColor="" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0" gravity_horizontal="center"/>
<LinearLayout orientation="horizontal" height="match_parent" width="match_parent" weight="0">
<TextView show_by_condition="" Value="Количество" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="20" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="right"/>
<EditTextNumeric show_by_condition="" Value="*qty" NoRefresh="false" document_type="" mask="" Variable="qty" NextStep="false" TextSize="15" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="left"/>
</LinearLayout>
</LinearLayout>
<OFFLine>
<Line Run="OnCreate" Command="SetVar" Listener="" On line="false" SQLQuery="" ErrorText="">
<output var="qty" val="1"/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="BACK_BUTTON" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод товара offline"/>
</Line>
<Line Run="OnClick" Command="SQLCreateUpdate" Listener="" On line="false" SQLQuery="ins ert into docinput (doctype,art,barcode,nomref,charref,unitref,nom,qty,barcodecell,cellref,cell,del) values(?,?,?,?,?,?,?,?,?,?,?,?)" ErrorText="">
<params parameter="Пересчет"/>
<params parameter="*art"/>
<params parameter="*barcode"/>
<params parameter="*nomRef"/>
<params parameter="*charRef"/>
<params parameter="*unitRef"/>
<params parameter="*nom"/>
<params parameter="*qty"/>
<params parameter="*barcodecell"/>
<params parameter="*cellref"/>
<params parameter="*cell"/>
<params parameter="Нет"/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="" On line="false" SQLQuery="" ErrorText="">
<params parameter="Ввод ячейки offline"/>
</Line>
</OFFLine>
</Operation>
<Operation Name="Поиск по артикулу offline" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<LinearLayout orientation="horizontal" height="match_parent" width="match_parent" weight="0">
<TextView show_by_condition="" Value="Артикул:" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="20" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="right"/>
<EditTextText show_by_condition="" Value="" NoRefresh="true" document_type="" mask="" Variable="art" NextStep="false" TextSize="15" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="left"/>
</LinearLayout>
<OFFLine/>
</Operation>
<Operation Name="Ввод ячейки вручную" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<LinearLayout orientation="horizontal" height="match_parent" width="match_parent" weight="0">
<TextView show_by_condition="" Value="Адрес ячейки ("-" можно заменить пробелом):" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="20" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="right"/>
<EditTextText show_by_condition="" Value="" NoRefresh="true" document_type="" mask="" Variable="adr_cell" NextStep="false" TextSize="15" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="left"/>
</LinearLayout>
<OFFLine/>
</Operation>
</Process>
<Process ProcessName="Просмотр товаров" Column1Title="" Column2Title="" Column3Title="" Column4Title="" PlanTitle="" FactTitle="" PlanFactHeader="План-факт" RandomScreens="true" hidden="false" hideBottomBar="false" login_screen="false">
<Operation Name="Показ товаров" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<Table show_by_condition="" Value="*tab_nom" Header="" document_type="" mask="" Variable="" NextStep="false"/>
<OFFLine>
<Line Run="OnCreate" Command="SQLReadToTable" Listener="" On line="false" SQLQuery="sel ect art as 'Арт', nom as 'Товар', barcode as 'ШК' from goods" ErrorText="Товары не найдены">
<output var="tab_nom" val=""/>
</Line>
<Line Run="OnClick" Command="FinishProcess" Listener="BACK_BUTTON" On line="false" SQLQuery="" ErrorText=""/>
</OFFLine>
</Operation>
</Process>
<Process ProcessName="Просмотр ячеек" Column1Title="" Column2Title="" Column3Title="" Column4Title="" PlanTitle="" FactTitle="" PlanFactHeader="План-факт" RandomScreens="true" hidden="false" hideBottomBar="false" login_screen="false">
<Operation Name="Показ ячеек" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<Table show_by_condition="" Value="*tab_cells" Header="Ячейки" document_type="" mask="" Variable="" NextStep="false"/>
<OFFLine>
<Line Run="OnCreate" Command="SQLReadToTable" Listener="" On line="false" SQLQuery="sel ect cell as 'Ячейка', barcodecell as 'ШК' fr om cells wh ere cellfnd like ?" ErrorText="">
<params parameter="%-%"/>
<output var="tab_cells" val=""/>
</Line>
<Line Run="OnClick" Command="FinishProcess" Listener="BACK_BUTTON" On line="false" SQLQuery="" ErrorText=""/>
</OFFLine>
</Operation>
</Process>
<Process ProcessName="Просмотр отсканированного" Column1Title="" Column2Title="" Column3Title="" Column4Title="" PlanTitle="" FactTitle="" PlanFactHeader="План-факт" RandomScreens="true" hidden="false" hideBottomBar="false" login_screen="false">
<Operation Name="Показ пересчета" show_by_condition="" send_when_opened="false" SaveTask="false" RunOffline="false" SendRequest="false" StartForResult="false" Timer="false">
<LinearLayout orientation="horizontal" height="1" width="wrap_content" weight="1">
<TextView show_by_condition="" Value="№ строки для обработки" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="16" TextColor="" TextBold="true" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="right"/>
<EditTextNumeric show_by_condition="" Value="*t_id" NoRefresh="true" document_type="" mask="" Variable="t_id" NextStep="false" TextSize="15" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="1" gravity_horizontal="left"/>
</LinearLayout>
<LinearLayout orientation="horizontal" height="1" width="match_parent" weight="1">
<Button show_by_condition="" Value="Удалить строку" NoRefresh="false" document_type="" mask="" Variable="del_btn" NextStep="false" TextSize="0" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="#fafa69" width="wrap_content" height="wrap_content" weight="0" gravity_horizontal="center"/>
<Button show_by_condition="" Value="Отменить удаление" NoRefresh="false" document_type="" mask="" Variable="andel_btn" NextStep="false" TextSize="0" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="#fafa69" width="wrap_content" height="wrap_content" weight="0" gravity_horizontal="center"/>
</LinearLayout>
<LinearLayout orientation="vertical" height="match_parent" width="match_parent" weight="0">
<TableLayout show_by_condition="" Val ue="*Pereschet" NoRefresh="false" document_type="" mask="" Variable="" NextStep="false" TextSize="0" TextColor="" TextBold="false" TextItalic="false" BackgroundColor="" width="match_parent" height="wrap_content" weight="0"/>
</LinearLayout>
<OFFLine>
<Line Run="OnCreate" Command="SQLReadToTable" Listener="" On line="false" SQLQuery="select id as '№', del as 'Уд', cell as 'Ячейка', nom as 'Товар', qty as 'Кол' fr om docinput" ErrorText="">
<output var="Pereschet" val=""/>
</Line>
<Line Run="OnCreate" Command="SetVar" Listener="" On line="false" SQLQuery="" ErrorText="">
<output var="t_id" val=""/>
</Line>
<Line Run="OnClick" Command="FinishProcess" Listener="BACK_BUTTON" On line="false" SQLQuery="" ErrorText=""/>
<Line Run="OnClick" Command="SQLCreateUpdate" Listener="del_btn" On line="false" SQLQuery="upd ate docinput set del = 'Да' wh ere id=?" ErrorText="">
<params parameter="*t_id"/>
</Line>
<Line Run="OnClick" Command="SQLReadToTable" Listener="del_btn" On line="false" SQLQuery="select id as '№', del as 'Уд', cell as 'Ячейка', nom as 'Товар', qty as 'Кол' fr om docinput" ErrorText="">
<output var="Pereschet" val=""/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="del_btn" On line="false" SQLQuery="" ErrorText="">
<params parameter="Показ пересчета"/>
</Line>
<Line Run="OnClick" Command="SQLCreateUpdate" Listener="andel_btn" On line="false" SQLQuery="update docinput se t del = 'Нет' wh ere id=?" ErrorText="">
<params parameter="*t_id"/>
</Line>
<Line Run="OnClick" Command="SQLReadToTable" Listener="andel_btn" On line="false" SQLQuery="select id as '№', del as 'Уд', cell as 'Ячейка', nom as 'Товар', qty as 'Кол' fr om docinput" ErrorText="">
<output var="Pereschet" val=""/>
</Line>
<Line Run="OnClick" Command="ShowScreen" Listener="andel_btn" On line="false" SQLQuery="" ErrorText="">
<params parameter="Показ пересчета"/>
</Line>
</OFFLine>
</Operation>
</Process>
</Processes>
</ClientConfiguration>
Моя называется "Инвентаризация с ячейками offline"
И еще, развернул другую конфигурацию 1с на том же сервере. Выполнил публикацию (имя публикации и каталоги другие) и получаю ошибку "Не указан заголовок управления сеансами или куки с идентификатором сеанса."
Метод объекта не обнаружен (СравнитьВерсии)
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(3848)}: Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, МинимальнаяВерсияПлатформы) < 0 Тогда
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(35)}: ПередЗапускомПрограммы();
{МодульСеанса(8)}: СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
Переменные.Вставить("ShowScreen","Номенр экрана");
Структура следующая
Экран1
Экран2
Цикл
______ Экран3
______ Экран4
______ Экран5
Если это сделать такой вызов вне цикла, и вызвать например экран2 с экрана1, то работает, но если попробовать вызвать экран, который находится внутри цикла, например Экран5, хоть с цикла, хоть нет, то Процесс падает с ошибкой. приложения.
И галку я поставил, событие перехватывает, но как дальше использовать ?
пробовал через
Переменные.Свойство("ON_BACK_PRESSED")
не работает.
Да, работает.
Но если в окне к которому возвращаемся используется обработчик "При запуске" и там принимаются какие то значения переменных, то получим сообщение об ошибке.
Поэтому сделал по другому, вывел на экран кнопку "Назад" и на нее назначил переход на экран. Примерно так:
Если Переменные.Свойство("event") Тогда
Если Переменные.listener = "back" Тогда
Переменные.Вставить("ShowScreen","Ввод товара в инвентаризации");
КонецЕсли;
КонецЕсли;
Вроде разобрался, если из страницы настроек сканировать, сохраняет, но не сохраняется поле "Webservice Password"
1) Галка "Логин" заставляет процесс запускаться на старте при загрузке конфигурации. Раньше это так и работало, но с определённого релиза пропало. Это правильно и так останется. Если вам не нужно чтобы при старте ничего не запускалось - уберите галку да и все)
2)Если Вы в 9м клиенте запускаете конфигурацию опять же 9 то запускается конфигурация 9 в которой есть логин и в котром есть зацикливание. Вы например попробуйте не 9 а 14 запустить или 22 или еще какую. Где нет "Логина"
3) Логин как в 3.00. ничего не делает - что он есть что нет. Это обычный экран. Сама подгрузка конфы происходит не благодаря галочке "Логин" а изза переменной ID
Надеюсь, я Вас убедил)
Где скачивать объекты для 1С для работы с Simple UI?
В многочисленных ветках встречалось упоминание о демо-базе. Где ее можно найти?
Или нужно за $m скачать одно из расширений из ?
Хочется не бесплатно скачать что-то нужное.
Заранее спасибо!
Сразу два вопроса.
1) конфигурация демобазы 1с (мартовская) чем то отличается от февральского?
сорри невнимательно прочитал посты выше
1) Есть контейнер с 3-мя надписями. При старте экрана выводится null, если при старте 1С определяю эти переменные - данные на клиенте потом не обновляются, если их не трогать при инициализации то все ок. Как победить ?
2) При сканировании товара все выводится в таблицу, добавляю раскраску для строки по последнему сканированию - реакции нет, цвета не меняются. Если при старте определить раскраску ячейки - она подсвечивается, но на изменения так же не реагирует. Как победить?
3) Добавляю контейнер с двумя кнопка, ширину контейнера делаю "На весь контейнер", ориентация - горизонтально, оформление кнопок - по ширине элемента (если ставить на всю ширину они перекрываются), в результате кнопки не растягиваются по ширине экрана - где я не правильно понял логику?
4) Есть возможность командой перемотать экран в низ, или настройкой ? Когда таблица большая вся информацию уходит за экран и надо мотать =)
Текст JSON с раскраской |
|---|
{"type":"table","textsize":"25","borders":"true","columns":[{"name":"n","header":"Н.","weight":"1"},{"name":"art","header":"Артикул","weight":"3"},{"name":"qty","header":"Кол-во","gravity":"center","weight":"2"}],"rows":[{"n":"1","art":"51487325890","qty":"1","key":"47a0cc09-5196-11ea-8429-00155d01710a"},{"n":"2","art":"BVED50899","qty":"5","key":"d32e3577-88ab-11ea-8427-00155d01710f"},{"n":"3","art":"51117497095","qty":"4","key":"4d086368-75a1-11ea-8424-00155d01710f"},{"n":"4","art":"KB7W51SJ3B","qty":"3","key":"8260e828-7dab-11ea-8424-00155d01710f"},{"n":"5","art":"1929126","qty":"1","key":"87233a5f-6d15-11ea-8423-00155d01710f"},{"n":"6","art":"6107A046","qty":"1","key":"f7d2098d-51ac-11ea-8429-00155d01710a"}],"colorcells":[{"row":"2","column":"0","color":"#d81b60"},{"row":"2","column":"1","color":"#d81b60"},{"row":"2","column":"2","color":"#d81b60"}]} |
Код для генерации таблицы |
|---|
Функция ОбработатьСканированиеШК(Пользователь, Ячейка, Штрихкод, ОписаниеОшибки) Экспорт
CтpoкaJSON = "";
Номенклатура = Неопределено;
ЗаписьРС = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
ЗаписьРС.Штрихкод = СокрЛП(Штрихкод);
ЗаписьРС.Прочитать();
Если ЗаписьРС.Выбран() Тогда
Номенклатура = ЗаписьРС.Номенклатура;
ДобавитьДанныеВПул(Пользователь, Ячейка, Номенклатура, Штрихкод, 1);
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписьJSON.ПроверятьСтруктуру = Истина;
ЗаписьJSON.ЗаписатьНачалоОбъекта();
//Общие св-ва таблицы
ЗаписьJSON.ЗаписатьИмяСвойства("type"); ЗаписьJSON.ЗаписатьЗначение("table");
ЗаписьJSON.ЗаписатьИмяСвойства("textsize"); ЗаписьJSON.ЗаписатьЗначение("25");
// ЗаписьJSON.ЗаписатьИмяСвойства("hidecaption");
// ЗаписьJSON.ЗаписатьЗначение("true");
// ЗаписьJSON.ЗаписатьИмяСвойства("hideinterline");
// ЗаписьJSON.ЗаписатьЗначение("true");
ЗаписьJSON.ЗаписатьИмяСвойства("borders"); ЗаписьJSON.ЗаписатьЗначение("true");
//колонки
ЗаписьJSON.ЗаписатьИмяСвойства("columns");
ЗаписьJSON.ЗаписатьНачалоМассива();
//0я колонка
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("name"); ЗаписьJSON.ЗаписатьЗначение("n");
ЗаписьJSON.ЗаписатьИмяСвойства("header"); ЗаписьJSON.ЗаписатьЗначение("Н.");
ЗаписьJSON.ЗаписатьИмяСвойства("weight"); ЗаписьJSON.ЗаписатьЗначение("1");
ЗаписьJSON.ЗаписатьКонецОбъекта();
//1я колонка
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("name"); ЗаписьJSON.ЗаписатьЗначение("art");
ЗаписьJSON.ЗаписатьИмяСвойства("header"); ЗаписьJSON.ЗаписатьЗначение("Артикул");
ЗаписьJSON.ЗаписатьИмяСвойства("weight"); ЗаписьJSON.ЗаписатьЗначение("3");
ЗаписьJSON.ЗаписатьКонецОбъекта();
//2я колонка
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("name"); ЗаписьJSON.ЗаписатьЗначение("qty");
ЗаписьJSON.ЗаписатьИмяСвойства("header"); ЗаписьJSON.ЗаписатьЗначение("Кол-во");
ЗаписьJSON.ЗаписатьИмяСвойства("gravity"); ЗаписьJSON.ЗаписатьЗначение("center");
ЗаписьJSON.ЗаписатьИмяСвойства("weight"); ЗаписьJSON.ЗаписатьЗначение("2");
ЗаписьJSON.ЗаписатьКонецОбъекта();
ЗаписьJSON.ЗаписатьКонецМассива();
Запрос = Новый Запрос("ВЫБРАТЬ
| ВМСДанныеИнвентаризации.Номенклатура.Артикул КАК Артикул,
| ВМСДанныеИнвентаризации.Номенклатура КАК Номенклатура,
| СУММА(ВМСДанныеИнвентаризации.Количество) КАК Количество,
| ВМСДанныеИнвентаризации.ДатаОперации КАК ДатаОперации
|ИЗ
| РегистрСведений.ВМСДанныеИнвентаризации КАК ВМСДанныеИнвентаризации
|ГДЕ
| ВМСДанныеИнвентаризации.Пользователь = &Пользователь
| И НЕ ВМСДанныеИнвентаризации.ОформлениеЗакончено
| И НЕ ВМСДанныеИнвентаризации.Анулировано
| И НЕ ВМСДанныеИнвентаризации.СканированиеЗакончено
| И ВМСДанныеИнвентаризации.Ячейка = &Ячейка
|
|СГРУППИРОВАТЬ ПО
| ВМСДанныеИнвентаризации.Номенклатура.Артикул,
| ВМСДанныеИнвентаризации.Номенклатура,
| ВМСДанныеИнвентаризации.ДатаОперации
|
|УПОРЯДОЧИТЬ ПО
| ДатаОперации");
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Запрос.УстановитьПараметр("Ячейка", Ячейка);
тзДанные = Запрос.Выполнить().Выгрузить();
тзДанные.Свернуть("Артикул,Номенклатура", "Количество");
//строки
ЗаписьJSON.ЗаписатьИмяСвойства("rows");
ЗаписьJSON.ЗаписатьНачалоМассива();
ИтераторСтрок = 0;
ТекСтрокаДляРаскраски = Неопределено;
Для Каждого Строка Из тзДанные Цикл
ИтераторСтрок = ИтераторСтрок + 1;
// строка
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("n"); ЗаписьJSON.ЗаписатьЗначение(Строка(ИтераторСтрок));
ЗаписьJSON.ЗаписатьИмяСвойства("art"); ЗаписьJSON.ЗаписатьЗначение(Строка.Артикул);
ЗаписьJSON.ЗаписатьИмяСвойства("qty"); ЗаписьJSON.ЗаписатьЗначение(Строка(Строка.Количество));
ЗаписьJSON.ЗаписатьИмяСвойства("key"); ЗаписьJSON.ЗаписатьЗначение(Строка(Строка.Номенклатура.УникальныйИдентификатор()));
ЗаписьJSON.ЗаписатьКонецОбъекта();
Если Номенклатура = Строка.Номенклатура Тогда
ТекСтрокаДляРаскраски = тзДанные.Индекс(Строка);
КонецЕсли;
КонецЦикла;
ЗаписьJSON.ЗаписатьКонецМассива();
Если Не ТекСтрокаДляРаскраски = Неопределено Тогда
//раскраска
ЗаписьJSON.ЗаписатьИмяСвойства("colorcells");
ЗаписьJSON.ЗаписатьНачалоМассива();
Для ИтераторКолонок = 0 По 2 Цикл
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("row"); ЗаписьJSON.ЗаписатьЗначение(Строка(ТекСтрокаДляРаскраски));
ЗаписьJSON.ЗаписатьИмяСвойства("column"); ЗаписьJSON.ЗаписатьЗначение(Строка(ИтераторКолонок));
ЗаписьJSON.ЗаписатьИмяСвойства("color"); ЗаписьJSON.ЗаписатьЗначение("#d81b60");
ЗаписьJSON.ЗаписатьКонецОбъекта();
КонецЦикла;
ЗаписьJSON.ЗаписатьКонецМассива();
КонецЕсли;
ЗаписьJSON.ЗаписатьКонецОбъекта();
CтpoкaJSON = ЗаписьJSON.Закрыть();
Иначе
ОписаниеОшибки = "Не найдена номенклатура по штрихкоду:" + СокрЛП(Штрихкод);
КонецЕсли;
Возврат CтpoкaJSON;
КонецФункции
Показать |
Я кажется понял =)) Код который указан в "Обработчик 1С (при запуске)" вызывается так же после событий ввода!? Если да - по всем вопросам все понятно, как же ларчик просто открывался )
По перемотке - да можно было бы в общие таблицы вынести, а отражать только текущее сканирование, но поступило желание сделать именно так. Сделаю альтернативу чтобы показать. Спасибо за разработку - она просто шикарна
Все везде заработало! Шикарно =))))
Я не очень понял некоторые вопросы.
1) приложение бесплатное ? можно скачать его и проводить инвентаризацию сколько угодно товаров без ограничений ?
2) проф версия - она что дает какие плюсы ? сколько стоит ?
3) у вас приложение рисует формы самостоятельно ? или она обращается к какому то вашему серверу ? (понятно что подтягиваются данные из 1с - но нет ли такого что без вашего сервера приложение работать не будет ?) - спрашиваю на случай если вы пересмотрите политику цен ...
1. Платформа бесплатная. Это платформа конструктор для создания решений
2. Проф версия бесплатна подробнее тут
3. Приложение автономное, какого то сервера нет
если не секрет - а какой вам тогда толк это все создавать и поддерживать ?
и еще вопрос - на тсд с помощью вашей плафтформы можно сделать вибрацию ? - ну типа ошибка была ...
Буду разбираться ... много чего можно сделать на этой платформе, и как посмотрел на ютубе достаточно просто ... сильная вещь ...
Проблема в оболочке MIUI?
java.lang.NullPointerException: Attempt to invoke interface method 'org.w3c.dom.Element org.w3c.dom.Document.getDocumentElement()' on a null object reference
at ru.travelfood.simple_ui.MainFragment.getConfiguration(MainFragment.java:712)
at ru.travelfood.simple_ui.MainFragment.init(MainFragment.java:340)
at ru.travelfood.simple_ui.MainFragment.onViewCreated(MainFragment.java:228)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1471)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273)
at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:620)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1432)
at android.app.Activity.performStart(Activity.java:7923)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3359)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2068)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7551)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
Можно ли в таблице установить после сканирования выделить строку с отсканированным товаром и "сдвинуть" на нее экран, если список большой ?
Или предполагается, что в этом случае как в вопросе выше надо просто вывести отсканированный товар в первой строке таблицы ?
Поставил на тсд приложение, а так же на 2 эмулятора, в одном эмуляторе все работает в тсд и во втором нет, голову сломал в чем может быть дело, может как то в андройде что то блокируется, может был такой опыт и подскажете, что можно попробовтаь, настройки идентичные все идентичное. Не работает на этапе подключения, то есть даже не запрашивается конфигурация клиента.
Итого: MuMu Player - работает
Nox -Не работает
Тсд Атол - Не работает,
Взял телефон у сотрудника - Тоже не работает
Еще заметил разницу, в MuMu Player в настройках заполнено Last update а в других местах нет.
Может получится подсказать:
Пытаюсь настроить что бы тсд работал с событиями на ТСД Атол
Тут включен Broadcast_Event
Верно я понимаю что эти настройки нужно внести в настройки приложения
А в приложении так
Сам экран выглядит так
, но при сканировании ничего не происходит. Может как то по другому надо настраивать? был ли опыт?
И еще вопрос, на ранних стадиях без контейнеров было поле ввода которое отрабатывало после "enter" сейчас его нет, какой элемент завместо него использовать? Тогда бы я тсд переключил в режим клавиатурного ввода.
Приложение по умолчанию ожидает ввод в режиме клавиатурного ввода. Суффикс "энтер" добавляется в настройках. Т.е. режим ввода задается в настройках ТСД. Если вы не через интент в настройках поставите а datawedge или как там оно называется то программа будет его перехватывать. Минус такой настройки - если на экране есть поле то оно перехватывает ввод (на уроне андроида)
Аппаратный сканер ТСД был настроен в режиме работы клавиатурного ввода. После обновления дает событие ввода только один раз. Т.е. первый штрихкод читается, а потом больше нет - просто не возникает событие ввода. Перезапускаем процесс - опять первый раз отрабатывает и дальше тишина. Ну это ладно, перенастроил в режим intenta и нормально. Но хочется быть уверенным, что не будет больше сюрпризов.
В мобильном приложении, в настройках увидел "Раздельный режим". Правильно ли я понимаю, что вашу демо можно использовать как хранилище конфигураций, а в целевую базу достаточно перенести только HTTP сервисы, и в OnLine режиме всё будет работать именно в целевой базе. Мне это актуально, т.к. рабочая база на обычных формах.
Очень интересная разработка. Прежде, чем скачивать и начинать эксперименты хотелось бы, чтобы вы ответили на такие вопросы:
1) Насколько гибко настраивается интерфейс мобильного приложения? У нас куплены ТСД с маленьким экраном. Чтобы работать с этими ТСД (да еще и в условиях холодного складского помещения) нужен интерфейс с крупными визуальными элементами/компонентами.
2) На чем написан клиент под Android? (нативная платформа, Python/Kivy/Bulldozer, JS/Cordova/Capacitor, что- то другое?)
Ну и собвенно там есть установленные приложения (левая нижняя кнопка) для переключения между конфигурациями. Ну или на лету конфу менять - если допустим скрыть какие то пункты надо setJSONConfiguration
JSONстр ="{""code"": ""3"", ""user"":""Пользователь1"",""password"":""""}";
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(JSONстр);
СтруктураJSON = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Переменные.Вставить("RunSaveLogin", СтруктураJSON);
Отрабатывает вроде без ошибок, но при этом не запускается нужная конфигурация под указанным пользователем(
(234) Ок. Спасибо. Я понял. Выкрутимся.
А в чем ваше принципиальное отличие от мобильного клиента?
Взаимодействие со сканером уже внутри.
Не надо пересобирать приложения, при этом хранение как внутри устройства так и с беком.
Мультиплатформеность(судя по статьям заведется на расберри 4 )
В целом все можно сделать на pyton а не 1с. Нет к ней привязки.
а так если прочитать все что было написано я думаю можно и самостоятельно на этот вопрос ответить)))
2. Есть ли какая та возможность "Привязать" контейнер к нижней части экрана, что бы собственно можно было реализовать все меню внизу
2. Для этого элмент который надо растянуть сделать высоту = 0, а внизу -по размеру.
Вот так
{
"type": "Operation",
"Name": "ВыборДокумента_ПриемкаМДЛП",
"Timer": false,
"hideToolBarScreen": false,
"noScroll": false,
"handleKeyUp": false,
"noConfirmation": false,
"hideBottomBarScreen": false,
"onlineOnStart": true,
"send_when_opened": true,
"onlineOnInput": true,
"PythonOnCreate": "",
"PythonOnInput": "",
"PythonCommonScreen": "",
"DefOnlineOnCreate": "",
"DefOnlineOnInput": "",
"Elements": [
{
"type": "LinearLayout",
"orientation": "vertical",
"height": "match_parent",
"width": "match_parent",
"weight": "0",
"Elements": [
{
"type": "TextView",
"show_by_condition": "",
"Value": "Приемки МДЛП",
"NoRefresh": false,
"document_type": "",
"mask": "",
"Variable": "",
"TextSize": "20",
"TextColor": "",
"TextBold": true,
"TextItalic": false,
"BackgroundColor": "",
"width": "match_parent",
"height": "wrap_content",
"weight": 0
},
{
"type": "CardsLayout",
"show_by_condition": "",
"Value": "@cards",
"NoRefresh": false,
"document_type": "",
"mask": "",
"Variable": ""
}
]
},
{
"type": "LinearLayout",
"orientation": "vertical",
"height": "match_parent",
"width": "wrap_content",
"weight": "0",
"Elements": [
{
"type": "TextView",
"show_by_condition": "",
"Value": "22",
"NoRefresh": false,
"document_type": "",
"mask": "",
"Variable": "",
"TextSize": "0",
"TextColor": "",
"TextBold": false,
"TextItalic": false,
"BackgroundColor": "",
"width": "match_parent",
"height": 0,
"weight": 1,
"gravity_horizontal": "left"
},
{
"type": "LinearLayout",
"orientation": "horizontal",
"height": "wrap_content",
"width": "wrap_content",
"weight": "0",
"Elements": [
{
"type": "Button",
"show_by_condition": "",
"Value": "аааа",
"NoRefresh": false,
"document_type": "",
"mask": "",
"Variable": "аааа"
},
{
"type": "Button",
"show_by_condition": "",
"Value": "бббб",
"NoRefresh": false,
"document_type": "",
"mask": "",
"Variable": "бббб"
}
]
}
]
}
]
}
Почему-то не получается
отправить Вам сообщение в личку
(всплывает про какую-то отложенную группу),
Подскажите, на стороне Андроида - интерфейсы
генерируются тоже с помощью SimpleGUI?
Есть ли доступ к исходникам клиента Андроида на гитхабе?
Есть ли список интентов для различных ТСД где-нибудь
для настройки клиента -- было бы очень правильно
в комплект с программной его держать,
мне кажется..
Не, SimpleGUI боже упаси, я больше не использую (новая десктопная платформа будет на другом стеке). В андроиде все делается средствами нативного андроид SDK на Java.Это принципиальная позиция - так лучше испоьзуются возможности платформы, лучше производительность и т.д. Исходник я не выкладывал, приведу в порядок(читай перепишу) мобильную платформу , в будущем выложу. Сейчас слишком бурное развитие, на это времени не хватает.
Все остальные части экосистемы (новые) я буду сразу выкладывать на гитхабе.
Настройки для различных ТСД, ну смотрите, если вы про Intent то тут такая штука - в некотрых ТСД этого нет, а в некоторых, вы можете по своему усмотрению их задавать - что хотите то и пишете.
Открыл демо базу на посмотреть, справочники "Операции" и "Экраны" достаточно объёмные и будут только расти. Для управления таким объёмом нужно придумать интерфейс управления, что бы справочники не превратились в скопище не связанных объектов. Благо на 1Ске каждый может себе нарисовать так как он хочет. Попробую погрузиться в SimplUI с применением на практике, если будут мысли по организации элементов обязательно поделюсь.
Дмитрий, ещё раз спасибо что распространяете такую классную штуку в массы!
Вот это труды!
Цикл разработок впечатляет и поражает!
К сожалению только недавно случайно нашел разработки автора, а разработка по данному направлению вижу ведется уже давно.
Относительно недавно начал заниматься мобильной разработкой под платформой 1С и разочаровался, мягко говоря. Данную тему отслеживал давно в анонсах разработки платформы, ожидал лучшего. Нестабильность работы мобильного приложения, не всегда восстанавливается сеанс мобильного клиента (пропадание связи, долгое бездействие ТСД, отключение экрана и т.п.), не впечатляющее быстродействие (ожидал намного лучшего), непредсказуемое поведение интерфейса мобильного приложения (строишь в конфигураторе определенную структуру формы, ожидаешь такого результата, но в мобильном клиенте все что угодно может "отрисоваться" в итоге), ограничения по функционалу мобильной версии, ошибки платформы. Перепробовал многие версии мобильной платформы, пока не добился более стальной работы. Не сразу заработал драйвер сканера ШК.
В новых редакциях ЕРП, так называемое, новое "Мобильное рабочее место кладовщика" вообще не работает по сути. Глянул в код обработки. Такое впечатление разработку начали, что-то "скопипастили" между формами и забросили. При это в таком виде выпустили в релиз ЕРП, совершенно не проверяя, и написали инструкции на ИТС. В итоге пришлось полностью все переписать в срочном порядке.
После всего этого, сразу же возникла мысль заняться в перспективе нативной разработкой под Андроид. Но теперь надеюсь положительно применю данные с наработок в своих проектах. Еще раз спасибо!
вышел из ситуации: установил версию старого Simple (был рабочий).Возможно есть проблема с совместимостью с Андроид 16 ?
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1153616
Создание 14.11.19 14:18
Обновление 02.03.24 07:17
Просмотры 68073
Загрузки 614
Рейтинг
211
Комментарии 255
Код открыт Да
Рубрики Мобильная разработка
Кому Разработчик
Тип файла Архив с данными
Платформа 1С:Предприятие 8
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Управленческий учет
Доступ к файлу Абонемент ($m)
