В современной розничной торговле критически важно сокращать очереди и повышать мобильность персонала. Организация мобильного рабочего места продавца-консультанта позволяет оформлять продажи и принимать оплату непосредственно в торговом зале («у полки»). Однако при реализации такой схемы ИТ-специалисты сталкиваются со сложной дилеммой: как совместить мобильность, прием безналичных платежей, требования 54-ФЗ и расчет сложных скидок из центральной базы 1С без классического оффлайн-обмена.
В этой статье мы подробно разберем, как решить задачу интеграции мобильной кассы со стационарной 1С, проанализируем доступные архитектурные подходы, разберем вопросы оборудования и приведем конкретные примеры реализации.
Традиционные мобильные кассы (смарт-терминалы) чаще всего работают в режиме оффлайн-ККТ. Это означает, что номенклатура и цены выгружаются на устройство периодически, а продажи загружаются обратно в 1С в конце смены или по расписанию. Для магазинов со сложной дисконтной системой, накопительными бонусами и динамическими акциями этот вариант неприемлем. Расчет скидки должен происходить в режиме реального времени, так как база бонусов находится на центральном сервере.
Попытки решить задачу «в лоб» — например, через терминальный доступ (RDP) с планшета к стационарному компьютеру — часто натыкаются на технические ограничения: неудобство интерфейса 1С на маленьком экране, нестабильность Wi-Fi сессий и необходимость носить с собой сразу три устройства (планшет для RDP, мобильный фискальный регистратор и банковский терминал).
Рассмотрим рабочие архитектурные сценарии, которые позволяют элегантно решить эту задачу.
---
Оптимальным аппаратным решением является использование специализированных Smart POS-терминалов класса «три в одном» (например, линейка MSPOS-SE-F, MSPOS-F20-Ф или АТОЛ СТБ 6). Эти устройства объединяют в одном компактном корпусе:
Для программной интеграции такого устройства с центральной 1С без использования оффлайн-обменов применяются два подхода:
А. Использование «1С:Мобильная касса» и онлайн-синхронизации
На смарт-терминал устанавливается приложение 1С:Мобильная касса. Оно интегрируется с центральной базой (например, 1С:Розница или 1С:УНФ) по протоколу веб-сервисов. Синхронизация данных может происходить в режиме реального времени при наличии Wi-Fi связи. При этом для расчета сложных скидок используется встроенный механизм Сервера лояльности 1С.
Б. Мобильный клиент 1С на управляемых формах
Если конфигурация вашей центральной базы значительно доработана, на смарт-терминал устанавливается стандартный Мобильный клиент 1С. Он напрямую подключается к опубликованной на веб-сервере базе данных. Продавец работает непосредственно в интерфейсе 1С, а драйверы ККТ и эквайринга, установленные внутри мобильного Android-приложения 1С, обеспечивают печать чеков и отправку команд на банковский модуль терминала.
---
Согласно поправкам к закону 54-ФЗ, в некоторых сценариях торговли внутри одного помещения (в режиме консультант-продавец) разрешено осуществлять фискализацию чеков на удаленной кассе. Это позволяет существенно сэкономить на оборудовании.
При такой схеме у каждого продавца в руках находится обычный Android-смартфон или легкий планшет. Процесс продажи выглядит следующим образом:
1С:РМК на смартфоне), подключенном к центральной базе по Wi-Fi.Для реализации отправки чеков на стационарную ККТ из фонового режима в 1С используется специальный пул заданий или интеграционный HTTP-сервис. Рассмотрим пример кода, который регистрирует чек на удаленной кассе из мобильного сеанса.
// Пример функции на стороне сервера 1С, принимающей запрос от мобильного устройства
&НаСервере
Функция ФискализироватьЧекНаЦентральнойККТ(ДанныеОплаты, СоставКорзины) Экспорт
// Инициализируем менеджер оборудования
УстройствоКассы = Справочники.ПодключаемоеОборудование.НайтиПоРеквизиту("ИдентификаторУстройства", "ЦентральныйФискальник");
Если УстройствоКассы.Пустая() Тогда
Возврат Новый Структура("Успех, Ошибка", Ложь, "Центральная ККТ не найдена в системе");
КонецЕсли;
// Формируем XML-пакет чека по стандарту 1С:БПО
ПараметрыЧека = Новый Структура;
ПараметрыЧека.Вставить("ТипРасчета", Перечисления.ТипыРасчетаККТ.Приход);
ПараметрыЧека.Вставить("ПозицииОплаты", ДанныеОплаты);
ПараметрыЧека.Вставить("Товары", СоставКорзины);
XMLПакет = МенеджерОборудованияВызовСервера.СформироватьПакетДляФискализации(ПараметрыЧека);
// Отправляем пакет на фискализацию через серверную ККТ
РезультатФискализации = ПолучитьРегистратор().ВыполнитьОперациюФискализации(УстройствоКассы, XMLПакет);
Если РезультатФискализации.Сбой Тогда
ЗаписатьВЛог("Ошибка фискализации мобильного чека: " + РезультатФискализации.ОписаниеОшибки);
Возврат Новый Структура("Успех, Ошибка", Ложь, РезультатФискализации.ОписаниеОшибки);
КонецЕсли;
Возврат Новый Структура("Успех, НомерЧека", Истина, РезультатФискализации.НомерДокумента);
КонецФункции
---
Если вы решили использовать на смарт-терминалах приложение 1С:Мобильная касса, но переживаете за расчет скидок, обязательно настройте и задействуйте штатный механизм Сервера лояльности. Это встроенная технология 1С, которая позволяет мобильным кассам обращаться к центральной базе данных прямо в момент формирования чека.
Рассмотрим пошагово, как работает этот механизм:
1С:Управление торговлей или 1С:Розница) отрабатывают все настроенные автоматические скидки, проверяется баланс бонусных баллов и рассчитывается итоговая сумма к оплате.Ниже приведен пример реализации обработки HTTP-запроса сервером лояльности 1С для расчета скидки мобильному клиенту.
// Обработчик HTTP-сервиса лояльности на стороне центральной 1С
Функция РассчитатьСкидкиДляМобильногоКлиента(Запрос) Экспорт
СтрокаЗапроса = Запрос.ПолучитьТелоКакСтроку();
ДанныеЧека = СервисМультиплатформенногоОбмена.ДесериализоватьJSON(СтрокаЗапроса);
// Создаем временную структуру чека для расчета скидок
ДокументРасчета = Документы.ЧекККМ.СоздатьДокумент();
ДокументРасчета.Дата = ТекущаяДатаСеанса();
Для Каждого СтрокаТовара Из ДанныеЧека.Товары Цикл
НоваяСтрока = ДокументРасчета.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовара);
КонецЦикла;
ДокументРасчета.ДисконтнаяКарта = Справочники.ИнформационныеКарты.НайтиПоКоду(ДанныеЧека.КодКарты);
// Вызываем стандартный расчет скидок конфигурации
ОбработкаТабличнойЧастиТоварыКлиентСервер.РассчитатьСкидки(ДокументРасчета);
// Формируем структуру ответа для мобильной кассы
Результат = Новый Структура;
Результат.Вставить("СуммаДоСкидки", ДокументРасчета.Товары.Итог("Сумма"));
Результат.Вставить("СуммаСкидки", ДокументРасчета.Товары.Итог("СуммаАвтоматическойСкидки"));
Результат.Вставить("ИтогоК Оплате", ДокументРасчета.Товары.Итог("Всего"));
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(СервисМультиплатформенногоОбмена.СериализоватьJSON(Результат));
Возврат Ответ;
КонецФункции
---
Для того чтобы внедрение мобильных рабочих мест прошло гладко и без сбоев в работе торгового зала, рекомендуем выполнить следующие настройки:
Проанализировав все варианты, можно сделать вывод: классическая схема с RDP-сессиями уходит в прошлое. Использование специализированных смарт-терминалов на Android с установленным приложением 1С:Мобильная касса или мобильным клиентом 1С, работающим в связке с сервером лояльности, позволяет организовать стабильное, быстрое и современное мобильное рабочее место продавца с минимальными финансовыми затратами.