Данная разработка позволяет реализовать вывод на экран телевизора с веб-браузером (со smart tv или медиаприставкой) табло с очередью заказов.
Серверная часть - ASP NET 6, Web API приложение, веб-интерфейс реализован на Angular, динамическое обновление данных посредством SignalR. Сервер использует СУБД SQLite, по запросу могу собрать под другие базы данных.
Расширение реализовано для 1С: Розница 2.3 (тестировалось на версии 2.3.10.61). Расширение формирует запросы к серверу Web API, для отображения новых заказов и отметки уже выполненных, также реализована возможность печати на ККТ чека с текущим номером заказа и его составом.
Веб-интерфейс на Angular позволяет самостоятельно (или по запросу) легко кастомизировать внешний вид табло.
Установка
Web API приложение
Серверная часть устанавливается на веб-сервер IIS.
Предварительно необходимо установить ASP.NET Core Runtime 6, Hosting Bundle по ссылке: https://dotnet.microsoft.com/en-us/download/dotnet/6.0
Для IIS необходимо добавить новое приложение (или создать отдельный пул, если сервер уже активен и необходимо запустить на отдельном порту). В созданную папку приложения поместить содержимое папки Server.
Возможно использование Kestrel-сервера - если нужно только локальное подключение для тестирование, то всего лишь запустить файл OrderQueue.exe в папке Server (по умолчанию использует порт 5000, можно будет увидеть в окне консоли). Иначе можно настроить проксирование через Apache/nginx.
В папке Server находится файл appsettings.json, в нем необходимо указать настройки работы серверной части.
В разделе ConnectionStrings указано расположение базы данных, при необходимости значение можно изменить. База данных будет создана автоматически.
Важно: так как в папке с приложением находится база данных Sqlite для хранения текущих заказов, нужно наличие прав на запись в данную папку у пользователя, под которым запущен экземпляр приложения. Если используется IIS и пул приложения запущен от пользователя Network Service, то нужно дать этому пользователю права на запись в эту папку.
"ConnectionStrings": {
"OrderQueue": "Data Source=orderqueue.db"
В разделе Cors - адрес сервера node.js с запущенным angular.
"Cors": {
"Host": "http://localhost:44448"
}
В разделе Settings - время (в минутах) автоматического удаления готовых заказов (CleanReadyInterval) и находящихся в очереди (CleanProcessingInterval).
"Settings": {
"CleanReadyInterval": "10",
"CleanProcessingInterval": "720"
}
Интерфейс Web API
Реализованы следующие функции WebAPI. Их можно использовать при самостоятельной интеграции в другие системы.
Команды передаются как http get запрос серверу. Например, запрос может выглядеть следующим образом:
http://192.168.1.210:5146/orderqueue/order/getcompleteorders
Где выделенная часть постоянная для всех запросов - адрес сервера, порт и имя приложения на IIS сервере.
Команда | Описание |
---|---|
/order/addorder?number=<номер заказа> | Добавление заказа в очередь |
/order/removeorder?number=<номер заказа> | Удаление заказа |
/order/setordercomplete?number=<номер заказа> | Отметка заказа, как готового |
/order/getcompleteorders | Возвращает готовые заказы |
/order/getprocessingorders | Возвращает заказы в очереди |
<номер заказа> - параметр команды, который представляет собой числовое значение. Например, 001, 002.
Значения не обязательно должны быть числовыми, но следует учесть, что в приложенном расширении для 1С реализована печать чеков только с числовыми значениями заказов. Добавить другие символы не составляет труда.
Команды, возвращающие списки заказов, передают ответ в качестве json структуры вида:
[{"id":3,"number":"002","status":"Processing","orderDate":"2022-07-05T12:26:34.0481005"}]
Angular
Для angular необходимо скачать node.js https://nodejs.org/en/
Тестировал на LTS версии 16.14.2
После установки необходимо перейти в папку ClientApp с веб-сервером.
В папке src\environments находится файл environment.prod.ts. В нем необходимо указать адрес сервера Web API.
Адрес должен заканчиваться на '/'. Если сервер запущен на IIS, то не забыть указать имя приложения на сервере, например, http://192.168.1.100:5146/orderqueue/
export const environment = {
production: true,
baseUrl: 'http://localhost:5146/'
};
Далее в папке ClientApp запустить по очереди файлы install.bat и start.bat, либо вручную открыть командную строку в этой папке и выполнить команды npm install и npm start. Вторую команду необходимо добавить в автозагрузку системы.
Расширение для 1С
В 1С необходимо подключить расширение ОчередьЗаказов.cfe.
Расширение добавит новый раздел - Очередь заказов. В этом разделе необходимо задать значения констант для работы расширения.
- Сервер очереди заказов - адрес сервера Web API.
- Ширина кассовой ленты - ширина ленты для печати чека.
- Печатать второй экземпляр состава заказа - если нет необходимости ставить еще одно рабочее место у сборщика заказа, то есть возможность печатать два экземпляра чека с номером и составом заказа.
В РМК в разделе Меню добавлены две кнопки - В очередь и Открыть очередь.
Кнопка В очередь выводит на табло номер нового заказа и печатает чек с номером и составом заказа. Фискальный чек не печатается, процесс оплаты остался без изменений.
Кнопка Открыть очередь отображает окно со списком активных заказов, где их можно пометить как готовые к выдаче.
Ограничения на количество клиентов веб-сервера табло отсутствуют, соответственно можно подключить несколько телевизоров.
Код расширения и angular-приложения открыт, Web API - приложение с закрытым кодом.
Тестировал на следующих конфигурациях:
Windows Server 2016, IIS 10/Windows 11, Kestrel.
1С:Предприятие 8.3 (8.3.20.1710), Розница, редакция 2.3 (2.3.10.61)