При росте розничной сети многие компании, работающие на проверенной временем 1С:Управление торговлей 10.3, сталкиваются с проблемой масштабирования. Распределенные информационные базы (РИБ) начинают работать медленно, а работа через RDP (удаленный рабочий стол) вызывает сложности с подключением торгового оборудования (сканеров, касс). В этой статье мы разберем, как перевести рабочее место кассира (РМК) на веб-технологии, сохранив при этом привычную функциональность основной базы.
Несмотря на то, что УТ 10.3 построена на обычных формах, современные версии платформы 1С:Предприятие 8.3 позволяют использовать гибридный режим. Это самый экономичный способ с точки зрения разработки, так как нам не нужно менять всю конфигурацию.
Проанализируем шаги по реализации этого метода:
Использовать управляемые формы в обычном приложении. Это позволит запускать управляемые интерфейсы в тонком и веб-клиенте.Важно помнить, что при работе через веб-клиент будут доступны только те объекты, для которых созданы управляемые формы. Это отличный способ «изолировать» кассира от лишнего функционала УТ 10.3.
Рассмотрим ситуацию, когда нам нужно полностью уйти от зависимости торговых точек от центрального сервера в режиме реального времени. В этом случае лучшим решением будет использование 1С:Розница на местах.
Разберем преимущества такой схемы:
Чтобы избежать проблем с тяжелыми обменами РИБ, проанализируем упрощенную схему обмена данными через текстовые файлы или XML. Посмотрим на пример логики обмена:
// Пример упрощенной выгрузки продаж из магазина в УТ 10.3
Процедура ВыгрузитьПродажиВТекст()
Файл = Новый ТекстовыйДокумент;
Выборка = Документы.ЧекККМ.Выбрать(НачалоДня, КонецДня);
Пока Выборка.Следующий() Цикл
Для Каждого Строка Из Выборка.Товары Цикл
СтрокаДанных = "" + Строка.Номенклатура.Артикул + ";" + Строка.Количество + ";" + Строка.Цена;
Файл.ДобавитьСтроку(СтрокаДанных);
КонецЦикла;
КонецЦикла;
Файл.Записать("C:\Exchange\sales.txt");
КонецПроцедуры
Если требуется максимальная скорость и современный интерфейс, можно пойти по пути создания внешнего веб-приложения, которое общается с 1С через HTTP-сервисы. Это позволяет кассиру работать в браузере, который обращается к базе только для получения остатков или записи чека.
Рассмотрим, как реализовать простейший HTTP-сервис в УТ 10.3 для получения цены товара:
HTTP-сервисы./getprice/{Articul}.
Функция ПолучитьЦенуПоАртикулу(Запрос)
Артикул = Запрос.ПараметрыURL.Получить("Articul");
Товар = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если Товар.Пустая() Тогда
Возврат Новый HTTPСервисОтвет(404);
КонецЕсли;
Цена = Ценообразование.ПолучитьЦенуНоменклатуры(Товар, Справочники.ТипыЦен.НайтиПоНаименованию("Розничная"));
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(Строка(Цена));
Возврат Ответ;
КонецФункции
Выясним причину, по которой многие отказываются от веб-клиента — это работа с ККТ и сканерами. При работе через браузер стандартные драйверы 1С могут работать нестабильно. Рассмотрим современные пути решения этой проблемы:
1. Использование JSON API драйверов (например, АТОЛ 10). Современные кассовые аппараты поддерживают работу через собственный веб-сервер. Ваше веб-РМК может отправлять JSON-пакеты напрямую на IP-адрес кассы, минуя прослойки 1С. Это гарантирует мгновенную печать чека без «проброса» портов в RDP.
2. Локальный агент для сканера штрихкодов. Вы можете использовать небольшую утилиту на рабочем месте кассира, которая перехватывает данные из COM-порта сканера и передает их в веб-форму через технологию WebSocket. Это позволяет избежать установки тяжелых расширений браузера 1С.
Подводя итог, можно сказать, что выбор решения зависит от ваших ресурсов:
Проанализируйте текущую нагрузку на сеть и квалификацию ваших разработчиков, чтобы выбрать оптимальный путь. Помните, что даже старая конфигурация на обычных формах может успешно работать с веб-технологиями при правильном архитектурном подходе.