Опубликовано: 1 августа 2018 г.

Для работы c ШТРИХ MOBILE ПТК необходимо:

  • минимальная версия мобильной платформы - 8.3.10.51
  • минимальная версия Android на устройстве - 4.0.3.

Код демо конфигурации открыт. Код нативного приложения закрыт и предоставляется в виде собранного APK файла.

Работа только в мобильном приложении. Бесплатная техподдержка в течении месяца.
Обновления бесплатны в течение года. Доработка по договоренности.

В данный момент реализован функционал:

  1. Получение адреса ККМ подключенной по bluetooth
  2. Открытия смены
  3. Печать чеков
  4. Закрытие смены с гашением
  5. Получить текущее состояние ККМ

1. Получение адреса ККМ подключенной по bluetooth

Передаем команду «getArrayAdapter».
В ответ получаем массив наименований и mac адресов сопряженных bluetooth устройств, среди которых должна быть KKM.

    #Если МобильноеПриложениеКлиент Тогда    НовВз = Новый ЗапускПриложенияМобильногоУстройства;    НовВз.Действие = "ru.niko1c.kkm.action.RUN";    НовВз.ДополнительныеДанные.Добавить("command", "getArrayAdapter");    НовВз.Запустить(Истина);        Ответ = НовВз.ДополнительныеДанные.Получить("response").Значение;    Если ТипЗнч(Ответ) = Тип("Массив") Тогда        Для каждого Строка Из Ответ Цикл            СтрАдрес = Прав(Строка, СтрДлина(Строка) - СтрНайти(Строка, "||")-2);            СтрККМ = Лев(Строка, СтрНайти(Строка, "||")-2);            НовСтрока = Устройства.Добавить();            НовСтрока.ККМ = СтрККМ;            НовСтрока.Адрес = СтрАдрес;        КонецЦикла;    КонецЕсли;        #КонецЕсли

2. Открытия смены

Передаем команду "openFSDay" и обязательный параметр:
- "kkmAdress" - mac адрес ККМ в виде строки.

В ответ получаем ответ с текущим состоянием ККМ.

    #Если МобильноеПриложениеКлиент Тогда    НовВз = Новый ЗапускПриложенияМобильногоУстройства;    НовВз.Действие = "ru.niko1c.kkm.action.RUN";    НовВз.ДополнительныеДанные.Добавить("command", "openFSDay");    НовВз.ДополнительныеДанные.Добавить("kkmAdress", ПолучитьАдресККМ());    НовВз.Запустить(Истина);        Попытка        Ответ = НовВз.ДополнительныеДанные.Получить("response").Значение;        Если ТипЗнч(Ответ) = Тип("Строка") И ЗначениеЗаполнено(Ответ) Тогда            СостояниеККМ = Ответ;        КонецЕсли;    Исключение    КонецПопытки;    #КонецЕсли

3. Печать чеков
Передаем команду "printCheck" и дополнительные параметры:
- "kkmAdress" - mac адрес ККМ в виде строки
- "title" - заголовок в чеке
- "data1c" - данные в формате JSON, формируются функцией ПолучитьДанныеВJSON() в определенном формате. Передавать данные требуется строго в виде такой структуры.

    ДанныеВJSON = ПолучитьДанныеВJSON();        #Если МобильноеПриложениеКлиент Тогда    НовВз = Новый ЗапускПриложенияМобильногоУстройства;    НовВз.Действие = "ru.niko1c.kkm.action.RUN";    НовВз.ДополнительныеДанные.Добавить("command", "printCheck");    НовВз.ДополнительныеДанные.Добавить("kkmAdress", ПолучитьАдресККМ());    НовВз.ДополнительныеДанные.Добавить("title", ПроизвольныйТекст);    НовВз.ДополнительныеДанные.Добавить("data1c", ДанныеВJSON);    НовВз.Запустить(Истина);    #КонецЕсли    &НаСервере        Функция ПолучитьДанныеВJSON()        ЗаписьJSON = Новый ЗаписьJSON;                ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет);        ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);                    МассивДанных = Новый Массив;                Для каждого Строка Из Товары Цикл            ДанныеСтроки = Новый Структура();            ДанныеСтроки.Вставить("name", Строка.Товар);            ДанныеСтроки.Вставить("price", Строка.Цена);            МассивДанных.Добавить(ДанныеСтроки);        КонецЦикла;                тДанные = Новый Структура;        тДанные.Вставить("arrName", МассивДанных);              ЗаписатьJSON(ЗаписьJSON, тДанные);        СтрокаJSON = ЗаписьJSON.Закрыть();                Возврат СтрокаJSON;    КонецФункции

4. Закрытие смены с гашением

Передаем команду "closeFSDay" и обязательный параметр:
- "kkmAdress" - mac адрес ККМ в виде строки.
В ответ получаем ответ с текущим состоянием ККМ.

    #Если МобильноеПриложениеКлиент Тогда    НовВз = Новый ЗапускПриложенияМобильногоУстройства;    НовВз.Действие = "ru.niko1c.kkm.action.RUN";    НовВз.ДополнительныеДанные.Добавить("command", "closeFSDay");    НовВз.ДополнительныеДанные.Добавить("kkmAdress", ПолучитьАдресККМ());    НовВз.Запустить(Истина);        Попытка        Ответ = НовВз.ДополнительныеДанные.Получить("response").Значение;        Если ТипЗнч(Ответ) = Тип("Строка") И ЗначениеЗаполнено(Ответ) Тогда            СостояниеККМ = Ответ;        КонецЕсли;    Исключение    КонецПопытки;    #КонецЕсли

5. Получить текущее состояние ККМ.

Передаем команду "getKkmStatus" и обязательный параметр:
- "kkmAdress" - mac адрес ККМ в виде строки.
В ответ получаем ответ с текущим состоянием ККМ.

 #Если МобильноеПриложениеКлиент Тогда НовВз = Новый ЗапускПриложенияМобильногоУстройства; НовВз.Действие = "ru.niko1c.kkm.action.RUN"; НовВз.ДополнительныеДанные.Добавить("command", "getKkmStatus"); НовВз.ДополнительныеДанные.Добавить("kkmAdress", ПолучитьАдресККМ()); НовВз.Запустить(Истина); Ответ = НовВз.ДополнительныеДанные.Получить("response").Значение; Если ТипЗнч(Ответ) = Тип("Строка") И ЗначениеЗаполнено(Ответ) Тогда     СостояниеККМ = Ответ; КонецЕсли; #КонецЕсли