Как реализовать веб-интерфейс РМК для 1С:Управление торговлей 10.3

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При росте розничной сети многие компании, работающие на проверенной временем 1С:Управление торговлей 10.3, сталкиваются с проблемой масштабирования. Распределенные информационные базы (РИБ) начинают работать медленно, а работа через RDP (удаленный рабочий стол) вызывает сложности с подключением торгового оборудования (сканеров, касс). В этой статье мы разберем, как перевести рабочее место кассира (РМК) на веб-технологии, сохранив при этом привычную функциональность основной базы.

Вариант 1: Использование управляемых форм внутри обычного приложения

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

Проанализируем шаги по реализации этого метода:

  1. Включение режима управляемых форм: В свойствах конфигурации необходимо установить флаг Использовать управляемые формы в обычном приложении. Это позволит запускать управляемые интерфейсы в тонком и веб-клиенте.
  2. Разработка РМК: Мы создаем новую обработку, но форму для нее рисуем не обычную, а управляемую. В этой форме мы размещаем все необходимые элементы: подбор товара, работу со сканером, кнопки оплаты.
  3. Публикация базы: Базу необходимо опубликовать на веб-сервере (IIS или Apache). После этого кассиры смогут заходить в 1С через обычный браузер по ссылке.

Важно помнить, что при работе через веб-клиент будут доступны только те объекты, для которых созданы управляемые формы. Это отличный способ «изолировать» кассира от лишнего функционала УТ 10.3.

Вариант 2: Связка «УТ 10.3 (Центр) + 1С:Розница (Магазины)»

Рассмотрим ситуацию, когда нам нужно полностью уйти от зависимости торговых точек от центрального сервера в режиме реального времени. В этом случае лучшим решением будет использование 1С:Розница на местах.

Разберем преимущества такой схемы:

Чтобы избежать проблем с тяжелыми обменами РИБ, проанализируем упрощенную схему обмена данными через текстовые файлы или XML. Посмотрим на пример логики обмена:


// Пример упрощенной выгрузки продаж из магазина в УТ 10.3
Процедура ВыгрузитьПродажиВТекст()
    Файл = Новый ТекстовыйДокумент;
    Выборка = Документы.ЧекККМ.Выбрать(НачалоДня, КонецДня);
    Пока Выборка.Следующий() Цикл
        Для Каждого Строка Из Выборка.Товары Цикл
            СтрокаДанных = "" + Строка.Номенклатура.Артикул + ";" + Строка.Количество + ";" + Строка.Цена;
            Файл.ДобавитьСтроку(СтрокаДанных);
        КонецЦикла;
    КонецЦикла;
    Файл.Записать("C:\Exchange\sales.txt");
КонецПроцедуры

Вариант 3: Современный Web-Front на HTTP-сервисах

Если требуется максимальная скорость и современный интерфейс, можно пойти по пути создания внешнего веб-приложения, которое общается с 1С через HTTP-сервисы. Это позволяет кассиру работать в браузере, который обращается к базе только для получения остатков или записи чека.

Рассмотрим, как реализовать простейший HTTP-сервис в УТ 10.3 для получения цены товара:

  1. Создаем в дереве метаданных объект HTTP-сервисы.
  2. Определяем шаблон URL, например: /getprice/{Articul}.
  3. Пишем обработчик GET-запроса:

Функция ПолучитьЦенуПоАртикулу(Запрос)
    Артикул = Запрос.ПараметрыURL.Получить("Articul");
    Товар = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
    
    Если Товар.Пустая() Тогда
        Возврат Новый HTTPСервисОтвет(404);
    КонецЕсли;
    
    Цена = Ценообразование.ПолучитьЦенуНоменклатуры(Товар, Справочники.ТипыЦен.НайтиПоНаименованию("Розничная"));
    
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки(Строка(Цена));
    Возврат Ответ;
КонецФункции

Решение проблем с торговым оборудованием в веб-интерфейсе

Выясним причину, по которой многие отказываются от веб-клиента — это работа с ККТ и сканерами. При работе через браузер стандартные драйверы 1С могут работать нестабильно. Рассмотрим современные пути решения этой проблемы:

1. Использование JSON API драйверов (например, АТОЛ 10). Современные кассовые аппараты поддерживают работу через собственный веб-сервер. Ваше веб-РМК может отправлять JSON-пакеты напрямую на IP-адрес кассы, минуя прослойки 1С. Это гарантирует мгновенную печать чека без «проброса» портов в RDP.

2. Локальный агент для сканера штрихкодов. Вы можете использовать небольшую утилиту на рабочем месте кассира, которая перехватывает данные из COM-порта сканера и передает их в веб-форму через технологию WebSocket. Это позволяет избежать установки тяжелых расширений браузера 1С.

Выводы и рекомендации

Подводя итог, можно сказать, что выбор решения зависит от ваших ресурсов:

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

← На главную