Онлайн режим обработчиков Simple через шину c веб-сокетами на 1С 8.3.27. И пара полноценных конфигураций-примеров для 1С БП 3 и 1С УТ 11

07.02.25

Разработка - Мобильная разработка

В Simple появился еще один онлайн-режим, не через REST-API, а через веб-сокеты. Показываю, что это дает, ради чего было сделано. А также два чисто онлайновых примера с такими обработчиками еще и с использованием новой ActiveCV 2.0. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расширение для БП3: Инвентаризация ОС онлайн с OCR
.zip 438,69Kb
6
6 Скачать (1 SM) Купить за 1 850 руб.
Расширение для УТ11: Приемка онлайн
.zip 438,34Kb
8
8 Скачать (1 SM) Купить за 1 850 руб.

Для чего нужно?


Задачи, которые ставятся перед такой архитектурой:

  1.     Возможность не публиковать 1С HTTP-сервис во внешний интернет. Вместо этого публикуется маленький скрипт, по желанию - либо на собственном сервере/компьютере, либо на VPS. Это позволяет работать даже тем клиентам, у кого нет ни серверной 1С, ни как такового сервера, при этом не нужно выносить данные в облако. Безопасность остается на уровне.
  2.     Повышение производительности за счет архитектуры и технологии. Отзывчивость таких запросов значительно выше, чем у HTTP-запроса, за счет того, что не нужно устанавливать соединение. Также архитектура выполнения обработчиков не синхронная, как в случае обычного online, а всегда асинхронная, что позволяет разгрузить приложение.Можно разгрузить бек систему за счет распределения нагрузки на шину
  3.     Приложение может работать с бесконечным количеством серверов, либо распределенных серверов


Как это работает?

 


1.    Публикуется скрипт «шина». Для целей именно обработчиков полноценная шина SimpleBus не нужна, поэтому я сделал упрощенный скрипт из полутора сотен строчек. Оттуда убраны очереди, кеширование данных, http-интерфейс и все что не нужно, осталось только необходимое. GitHub тут https://github.com/dvdocumentation/simplebuslite

Это если вы хотите разместить шину у себя. По умолчанию можно работать через мою такую же шину на VPS, настройки прописаны в расширениях по умолчанию. 

По умолчанию авторизация отключена, но можно завести пользователей (в СУБД на шине) и включить авторизацию.

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

2.    В 1С устанавливается расширение, которое работает как клиент для этого скрипта-шины. Там нужно прописать настройки – URL шины, токен (об этом далее)

 


3.    Вся адресация работает на «токенах». Например, у вас есть конфигурация 1С: ERP , вы публикуете от нее токен SimpleConnect_erp_692f4a8d_2c68_40be_82df_4f4b9224ee1e (имя сгенерировано автоматически) и шина теперь «знает», что владелец токена – это вот этот клиент SimpleConnect_erp_692f4a8d_2c68_40be_82df_4f4b9224ee1e. Но клиенты, подключенные к шине (Simple), не знают такой длинный токен, у них в конфигурации прописано просто “erp” – это псевдоним токена. На клиенте хранится БД соответствия токенов и их псевдонимов. Клиент, например, через QR считывает настройки вашей ERP и теперь его Simple запомнил, что erp это  SimpleConnect_erp_692f4a8d_2c68_40be_82df_4f4b9224ee1e. Теперь, когда он передает запрос, он в назначении указывает именно это токен. Звучит сложновато? На самом деле это все делается автоматически. А нужно это для того, чтобы: 1) клиент мог работать с несколькими базами одновременно в рамках одной конфигурации 2) чтобы можно было работать в облаке с одной конфой, но разными серверами (например, эти примеры к статье – у всех прописано bp, шина допустим одна (моя на VPS) но токены у всех разные, за счет такой архитектуры каждый работает в рамках своего токена)

4.    В Simple один раз сканируются настройки (их также можно установить из кода) и он начинает отправлять синхронные и асинхронные запросы. Работает это так. Возникает событие, запускается обработчик onlinews. Он может быть синхронным, асинхронным или «с прогресс-баром». Для каждого вызова приваривается уникальный номер execute_id, который уходит в запросе на шину, а потом в бек-систему, а потом возвращается в виде «ответа». Ответ в кавычках, потому что в архитектуре веб-сервисов нет ответов, это просто сообщения. Все это время Simple терпеливо ждет сообщения от шины с таким execute_id. В случае синхронного запуска он блокирует UI и «подвешивает» систему. В случае runprogress показывает крутилку. В случае асинхронного обработчика ничего не блокируется, но когда будет получен ответ, может быть выполнен обработчик postExecute

Вместе с запросом туда-сюда ходит стек переменных/команд. Ожидание ограничено временем ожидания (по умолчанию 10сек, задается в настройках) 

Таким образом вся обработка выполняется на стороне 1С. Отладка, естественно, тоже доступна на стороне 1С.

Вот пример обработчика события new_barcodes_detected. Тут он берет из массива найденных штрихкодов кадре штрихкод, ищет по базе, подкрашивает надпись в предпросмотре камеры и открывает диалог для ввода количества.

 

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

 

Конфигурации-примеры для 1С: Бухгалтерия предприятия 3 и 1С:Управление торговлей 11.4


Данные конфигурации демонстрируют новый подход к онлайн обработчикам (я его называю «онлайн 2.0») и также демонстрируют и новый подход к работе с штрихкодами и OCR, т.н. "ActiveCV 2.0" описанный в этой статье https://habr.com/ru/articles/874560/

Вопрос: можно ли было это сделать на обычном онлайне через HTTP (тип обработчика online)? Конечно. Но у каждого инструмента свое назначение. Где то хватает обычного онлайна, где то нет. 
Обе конфигурации рассчитаны на телефоны (работа с камерой), а не на ТСД. В ТСД обычно плохие камеры и нет gpu, зато есть сканер. Поэтому для работы со штрихкодами на ТСД лучше использовать сканер, а не камеру. С OCR (распознавание инвентарных номеров) лучше работать на телефоне с хорошей камерой (я для всех примеров использую Samsung Note 10). Так как обе на ActiveCV, то оба примера ориентированы на потоковое сканирование а не на сканирование "по одному объекту за раз".

Оба примера – своего рода заготовки, для того чтобы сделать под себя для нужных документов. Оба примера максимально актуальны на начало 2025 года – используются все последние достижения и подходы. 

Для работы потребуется самая последняя версия Simple 14.05.00 и 1С разумеется не ниже 8.3.7.
Расширения написаны под старые версии конфигураций Бухгалтерия предприятия, редакция 3.0 (3.0.83.33) и Управление торговлей, редакция 11 (11.4.13.123). Если не ставится из-за версии совместимости (выше) то можно поставить через сравнение и объединение.  


Заполнение приходных ордеров онлайн для УТ11

 


Задача конфигурации – взять готовый Приходный ордер и проставить в нем количество факт онлайн, т.е. прямо в 1С. Идентификация – по штрихкоду. Кол-во вводится в диалоге. Все это можно сделать на симпле и в других вариантах (например, кол-во вводить на экране, редактировать таблицу, не использовать ActiveCV а использовать обычный Штрихкод), но сделано так, чтобы показать возможности последних двух релизов. Раскраской помечаются расхождения.

 

 

 

Инвентаризация ОС для БП3 с идентификацией OCR

 


Вот это пример где ActiveCV работает на все 100%, т.к. процесс не прерывается как в предыдущем примере на ввод кол-ва, а просто непрерывно сканируются инвентарные номера. Собственно, также хорошо это работает с штрихкодами, например DataMatrix, скорость сканирования OCR почти не отличается от штрихкодов, все нюансы отработаны. Т.е. хорошо ActiveCV использовать когда есть непрерывное сканирование уникальных объектов. 

Инвентарные номера предварительно загружаются в датасет (Важно! Только латинские буквы и цифры). Затем задача простая : OCR читает номер и отмечает в документе что ОС найден, также помечает цветом найденные. Если в документе нет, то добавляет.

К сожалению, до живого примера с инвентарными номерами ехать далеко, поэтому написал рандомные номера на доске. По особенностям сканирования номеров лучше посмотреть в моей статье на Хабре, приведенной выше, ну и периодически я показываю в статьях заковыристые случаи. 

 

Работа с несколькими базами одновременно, сохранение настроек и использование токенов


Simple коннектится к шине,  но также он должен присоединиться к токенам баз, с которыми он работает (это речь про приложение). Т.е. одновременно может выполнять обработчики в нескольких серверах. А вот конфигурация ничего не знает ни про шину ни про токены, но она работает с псевдонимами токенов.

Выглядит это так. Есть список токенов через запятую, которые нужны конфе.

 

 

И есть токен по умолчанию (это чтобы не указывать во всех обработчиках в явном виде токен)

 


Таким образом к токену по умолчанию обращение как к просто обработчику

А к конкретному токену вот так

 

 

Ну и собственно остается на устройстве привязать токены. Либо с помощью меню Онлайн-Отладка QR либо программным способом.


Сохранение настроек.


Есть настройки шины и есть настройки токенов. Настройки шины хранятся в меню настроек. Их можно задать вручную, передать через QR описанный ранее и также передать обычным способом через файл/QR/команду общим способом https://uitxt.readthedocs.io/ru/latest/settings.html#qr

Разница в QR-ах заключается только в том, что в общем случае установки настроек, они просто запишутся, а веб сервис не будет сразу пытаться соединиться (только после перезапуска). В тех QR-ах которые в промерах-конфигурациях сокет сразу соединяется.

Для записи токенов программным способом есть команда SetTokens с JSON-массивом в качестве параметра: [{"alias":<alias>,"token":<token>}]

Также есть команда SetSimpleBusSettings для того, чтобы установить настройки шины, не записывая их в настройки (т.е. они будут действовать до перезапуска) с JSON-параметром с ключами token,url,id,password,enable  и команда ConnectSimpleBus для немедленного соединения с шиной. 

Посмотреть примеры (ui-файлы) можно на https://seditor.ru:1555/ или развернув редактор локально (https://github.com/dvdocumentation/web_simple_editor). 

Скачать apk 12.05 можно тут: https://simpleui.ru/

Конечно же, Телеграмм-канал проекта, в котором масса всего полезного:  https://t.me/devsimpleui

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.74.69
  • Управление торговлей, редакция 11, релизы 11.4.13.46

Simple Android CV ActiveCV WebSocket

См. также

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    62423    213    103    

181

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    42187    119    167    

214

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 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. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    103028    632    191    

336

Мобильная разработка Платформа 1С v8.3 1C:Бухгалтерия Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    6279    2    0    

6

Мобильная разработка Программист Платформа 1С v8.3 Мобильная платформа 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Абонемент ($m)

Товары (либо другие учетные объекты) могут быть промаркированы штрихкодами либо быть без штрихкодов, но с число-буквенным обозначением (артикулом, VIN-номером и т.д.). И та, и другая ситуация не проблема для SimpleUI. Но что делать, если нет ни того, ни другого? Вообще никакой маркировки. Как можно максимально ускорить работу с таким объектами? В статье показываю новые фичи релиза и готовые для встраивания поисковые комбайны на все случаи жизни. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

14.04.2025    1405    4    informa1555    0    

15

Мобильная разработка WEB-интеграция Программист Мобильная платформа Абонемент ($m)

Экспериментальный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между устройствами Simple и между Simple и бек-системами (например 1С). По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок для поддержки стабильного постоянного соединения, докачки больших файлов и работе в фоне. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

23.08.2024    1911    6    informa1555    1    

13

Мобильная разработка Мобильная платформа Абонемент ($m)

В этом релизе собрано много нового из области интерфейса, связи, хранения и важные новые способы управления. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

25.06.2024    3483    29    informa1555    0    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. aximo 2336 09.02.25 06:24 Сейчас в теме
Весьма интересно с моментальным распознованием, штатный механизм фотокамеры не позволит этого или он уже встроен в новейших релизах?
2. orgplan 11.02.25 11:06 Сейчас в теме
Спасибо за Ваш труд! Ждал этот пост. :)
А где взять Simple 14.05.00?
3. Wanderer.nk 19 02.03.25 07:00 Сейчас в теме
(2) в Google Play
Автору спасибо за решение. Интересный подход к решению задачи. Как прототип|MVP точно стоит использовать
Оставьте свое сообщение