При работе в распределенных информационных базах (РИБ) многие торговые предприятия сталкиваются с проблемой актуальности данных. Консультанты в торговом зале не могут получить информацию об остатках товара по сети магазинов в режиме реального времени, так как обмен данными имеет задержку. Давайте разберем, как построить архитектуру системы, которая позволит сканировать штрихкоды и мгновенно получать данные из центральной базы.
Основная сложность заключается в том, что стандартный механизм РИБ не предназначен для моментального обмена. Чтобы решить задачу, нам нужно уйти от зависимости от локальных узлов и обращаться напрямую к центральной базе (ЦБД) или выделенному серверу данных. Рассмотрим основные способы реализации:
HTTP-сервис, который принимает запрос от мобильного устройства, выполняет поиск товара по штрихкоду и возвращает JSON-ответ с остатками и ценами.HTTP-сервису. Это избавляет от необходимости установки ПО на каждое устройство.Давайте разберем процесс взаимодействия по шагам:
HTTP-сервис. Назначаем ему корневой URL и определяем метод (например, GET), который будет обрабатывать запрос.СправочникСсылка.Штрихкоды или РегистрСведений.ШтрихкодыНоменклатуры, мы находим соответствующую номенклатуру и характеристику.РегистрНакопления.ТоварыНаСкладах или РегистрНакопления.ТоварыОрганизаций, чтобы получить текущие остатки в разрезе магазинов.Рассмотрим пример того, как может выглядеть логика обработки GET-запроса в 1С:
Функция ПолучитьОстаткиПоШтрихкоду(Запрос)
Штрихкод = Запрос.ПараметрыУРЛ.Получить("barcode");
// Поиск товара по штрихкоду
НайденнаяСсылка = Справочники.Штрихкоды.НайтиПоРеквизиту("Штрихкод", Штрихкод);
// Получение остатков
ЗапросОстатков = Новый Запрос;
ЗапросОстатков.Текст =
"ВЫБРАТЬ
| Остатки.Склад КАК Склад,
| Остатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК Остатки";
ЗапросОстатков.УстановитьПараметр("Номенклатура", НайденнаяСсылка.Владелец);
Результат = ЗапросОстатков.Выполнить().Выгрузить();
// Сериализация в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Результат);
Возврат ЗаписьJSON.Закрыть();
КонецФункции
Использование HTTP-сервисов дает нам следующие преимущества:
При реализации системы помните о безопасности. Никогда не открывайте HTTP-сервис без аутентификации. Используйте БазовуюАутентификацию или передачу токенов в заголовках HTTP-запроса. Для консультантов в зале достаточно создать отдельного пользователя с ограниченными правами, у которого доступ есть только на чтение необходимых данных.
Также важно правильно настроить сканирование. Поскольку Характеристика — это подчиненный объект, при сканировании штрихкода, привязанного к характеристике, система должна уметь «подниматься» на уровень номенклатуры (Владелец), чтобы консультант видел информацию не только по конкретному размеру, но и по всей сетке размеров данного товара.
Работая вместе над такой задачей, вы обеспечите консультантов мощным инструментом продаж, который превратит «беготню к компьютеру» в эффективную работу с клиентом в торговом зале.