Описание ПО "РБ-Софт:Сервер ККМ" (Скачать в формате Word)

advertisement
RB-Soft
РБ-Софт:Сервер ККМ
Описание
Александр Жанчипжапов
28.04.2014
Оглавление
Введение .............................................................................................................................................................3
Описание сервиса печати...................................................................................................................................4
Архитектура .........................................................................................................................................................4
WCF Сервис..........................................................................................................................................................4
Web интерфейс ...................................................................................................................................................4
Формирование и печать документа..................................................................................................................5
Внешняя компонента для 1С .............................................................................................................................6
Описание методов ..........................................................................................................................................8
Инициализация(string TerminalId) .............................................................................................................8
УстановитьВремяОжидания(int hours, int minutes, int seconds) .............................................................8
РаспечататьВнесениеВыемка(ВнесениеВыемка выемка) ......................................................................8
РаспечататьОтчет(Отчет) ............................................................................................................................9
РаспечататьЧек(Чек) ...................................................................................................................................9
РаспечататьЗаказ(Заказ) .......................................................................................................................... 10
РаспечататьТекст(Текст) .......................................................................................................................... 10
СоздатьЗаказ() .......................................................................................................................................... 10
СоздатьОтменуЧека() .............................................................................................................................. 10
СоздатьВнесениеВыемка() ...................................................................................................................... 10
СоздатьОтчет().......................................................................................................................................... 11
СоздатьЧек() ............................................................................................................................................. 11
СоздатьТекст() .......................................................................................................................................... 11
ОткрытьЯщик(string DeviceId) ................................................................................................................. 11
ПолучитьИдентификаторПоИмени(string DeviceName) ....................................................................... 11
ДокументПечаталсяРанее(string Id) ....................................................................................................... 11
ПолучитьЧек(string ID) ............................................................................................................................. 11
ПечатьКлише(string DeviceId) .................................................................................................................. 11
Отрезка(string DeviceId) ........................................................................................................................... 11
Типы документов ......................................................................................................................................... 12
Базовые свойства для всех документов ................................................................................................ 12
Чек ............................................................................................................................................................. 13
Отчет ......................................................................................................................................................... 18
Внесение Выемка..................................................................................................................................... 19
Заказ .......................................................................................................................................................... 20
Введение
Данная документация по сервису печати RB-Soft версия ядра 3.0.4.4 , версия
сервера 1.0.4.28.
Сервис печати предназначен для печати документов на ККМ через сеть
Интернет и ЛВС.
Сервис печати состоит из модулей:
1. Внешняя компонента для 1С
2. Службы PrintServiceWCF
3. Службы PrintServiceWeb
Внешняя компонента предназначена для формирования и отправки на печать
документов. Служба PrintServiceWCF реализует сетевой интерфейс для
взаимодействия с ККМ. PrintServiceWeb web-интерфейс для управления
службой PrintServiceWCF.
Описание сервиса печати
Сервис печати состоит из 3 модулей:
WCF сервис
Web интерфейс для управления сервисом WCF
Внешняя компонента для 1С
Взаимодействия между модулями происходит с помощью передачи SOAP сообщений через TCP/IP.
Для реализации собственного клиента необходимо создать свой WSDL клиент.
Архитектура
Архитектура сервиса печати:
Внешняя компонента для 1С
WCF сервис
Web интерфейс
Генерация документа
Прием документов на печать
Создание устройств ККМ
Подключение к сервису
Запись в базу данных
Настройка устройств ККМ
Отправка сообщения на сервис
Генерация ответных сообщений
Просмотр состояния лицензии
Запуск устройств
Поиск состояния документов
Настройка устройств
Проверка лицензии
Поиск в базе данных
WCF Сервис
WCF сервис реализован в виде службы windows. Порт по умолчанию 4398.
Web интерфейс
Web интерфейс служит для просмотра документов отправленных на печать, так же для настройки
устройств ККМ. Для доступа к Web интерфейсу необходимо в любом браузере перейти по адресу
http://{Адрес где находится сервис WCF}:8866/ . Например http://localhost:8866/ .
Формирование и печать документа
Документ формируется во внешней компоненте для 1С.
Общий алгоритм печати
Клиент
Среда передачи
данных
Сервер
Создание
объекта
драйвера в 1С
Передача
документа на
сервер
Обработка
входящего
документа
Печать на
указанном в
документе ККМ
Формирование
документа
Ожидание ответа
от сервера
Передача ответа
клиенту
Генерация
ответа от
сервера
Внешняя компонента для 1С
Внешняя компонента служит для генерации документов и отправки их на
сервис печати.
Пример подключения:
ПрогИД = "Addin.RBsoftPrintServiceV2";
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Драйвер.Адрес = Адрес;
Драйвер.Порт = Порт;
Драйвер.Инициализация(ПсевдонимУстройства);
Свойства доступные внешней компоненте:
Свойство
Адрес
Порт
Тип
string
int
Описание
IP адрес сервиса печати
Порт сервиса печати (по
умолчанию 4398)
Методы доступные внешней компоненте:
Сигнатура метода
void Инициализация(string TerminalId)
void УстановитьВремяОжидания(int Hours, int
Minutes, int Seconds)
ВнесениеВыемка
РаспечататьВнесениеВыемка(ВнесениеВыемка
выемка)
Отчет РаспечататьОтчет(Отчет rep)
Чек РаспечататьЧек(Чек чек)
Заказ РаспечататьЗаказ(Заказ заказ)
Описание
Инициализирует соединение с
сервером
Определяет таймаут операций
Печатает документ внесения
выемки.
Параметр выемка – Объект
ВнесениеВыемка
Печатает отчет.
Параметр rep – объект отчета
Печатает чек
Параметр чек – объект чека
Печатает заказ
Параметр заказ – объект Заказ
ТекстовыйФайл
РаспечататьТекст(ТекстовыйФайл text);
Заказ СоздатьЗаказ();
ОтменаЧека СоздатьОтменуЧека()
ВнесениеВыемка СоздатьВнесениеВыемка()
Печатает произвольный текст
Создает объект заказа
Создает отмену чека
Создает объект внесение
выемка
Отчет СоздатьОтчет()
Создает объект отчета
Чек СоздатьЧек()
Создает объект чека
ТекстовыйФайл СоздатьТекст();
Создает объект с произвольным
текстом
void ОткрытьЯщик(string DeviceId)
Открывает ящик для заданного
параметром DiveceId
устройства
String ПолучитьИдентификаторПоИмени(string) Получает идентификатор по
имени устройства
bool ДокументПечаталсяРанее(string Id)
Возвращает печатался ли ранее
документ
Чек ПолучитьЧек(string Id)
Возращает объект чека
Int ПечатьКлише(string DeviceId)
Печатает клише на заданном
устройстве
Bool Отрезка(string DeviceId)
Отрезка
string[]
Получет список
ПолучитьСписокИдентификаторовУстройств(); идентификаторов устройств
доступных на сервисе печати
String[] ПолучитьИменаУстройств()
Получает список имен
устройств ККМ
double ПолучитьСуммуНаличных(string
Получает сумму наличных на
DeviceId);
указанной ККМ
string ПолучитьИдентификаторПоИмени(string Получает идентификатор
ИмяУстройства);
устройства по его имени
bool Отрезка(string DeviceId);
Выполняет отрезку на ККМ
int ПечатьКлише(string DeviceId);
Печатает клише на ККМ
Описание методов
Инициализация(string TerminalId)
Метод производит инициализацию внешней компоненты, т.е. пытается подключится к WCF
сервису по заданным свойствам адреса и порта службы WCF.
Описание параметров:
string TerminalId – идентификатор текущего терминала, можно использовать любое
имя, например имя компьютера.
УстановитьВремяОжидания(int hours, int minutes, int seconds)
Метод предназначен для установки таймаута всех операций
Описание параметров:
Int hours - количество часов
Int minutes – количество минут
Int seconds – количество секунд
Пример:
ПрогИД = "Addin.RBsoftPrintServiceV2";
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Драйвер.Адрес = Адрес;
Драйвер.Порт = Порт;
Драйвер.УстановитьВремяОжидания(0,10,0);
Драйвер.Инициализация(ПсевдонимУстройства);
РаспечататьВнесениеВыемка(ВнесениеВыемка выемка)
Метод производит печать внесение/выемку на ККМ.
Описание параметров:
ВнесениеВыемка – Объект типа ВнесениеВыемка
Пример:
ПрогИД = "Addin.RBsoftPrintServiceV2";
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Драйвер.Адрес = Адрес;
Драйвер.Порт = Порт;
Драйвер.Инициализация(ПсевдонимУстройства);
Выемка = Драйвер.СоздатьВнесениеВыемка();
Выемка.ВидОперации = 1;
Выемка.Сумма = 100;
Драйвер.РаспечататьВнесениеВыемка(Выемка);
РаспечататьОтчет(Отчет)
Метод производит печать отчета на ККМ
Описание параметров:
Отчет – объект типа отчет
Пример:
...
Отчет = Драйвер.СоздатьОтчет();
Отчет.ТипОтчета = 1;
Драйвер.РаспечататьОтчет(Отчет);
РаспечататьЧек(Чек)
Метод производит печать чека на ККМ
Описание параметров:
Чек – объект чека
Пример:
…
Чек = Драйвер.СоздатьЧек();
...
Драйвер.РаспечататьЧек(Чек);
РаспечататьЗаказ(Заказ)
Метод производит печать объекта Заказ.
Описание свойств:
Заказ – объект типа заказ
Пример:
...
Заказ = Драйвер.СоздатьЗаказ();
...
Драйвер.РаспечататьЗаказ(Заказ);
РаспечататьТекст(Текст)
Метод производит печать объекта Текст. В объект текст необходимо добавить строки.
Описание свойств:
Текст – объект чека
Пример:
...
Текст = Драйвер.СоздатьТекст();
...
Драйвер.РаспечататьТекст(Текст);
СоздатьЗаказ()
Метод создает объект типа заказ. Описание в следующей главе
СоздатьОтменуЧека()
Метод создает объект типа ОтменаЧека.
СоздатьВнесениеВыемка()
Метод создает объект типа ВнесениеВыемка.
СоздатьОтчет()
Метод создает документ отчета.
СоздатьЧек()
Метод создает документ чек.
СоздатьТекст()
Метод создает документ с произвольным текстом.
ОткрытьЯщик(string DeviceId)
Открывает ящик на указанной ККМ
String DeviceId – идентификатор ККМ в строковом виде.
ПолучитьИдентификаторПоИмени(string DeviceName)
Получает идентификатор ККМ по его имени.
String DeviceName – имя ККМ
ДокументПечаталсяРанее(string Id)
Определяет печатался ли ранее документ с данным идентификатором. Возвращает true/false
String Id – идентификатор документа
ПолучитьЧек(string ID)
Получает объект типа Чек по заданному идентификатору.
String Id – идентификатор чека.
ПечатьКлише(string DeviceId)
Печатает клише на ККМ
String DeviceId – идентификатор ККМ.
Отрезка(string DeviceId)
Производит отрезку на ККМ
String DeviceId – идентификатор ККМ.
Типы документов
В сервисе печати реализовано 5 типов документов.
Тип документа
Описание
Документ отчета
Документ внесения/выемки
Нефискальный документ с
нефискальными строками
Документ чека
Документ заказа с нефискальным
содержимым
Отчет
ВнесениеВыемка
ТекстовыйФайл
Чек
Заказ
Базовые свойства для всех документов
В следующей таблице указаны свойства для всех типов документа
Свойство объекта
Терминал
Тип
string
Доступ
R/W
КодОшибки
int
R
ОписаниеОшибки
string
R
Сессия
int
R
Номер
int
R
Идентификатор
string
R/W
УстройствоПечати
string
R/W
Значение
Наименование
терминального сеанса 1С
Код ошибки объекта.
Генерируется после
печати объекта
Словесное описание
ошибки. Генерируется
после печати объекта
Номер сессии ККМ.
Генерируется после
печати объекта
Сквозной номер
документа ККМ.
Генерируется после
печати объекта
Уникальный
идентификатор
документа
Указывает на устройство
для печати
Чек
Документ чека.
Пример создания документа чек:
ПрогИД = "Addin.RBsoftPrintServiceV2”;
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Драйвер.Адрес = Адрес;
Драйвер.Порт = Порт;
Драйвер.Инициализация(ПсевдонимУстройства);
Чек = Драйвер.СоздатьЧек();
Для чека доступны свойства:
Наименование
свойства
ПарольКассира
Тип
Доступ Значение
String
R/W
Пароль кассира ККМ
int
R/W
Бонус
double R/W
ОтменаЧека = 0,
Продажа = 1,
Возврат = 2,
Аннулирование = 3,
Покупка = 4,
ВозвратПокупки = 5,
АннулированиеПокупки = 6,
СчетНаОплату = 7,
ЗаказПовару = 8,
ПовторЧека = 9,
ВСчетСотрудника = 10,
Бонусы
ОсталосьБонусов
Double R/W
Остаток бонусов
Сумма
Double R/W
Сумма всего документа
Внесено
Double R/W
Внесено денег покупателем
ОплаченоРанее
double R/W
Сумма оплаченная ранее
ТипЧека
Скидка
Double R/W
Значение скидки для документа
Департамент
Int
R/W
Департамент (Отдел)
НомерЧека
Int
R/W
Номер чека
Позиции
String
R
Возвращает все позиции в чеке
через
Методы доступные для чека:
Сигнатура метода
void ДобавитьПозицию(string
Наименование, double Цена, int
Количество, double Скидка, int Отдел)
Void
ДобавитьНеФискальнуюПозицию(string
text)
void ДобавитьПозицию(string
Наименование, double Цена, int
Количество, double Скидка, int Отдел ,
string ТекстДо, string ТекстПосле)
void
ДобавитьОплатуНаличными(double
Сумма, double Скидка)
void ДобавитьОплатуКартой(double
Сумма, double Скидка)
Описание параметров
Наименование – Наименование
позиции
Цена – Цена позиции
Количество – Количество товара
в позиции
Скидка – значение скидки
Отдел – номер отдела
Text- любой произвольный текст
Наименование – Наименование
позиции
Цена – Цена позиции
Количество – Количество товара
в позиции
Скидка – значение скидки
Отдел – номер отдела
ТекстДо – произвольный текст
печатающийся до позиции,
ТекстПосле – произвольный
текст печатающийся после
позиции,
Сумма – сумма оплаты
Скидка – значение скидки
Сумма – сумма оплаты
Скидка – значение скидки
void ДобавитьОплатуКредит(double
Сумма, double Скидка)
void ДобавитьОплатуДругойТип (double
Сумма, byte ТипОплаты, double
Скидка)
void ДобавитьПередЧеком(string text)
Void ДобавитьПослеЧека(string text)
Сумма – сумма оплаты
Скидка – значение скидки
Сумма – сумма оплаты
Скидка – значение скидки
Добавить описание перед чеком
Добавить описание после чека
Добавить позицию(string Наименование, double Цена, int Количество,
double Скидка, int Отдел)
Добавляет фискальную позицию в чек.
String Наименование – Наименование позиции.
Double Цена – Цена позиции
Int Количество – количество товара в позиции
Double Скидка - скидка на позицию в денежном эквиваленте.
Int Отдел – Номер отдела. Драйвер меркурий не принимает значение 0.
Пример:
...
Чек = Драйвер.СоздатьЧек();
Чек.ДобавитьПозицию(«Булочка», 100,2,20, 0);
...
ДобавитьНефискальнуюПозицию(string Text)
Добавляет не фискальную позицию в чек.
Sting Text – любой текст
Пример:
...
Чек = Драйвер.СоздатьЧек();
Чек.ДобавтьНеФискальнуюПозицию(«Произвольный текст»);
...
ДобавитьПозицию(string Наименование, double Цена, double Количество,
double Скидка, int Отдел , string ТекстДо, string ТекстПосле)
Добавляет фискальную позицию в чек. С указанным текстом до позиции и после позиции.
String Наименование – Наименование позиции
Double Цена – Цена позиции
Double Количество – Количество товара в позиции
Double Скидка – значение скидки
Int Отдел – номер отдела
String ТекстДо – произвольный текст печатающийся до позиции,
String ТекстПосле – произвольный текст печатающийся после позиции
ДобавитьОплатуНаличными(double Сумма, double Скидка)
Добавляет оплату наличными
Double Сумма – Сумма платежа наличными.
Double Скидка – Скидка по оплате наличными. Скидка по типам оплаты не учитывается.
Пример:
...
Чек = Драйвер.СоздатьЧек();
Чек.ДобавитьОплатуНаличными(105,0);
...
ДобавитьОплатуКартой(double Сумма, double Скидка)
Добавляет оплату картой.
Double Сумма – Сумма платежа картой.
Double Скидка – Скидка по оплате картой. Скидка по типам оплаты не учитывается.
Пример:
...
Чек = Драйвер.СоздатьЧек();
Чек.ДобавитьОплатуКартой(105,0);
...
ДобавитьОплатуКредит(double Сумма, double Скидка)
Добавляет оплату кредитом
Double Сумма – Сумма платежа кредитом.
Double Скидка – Скидка по оплате кредитом. Скидка по типам оплаты не учитывается.
Пример:
...
Чек = Драйвер.СоздатьЧек();
Чек.ДобавитьОплатуКредит(105,0);
...
ДобавитьОплатуДругойТип (double Сумма, double Скидка)
Добавляет оплату другим типом
Double Сумма – Сумма платежа другим типом.
Double Скидка – Скидка по оплате другим типом. Скидка по типам оплаты не учитывается.
Пример:
...
Чек = Драйвер.СоздатьЧек();
Чек.ДобавитьОплатуДругойТип(105,0);
...
ДобавитьПередЧеком(string text)
Добавляет произвольный текст перед чеком.
String text – произвольный текст.
ДобавитьПослеЧека(string text)
Добавляет произвольный текст после чека.
String text – произвольный текст
Отчет
Пример создания отчета:
ПрогИД = "Addin.RBsoftPrintServiceV2";
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Драйвер.Адрес = Адрес;
Драйвер.Порт = Порт;
Драйвер.Инициализация(ПсевдонимУстройства);
Отчет = Драйвер.СоздатьОтчет();
Отчет.ТипОтчета = 0;
Отчет.УстройствоПечати =
СписокУстройств.GetValue(ИндексУстройства);
result = Драйвер.РаспечататьОтчет(Отчет);
i = result.ОписаниеОшибки;
Свойства отчета:
Свойство
ТипОтчета
Тип
Int
Доступ
R/W
Описание
Задает тип отчета.
0 – Z отчет
1 – X отчет
2 – Отчет по кассирам
3 – Отчет по секциям
Внесение Выемка
Объект создается методом ВнесениеВыемка СоздатьВнесениеВыемка().
Пример создания объекта:
ПрогИД = "Addin.RBsoftPrintServiceV2";
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Драйвер.Адрес = Адрес;
Драйвер.Порт = Порт;
Драйвер.Инициализация(ПсевдонимУстройства);
ВнесениеВыемка = Драйвер.СоздатьВнесениеВыемка();
ВнесениеВыемка.ВидОперации = 1;
ВнесениеВыемка.Сумма = 100;
ВнесениеВыемка.УстройствоПечати =
СписокУстройств.GetValue(ИндексУстройства);
result = Драйвер.РаспачататьВнесениеВыемка(ВнесениеВыемка);
i = result.ОписаниеОшибки;
Свойства объекта
Свойство
ВидОперации
Тип
Int
Доступ
R/W
Сумма
Double
R/W
Описание
Вид операции
0 – выемка
1 - внесение
Сумма операции
Заказ
Пример создания объекта:
ПрогИД = "Addin.RBsoftPrintServiceV2";
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);
Драйвер.Адрес = Адрес;
Драйвер.Порт = Порт;
Драйвер.Инициализация(ПсевдонимУстройства);
Заказ = Драйвер.СоздатьЗаказ();
Заказ.НомерЗаказа = 1;
Заказ.ДобавитьПозицию(«Позиция1», 100, 1, 0, 1);
Заказ.УстройствоПечати =
СписокУстройств.GetValue(ИндексУстройства);
Драйвер.РаспечататьЗаказ(Заказ);
Свойства заказа:
Свойство
НомерЗаказа
Тип
Int
Доступ
R/W
Описание
Номер заказа
Методы заказа:
Метод
Void ДобавитьПозицию(string name,
double price, double Quantity, double
DiscountValue, int Department)
Описание
Добавляет позицию в заказ.
Name – наименование позиции в
заказе,
Price – Цена позиции,
Quantity – Количество,
DiscountValue – Скидка на позицию,
Department- Департамент
Download