Весь цикл приемки и отгрузки проходит следующие этапы:
- Создание ТТН Егаис в 1С
- Выгрузка ТТН в ТСД
- Сканирование акцизных марок в документ (и вот тут возникают трудности)
- Отправка данных в 1С.
EGAIS Scan, установленный на ТСД, обладает следующими достоинствами:
- Информирование об ошибках наборщика в процессе сканирования марок
- Контроль остатков марок
- Сканирование АМ, коробов, паллет
- Есть дорогие решения, которые не удовлетворяют полностью запросов пользователей и сложны в интеграции с 1С. За счет простоты EGAIS Scan достигнута надежность работы приложения.
- Связь с 1С без сторонних программ, посредством http-сервиса.
- Простота настройки программы. На ТСД достаточно установить приложение. Вся настройка ведется на стороне 1С.
- Сканирование как новых, так и старых акцизных марок.
Требования к ТСД минимальны, а именно наличие 2d сканера и Android версии 4.0 и выше. Протестировано на модельном ряде Urovo, но возможна работа и на других моделях.
Ну и немного о минусах… Требуется доработка 1С в части настройки http-сервиса.
Описание формата обмена EGAIS Scan
1. В 1с необходимо описать всего 3 HTTP - метода:
/getdocument/* - запрос списка документов. Метод запроса GET без параметров. Метод должен возвращать список документов в формате JSON
/getMarkInfo/* - запрос информации по марке, коробке, паллете. Метод запроса GET. Метод должен возвращать информацию по марке в формате JSON
/setmark/ - установка марок в документ. Метод запроса POST. Метод принимает JSON с марками
2. Настройка HTTP сервера (пример можно посмотреть тут //infostart.ru/public/842751/)
Упрощенный вариант метода getMarkInfo
Функция GetMarkInfoSend(Запрос)
   СтрНомер = Запрос.ПараметрыЗапроса.Получить("number");
   СтрМарка = Запрос.ПараметрыЗапроса.Получить("mark");
   КодТовара = Запрос.ПараметрыЗапроса.Получить("tovarId");
             
   ДокТТН = Документы.ТТН.НайтиПоНомеру(СтрНомер, ТекущаяДата());
   Если ДокТТН.Пустая() Тогда
      Ответ = Новый HTTPСервисОтвет(404);
      Ответ.УстановитьТелоИзСтроки("Не найден документ №" + СтрНомер);
      Возврат Ответ;
   КонецЕсли;
   СпрТовар = Справочники.НоменклатураЕГАИС.НайтиПоКоду(КодТовара);
   Если СпрТовар.Пустая() Тогда
      Ответ = Новый HTTPСервисОтвет(404);
      Ответ.УстановитьТелоИзСтроки("Не найдена номенклатура Егаис с кодом " + КодТовара);
      Возврат Ответ;
   КонецЕсли;
   ЗаписьJSON = Новый ЗаписьJSON;
   ЗаписьJSON.УстановитьСтроку();
   Если (СтрДлина(СтрМарка) = 150) или (СтрДлина(СтрМарка) = 68) Тогда
      Марка = Справочники.МаркиЕГАИС.НайтиПоНаименованию(СтрМарка); 
      Если Марка.Пустая() Тогда
         Ответ = Новый HTTPСервисОтвет(404);
         Ответ.УстановитьТелоИзСтроки("Не найдена данная марка");
         Возврат Ответ;
      КонецЕсли;
      //Проверка остатка по марке.
      ЗаписьJSON.ЗаписатьНачалоОбъекта();
      ЗаписьJSON.ЗаписатьИмяСвойства("Stamp");
      ЗаписьJSON.ЗаписатьЗначение(Марка.Наименование);
      ЗаписьJSON.ЗаписатьИмяСвойства("Count");
      ЗаписьJSON.ЗаписатьЗначение("1");
      ЗаписьJSON.ЗаписатьКонецОбъекта();
   Иначе
      //Проверка остатков коробок паллет.
   КонецЕсли;
   ТекстОтвета = ЗаписьJSON.Закрыть();
   Ответ = Новый HTTPСервисОтвет(200);            
   Ответ.Заголовки.Вставить("Content-type", "application/json;  charset=utf-8");
   Ответ.УстановитьТелоИзСтроки(ТекстОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
   Возврат Ответ;
КонецФункции
3. Публикуем HTTP сервис
4. В настройках приложения указываем адрес HTTP сервиса и учетные данные 1с на подключение.
5. Тестируем работу приложения.
Мобильное приложение распространяется через Google Play Market.
В ограниченной версии доступно сканирование марок через REST API для тестирования интеграции с учетной системой.
Готов обсудить вопросы по развитию и доработкам. Комментарии приветствуются.
Вступайте в нашу телеграмм-группу Инфостарт
 
                                 
                                 
                                     
                                     
                                    