Кучма Дмитрий | Руководитель сектора программирования | Консорциум "Беркат"

«Автоматизация сети магазинов, централизация. Методика, приёмы, обучение персонала, решение проблем.»

- Причины необходимости автоматизации сети супермаркетов (ввиду децентрализации - большие затраты на персонал, снижение эффективности, отсутствие инструментов у руководителей служб и учредителей влиять на ситуацию в магазинах, плохой контроль распределения финансовых потоков и состояние фирмы в целом). - Выбор подходящего программного обеспечения, торгового оборудования, максимально эффективные и малозатратные сопряжения имеющегося оборудования и бизнес-процессов магазина с новой программой. - Определение сроков, команды внедрения, цели и задачи, средние и глобальные. - Подготовка к проекту, закуп оборудования (возможно, перетяжка сетей и замена оборудования), выбор оборудования с расчетом многолетней эксплуатации, достаточного запаса прочности. - Непосредственное внедрение, инвентаризация, ввод остатков, введение карточек товара, работа с операторами и обучение персонала. - Работа с бухгалтерской службой, настройка планов обмена, обучение персонала. - Работа с коммерческим отделом, установки цен, акции, ценники, закуп у поставщиков, категорийный менеджмент, взаимодействие с поставщиками, система лояльности покупателей. - Работа со службами магазина, по приемке товара, этикетированию, фасовкой, электронными весами, обучение кассиров и старшего кассира. -Сопровождение программы в течение первых месяцев, отладка взаимодействия служб, разбор проблем и задач. Заключение.

Мобильное приложение для склада с функцией голосового ввода

Программирование - Мобильные приложения

Несложное приложение под Андроид предназначенное для выполнения операций по наборке и приемке товаров на складе, а также выполнения других складских операций. Мобильная часть решения написана под терминалы сбора данных на Android. Транспорт данных - POST - запрос на HTTP сервис. Серверная часть - сервис на базе 1С сервера.

1. Цели и задачи внедрения решения

При разработке приложения решались сразу несколько задач, а именно:

- Обеспечить обработку наборки товара по документам перемещений;

- Обеспечить обработку оприходования товара из приходных накладных;

- Обеспечить инвентаризацию штрихкодов товаров (в .т.ч. создание новых);

- Обеспечить работу в онлайн режиме связи с 1с, посредством локальной сети, через wi-fi;

- Обеспечить дешевизну решения.

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

2. Аппаратная часть часть решения

Для работы решения подходит, в принципе, любое устройство на Андроиде, будь то планшет, терминал сбора данных или даже телефон. Основные требования: 1. Наличие любого подключения к сети (локальной или интернет), 2. Наличие камеры с разрешением, достаточным для распознавания штрихкода и (или) наличие лазерного считывателя штрихкодов (1D или 2D). 3. Наличие микрофона. Уровень защищенности от внешней среды следует учесть при выборе устройства под конкретные условия эксплуатации и персонал. Стоимость таких устройств начинается от 18 т.р. Требования по серверной части: любой сервер, способный тянуть базу 1С + апач.

3. Программная часть решения

Решение состоит из приложения под ОС Андроид, версии не ниже 4.1 и HTTP-сервера, обрабатывающего запросы от мобильного приложения. В принципе, на стороне сервера может быть не обязательно 1С-сервер, но и сервис на php + СУБД на mySQL.

Как было ранее сказано, при разработке приложения следовало сделать его пригодным для решения наибольшего круга задач. Это привило к решению о необходимости универсализации структур данных и переноса основной бизнес-логики на сторону 1С. Проще говоря, мобильное приложение реализует только аппаратно специфичные функции (сканирование и распознавание штрихкода, запись и распознавание речи, отображение данных и интерфейс взаимодействия с кладовщиком). Приложение даже не имеет собственной СУБД (хотя она вполне несложно реализуется). Развертка СУБД повлекла бы необходимость создания планов обмена, хранения больших объемов данных на стороне ТСД, соблюдение правил синхронизации и т.д. В существующем-же решении приложение формирует запрос и передает его на сервер 1с, который возвращает минимум нужной информации. Недостаток этого подхода состоит в необходимости постоянного подключения к сети, но при тестировании решения ширина полосы пропускания 3G оказалась достаточной для комфортной работы.

Конфа 1С для формирования выходных и обработки входных структур прилагается. 

Реализованный функционал:

1. Сканирование штрихкода с использованием камеры (используется библиотека zxing)

2. Автофокус сканера (при сканировании камерой) с изменением частоты цикла автофокуса.

3. Куча других настроек zxing, призванных улучшить скорость сканирования и снизить количество ошибок.

4. Все настройки имеют подобранные эмпирически оптимальные значения "по умолчанию".

5. Подсветка при сканировании камерой в темное время суток (включается автоматически при начале сканирования).

6. Сканирование штрихкода с использованием аппаратного лазерного сканера устройства. Как это работает - описал в другой статье: //infostart.ru/public/623232/

7. Пароль супервизора на изменение настроек приложения (уж очень руки неспокойные у пользователей).

8. Возможность голосового ввода значений на русском языке (как цифр, так и фильтров поиска объектов по базе 1с). Есть один забавный момент. Например, чтобы Андроид интерпретировал слово как цифру "1", надо говорить не "один", а "раз". В остальном-же все распознает четко. Там есть куча настроек по распознаванию (уровень подавляемого шума, задержки всякие и т.д.). Я выведу их в настройки потом. 

9. Возможность работы с произвольным HTTP сервисом и унифицированность формата передаваемых данных.

10. Возможность адаптации несложного функционала на стороне сервера 1С под свои потребности.

11. Возможность добавлять, изменять, удалять номенклатуру; изменять единицы, серии, характеристики и качество номенклатуры, полученной из документа (поиск производится по фильтру, к наименованию - вводится с виртуальной клавиатуры или голосом. Вид сравнения "СОДЕРЖИТ", впрочем, тоже может быть изменен на стороне 1с. Кроме того, можно добавлять к фильтру кодовую фразу с меткой вида сравнения, например "Фильтр Равен ...." или "Фильтр не равен....", а на стороне 1с это все обрабатывать. Еще раз повторяю, что Андроид речь распознает очень четко.)

12. Исходники приложения на C# (Xamarin), PCL-проект (этот вид проекта позволяет махом его расширить на использование под IOS и Windows - такая вот магия).

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

Ссылка на исходники: https://github.com/KotVezdehod/ScanBee

Там-же, в проекте, есть и сборка. Так-же называется "СБОРКА.rar". В ней то-же самое, что и здесь, в прикрепленных файлах.

P.S.

Это версия не "из коробки". Предполагается, что в конфе есть реализация сервиса по обмену данными с устройством и при мер реализации алгоритма разбора получаемых данных и подготовки отправляемых данных, а также необходимые универсальные метаданные, наличие которых обусловлено обменным механизмом.
Итого там есть:
1. Общий модуль "ПодготовкаДанныхДляТСД"
2. HTTP-Сервис "Warehouse_1_0"
3. Перечисление "ФункциональноеНазначениеУстройства"
4. РС "ТоварКОбработкеВТСД" (хранятся данные о состоянии наборки документов)
5. РС "ФункциональнаяПривязкаУстройств" (данные о функции, для которой будет использоваться конкретное устройство)

Изменения на 02.02.2018.

1.Добавлено сжатие потока данных при обмене между 1с и мобильным приложением.

Это позволяет примерно в 1,5-2 раза сократить объем передаваемых данных и время передачи.

1.1. Реализация на стороне мобильного приложения. Передаваемая структура json конвертируется в массив байтов, который затем преобразуется в поток и сжимается посредством класса DeflateStream (пространство имен: System.IO.Compression; сборка в NuGet "Microsoft.Bcl.Build" (бета-версия, но за исключением некоторых странностей поведения, свою функцию выполняет)), затем сжатый поток сохраняется в массив байтов и преобразуется в строку BASE64, которая и передается на сторону 1с. Прием - в обратном порядке.

1.2. Реализация на стороне 1с (очень весело). 1с так и не сделала класс для сжатия и извлечения потоков данных, хотя и есть объекты и методы для работы с двоичными данными, чтения zip-архивов и сжатия данных, помещаемых в хранилище значений. Но вот чтобы все вместе, т.е. работа с потоком сжатых данных - нет. Это проблема. Пришлось воспользоваться методами из публикации //infostart.ru/public/618906/ В общем, все работает.

2.Добавлена подсветка строк в таблице товаров документа, по которым набранное количество отличается от количества к наборке.

2.1. Реализация на стороне мобильного приложения. Используется  интерфейс "IValueConverter".

3.Добавлена подсветка строк в таблице товаров документа, по задаваемой строковой метке.

Например, в документе 50 позиций к наборке. Товар разложен по типу (краска, гвозди, молотки и т.д.). Штрихкодов, чтобы их ловко отсканировать - нет.  Посредством новой фичи, оператор может введя строку поиска подсветить в списке товары определенного вида. 

3.1. Реализация на стороне мобильного приложения. Используется  интерфейс "IValueConverter".

Изменения на 05.03.2018.

1. Реализовано чтение настроек через сканирование штрихкода, созданного на стороне 1с.

Чтобы не забивать настройки в ТСД (т.к. это утомительно делать на нескольких устройствах) на стороне 1с в регистре сведений "Настройки ТСД" создаются записи с настройками для каждого устройства. При нажатии в форме записи регистра кнопки "показать штрихкод" на экране отображается QR-код с сжатыми алгоритмом Deflate и завернутыми в BASE64 настройками. На стороне ТСД они могут быть прочитаны камерой и применены к устройству. Все это делается за 10-15 секунд.

Скачать файлы

Наименование Файл Версия Размер
Мобильное приложение для склада с функцией голосового ввода:
.rar 7,92Mb
05.03.18
1
.rar 7,92Mb 1 Скачать

См. также

Комментарии
Сортировка: Древо
1. Tahallus 421 08.08.17 11:25 Сейчас в теме
Проще исходники выложить на github
myr4ik07; +1 Ответить
2. Prometeus2011 70 08.08.17 12:24 Сейчас в теме
Да, сделаю - ссылку сюда кину.
starik-2005; myr4ik07; +2 Ответить
3. kostyaomsk 74 09.08.17 06:34 Сейчас в теме
Хорошая идея приложения для склада с голосовым поиском.
4. Prometeus2011 70 09.08.17 09:41 Сейчас в теме
(3), Видели бы вы изумление на лице коммерческого...
5. myr4ik07 114 09.08.17 10:14 Сейчас в теме
(4)двумя руками за исходники
6. WellMaster 98 09.08.17 12:18 Сейчас в теме
Аналогично делал Акселот в своей 1с:WMS Управление складом. Я про то, что на ТСД мобильное приложение отрисовывает то, что ей "сообщит" сервер 1с.

А можно по-подробней про практическое применение голосового управления?
8. Prometeus2011 70 09.08.17 13:50 Сейчас в теме
(6), Нет, приложение отрисовывает, то что зашито в коде и сказано ему отрисовать в настройках на стороне ТСД. Не так круто. Просто, например, поиск объектов ведется не на устройстве, по полным справочникам, которые туда надо загнать предварительно, а на стороне сервера. На сервер передается конкретный запрос.

Распознавание речи можно применять при вводе фильтров поиска объектов. Например, хочет кладовщик добавить в документ новую позицию, "Насос центробеж. НПЦ 400/30 "Калибр"", ему надо ввести фильтр поиска на стороне ТСД. Можно в окошечко вбивать "насос", а можно нажать большую кнопку и сказать "насос" или "калибр". Все быстрее. Цифры тоже можно голосом вводить.
7. WellMaster 98 09.08.17 12:24 Сейчас в теме
Еще ничего не сказано про минимальную версию платформы 8.3.10
9. Prometeus2011 70 09.08.17 13:54 Сейчас в теме
Не, версия платформы - любая, главное чтобы функционал http- запросов был.
14. WellMaster 98 09.08.17 20:46 Сейчас в теме
(9) Попробовал открыть конфу платформой 8.3.9, ругнулось, что нужна 8.3.10.
15. Prometeus2011 70 09.08.17 21:09 Сейчас в теме
(14). Да, совместимость конфигурации была отключена по-умолчанию. Поставил 8.3.8. Перезалил.
Как тут сделать скачку бесплатной?
18. sasha777666 265 11.08.17 17:40 Сейчас в теме
(15) никак, инфостарт не разрешает :(
10. DitriX 2755 09.08.17 16:27 Сейчас в теме
Дык, в мобильной 1С такое юзается уже года два. По фикту - кроме эффекта "вау" ничего не дает. Так как на шумном складе, с ветром, с криками и т.д. - очень плохо идет распознание. А каждый раз подносить к лицу и кричать - бред.
Так что используется только отделом брака, где надо надиктовать причину, по которой некая модель была посчитана браком.
11. Prometeus2011 70 09.08.17 16:35 Сейчас в теме
(10), В мобильной платформе 1с есть распознавание речи?
12. DitriX 2755 09.08.17 19:32 Сейчас в теме
(11) а чего бы и нет? Это стандартный функционал андроида :) Там много чего есть, резка фото, маршруты и куча разных других приколов. Но для этого надо знать - что такое андроид и как он работает. Добавить в 1С ввод голосом - 3 строки кода :)
13. Prometeus2011 70 09.08.17 20:43 Сейчас в теме
(12), Ниче себе! А что за метод или объект платформы??? На Шарпе настроек-то специфичных только строк на 9! На форумах все шлют ко внешним компонентам. Ну, а внешняя компонента - геморрой больший, чем сборка чисто на C#. Собственно, из-за недостатков в реализации взаимодействия с аппаратной частью и многими функциями оси, выбрал другую среду разработки. Если на 1с реализовать перехват адресного системного Intent'a проще - значит 1сники сильно вперед продвинулись.
16. DitriX 2755 09.08.17 22:22 Сейчас в теме
(13)
	
        НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.speech.action.RECOGNIZE_SPEECH");
	
	Если НовВз.Запустить(Истина) = 0 Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не поддерживается на вашем устройстве.");
	Иначе
		Объект.Комментарий = НовВз.ДополнительныеДанные.Получить("query").Значение;
	КонецЕсли;
Показать


Это если грубо говоря.
Danil.Potapov; YOr!k; +2 Ответить
17. Prometeus2011 70 10.08.17 09:36 Сейчас в теме
(16). Спасибо. В принципе, то-же самое.

 
var voiceIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
StartActivityForResult(voiceIntent, Globals.VOICE);

Только классы констант с нужными строками из СДК есть.
Но, откровенно говоря, там еще процедуру для перехвата результата активити надо реализовывать. На 1с - проще, конечно.
19. WellMaster 98 14.08.17 21:08 Сейчас в теме
Запустил на 8.3.10
В конфе почти ничего нет.
Что с ней делать - не ясно.
Зря потраченное время
20. Prometeus2011 70 15.08.17 09:51 Сейчас в теме
(19)1. Это версия не "из коробки". Предполагается, что в конфе есть реализация сервиса по обмену данными с устройством и при мер реализации алгоритма разбора получаемых данных и подготовки отправляемых данных, а также необходимые универсальные метаданные, наличие которых обусловлено обменным механизмом.
Итого там есть:
1. Общий модуль "ПодготовкаДанныхДляТСД"
2. HTTP-Сервис "Warehouse_1_0"
3. Перечисление "ФункциональноеНазначениеУстройства"
4. РС "ТоварКОбработкеВТСД" (хранятся данные о состоянии наборки документов)
5. РС "ФункциональнаяПривязкаУстройств" (данные о функции, для которой будет использоваться конкретное устройство)

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