Вимоги до розробки драйверів підключеного обладнання (версія 1.5)
- Рядок, що визначає тип обладнання, має одне зі значень: “СканерШтрихкода“, “СчитывательМагнитныхКарт“, “ФискальныйРегистратор“, “ПринтерЧеков“, “ПринтерЭтикеток“, “ДисплейПокупателя“, “ТерминалСбораДанных“, “ЭквайринговыйТерминал“, “ЭлектронныеВесы“, “ВесыСПечатьюЭтикеток“.<br />КЛЮЧОВІ СЛОВА: - Версія вимог – версія поточного документа (Версії 1.00 відповідає число 1000. Версії 1.2 відповідає число 1002. Поточній версії 1.<span lang="en-us">5</span> відповідає число 100<span lang="en-us">5</span>).4.3. Використання драйвера, попередньо встановленого на локальному комп’ютері. Підключення програмно-апаратних POS-систем у режимі "OFFLINE" за допомогою файлового обміну. Підключення програмно-апаратних комплексів за допомогою Веб-сервісу обладнання
4.3. Використання драйвера, попередньо встановленого на локальному комп’ютері
Підключення програмно-апаратних POS-систем у режимі "OFFLINE" за допомогою файлового обміну
Підключення програмно-апаратних комплексів за допомогою Веб-сервісу обладнання
- Зміни у стандарті
- Вступ
- Розробка драйвера для підключення обладнання до локального робочого місця
- Загальні вимоги до розроблюваного драйвера та його архітектури
- Обов’язкові функції та методи, пов’язані з використанням драйвера підключеного обладнання в системі
- Опис методів, специфічних для типів підключеного обладнання
- Вимоги до розробки драйверів для електронних ваг
- Вимоги до розробки драйверів для електронних ваг з друком етикеток у режимі "OFFLINE"
- Вимоги до розробки драйверів для дисплеїв покупця
- Вимоги до розробки драйверів для терміналів збору даних
- Вимоги до розробки драйверів для фіскальних реєстраторів
- Вимоги до розробки драйверів для принтерів чеків
- Вимоги до розробки драйверів для принтерів етикеток
- Вимоги до розробки драйверів пристроїв введення (сканери штрихкоду, зчитувачі магнітних карток тощо)
- Вимоги до розробки драйверів для еквайрингових терміналів
- Підключення драйверів, розроблених за стандартом «1С: Сумісно», до конфігурації БПО
- Підготовка драйвера до завантаження в конфігурацію БПО
- Завантаження підготовленого драйвера в конфігурацію БПО
- Використання драйвера, попередньо встановленого на локальних комп’ютерах
- Підключення програмно-апаратних POS-систем у режимі "OFFLINE" за допомогою файлового обміну
- Підключення програмно-апаратних комплексів за допомогою Веб-сервісу обладнання
Зміни у стандарті
Цей стандарт підтримується в "1С:Бібліотека підключеного обладнання" починаючи з версії 1.2.3.
| Версія | Розділ | Зміни |
|---|---|---|
| 1.5 | Вимоги до розробки драйверів для фіскальних реєстраторів | Додано можливість друку штрихкоду типу "QR". |
| 1.5 | Вимоги до розробки драйверів для принтерів чеків | Додано можливість друку штрихкоду типу "QR". |
| 1.5 | Підключення програмно-апаратних POS-систем у режимі "OFFLINE" за допомогою файлового обміну | До структури вивантажуваної таблиці товарів ТаблицаТоваров (GoodsTable) додано прапорець "FullLoad". |
| 1.4 | Вимоги до розробки драйверів для принтерів етикеток | Новий розділ. |
| 1.4 | Підключення програмно-апаратних комплексів за допомогою Веб-сервісу обладнання | Новий розділ. |
| 1.4 | Підключення програмно-апаратних POS-систем у режимі "OFFLINE" за допомогою файлового обміну | Новий розділ. |
| 1.3 | Вимоги до розробки драйверів для принтерів чеків | Новий розділ. |
| 1.3 | Підключення драйверів, розроблених за стандартом «1С: Сумісно», до конфігурації БПО | Новий розділ. |
| 1.3 | Вимоги до розробки драйверів для фіскальних реєстраторів | Додано новий метод "ОткрытьСмену". |
| 1.2 | Загальні вимоги до розроблюваного драйвера та його архітектури | - Додано рекомендації щодо розробки архітектури драйвера. - Доповнено пункт 4. - Додано пункт 10. |
| 1.2 | Обов’язкові функції та методи, пов’язані з використанням драйвера підключеного обладнання в системі | Додано нові атрибути для таблиці параметрів: "ТолькоПросмотр", "Описание". |
| 1.2 | Вимоги до розробки драйверів для електронних ваг з друком етикеток у режимі "OFFLINE" | До методу ВыгрузитьТовары (UploadGoods) додано параметр "СтатусПакета" |
| 1.2 | Вимоги до розробки драйверів для терміналів збору даних | До методу ВыгрузитьТаблицу (UploadTable) додано параметр "СтатусПакета" |
| 1.2 | Вимоги до розробки драйверів для еквайрингових терміналів | Додано рекомендації щодо реалізації друку кількох сліп-чеків. |
| 1.1 | Обов’язкові функції та методи, пов’язані з використанням драйвера підключеного обладнання в системі | - Для методу "ПолучитьОписание" додано додаткові параметри "ИнтеграционнаяБиблиотека", "ОсновнойДрайверУстановлен" - Додано методи "ПолучитьДополнительныеДействия", "ВыполнитьДополнительноеДействие" |
| 1.1 | Вимоги до розробки драйверів для еквайрингових терміналів | - Для методів, що відповідають за роботу з еквайринговими операціями, додано параметр "НомерЧека" - Додано функцію "ПечатьКвитанцийНаТерминале" |
Вступ
Для підключення обладнання до автоматизованих систем на платформі «1С:Підприємство» використовується "1С:Бібліотека підключеного обладнання". Бібліотека надає набір високорівневих механізмів для уніфікованої роботи з підключеним обладнанням. Застосування цієї бібліотеки дає змогу прискорити реалізацію підтримки широкого спектра моделей підключеного обладнання в розроблюваних конфігураціях, а також додати готові функціональні блоки до вже працюючих прикладних рішень.
Підключення обладнання до локального робочого місця здійснюється за допомогою спеціально розробленого драйвера. Вимоги до таких драйверів підключеного обладнання описують єдині методи, що використовуються як конфігурацією "1С:Бібліотека підключеного обладнання", так і драйвером обладнання. Конфігурація "1С:Бібліотека підключеного обладнання" безпосередньо взаємодіє з драйверами обладнання, використовуючи стандартні команди, завдяки чому досягається стандартний результат.
Підтримується взаємодія з програмно-апаратними POS-системами (від англ. "Point of Sale" - "Точка продажу"), що забезпечують роздрібні продажі. Взаємодія забезпечується за допомогою файлового обміну за допомогою вбудованого до бібліотеки модуля "1С: ККМ-Offline".
Бібліотека підтримує роботу сторонніх програмно-апаратних комплексів різного призначення за допомогою Веб-сервісу обладнання. Для здійснення обміну необхідно опублікувати Веб-сервіс "EquipmentService" що входить до складу бібліотеки. Веб-сервіс обробляє запити на отримання й обробку даних від програмно-апаратних комплексів і повертає стандартний результат до зовнішнього програмно-апаратного комплексу.

Рис. 1. Схеми взаємодії конфігурацій системи програм «1С:Підприємство» з підключеним обладнанням
Загальну структуру документа можна поділити на дві частини: вимоги до розробки драйвера для підключення обладнання до локального робочого місця та підключення апаратно-програмних систем за допомогою веб-сервісу обладнання.
Розробка драйвера для підключення обладнання до локального робочого місця
Обладнання підключається до системи за допомогою драйвера, розробленого за технологією створення зовнішніх компонент. Технологія визначає інтерфейс взаємодії між платформою та драйвером. Реалізація драйвера можлива за технологією створення зовнішніх компонент із використанням стандартних компонентних об’єктів для Windows (COM-інтерфейс) і власної технології фірми 1С – NativeAPI (динамічна бібліотека для Windows або Linux). За допомогою технології NativeAPI можна створювати зовнішні компоненти, які можуть підключатися як у клієнтському застосунку, так і на сервері "1С:Підприємства", зокрема й у версіях для Linux.
Інтерфейс зовнішньої компоненти можна умовно поділити на кілька частин:
- Перша частина - загальні вимоги до розроблюваного драйвера та його архітектури.
- Друга частина - системна, визначає набір службових функцій і методів, пов’язаних із використанням драйвера підключеного обладнання в системі – підключення та налаштування драйвера, отримання його опису, тестування й обслуговування помилок.
- Третя частина - функціональна, визначає обов’язковий набір функцій і методів, специфічний для цього типу підключеного обладнання.
- Четверта частина - дії з підключення драйверів, розроблених за стандартом «1С: Сумісно», до конфігурації БПО.
1. Загальні вимоги до розроблюваного драйвера та його архітектури
Розроблюваний драйвер повинен:
- Бути розроблений як зовнішня компонента за технологією створення зовнішніх компонент, наведеною у статті "Технологія створення зовнішніх компонент".
- Зовнішня компонента для роботи з підключеним обладнанням повинна містити лише один об’єкт, що реалізує розширення вбудованої мови, і повертати методом «RegisterExtensionAs» ім’я розширення, що збігається з другою частиною ProgID компоненти. Приклад: для компоненти з ProgID «AddIn.Scanner» функція повинна повертати «Scanner». Ім’я розширення не повинно містити пробілів і неприпустимих символів (відповідно до правил формування імен об’єктів "1С:Підприємства").
- Під час створення компонент із використанням технології COM об’єкт повинен бути некерованим (Unmanaged Component), тобто написаним на некерованому коді.
- Забезпечити можливість реалізації функціоналу в повному обсязі (повинні бути реалізовані та працювати всі методи) для підключеного типу обладнання. Якщо обладнанням ця функція не підтримується, має повертатися "False", а в описі помилки, що повертається методом ПолучитьОшибку (GetLastError), міститься текст про те, що ця функція обладнанням не підтримується.
- Надавати російськомовні й англомовні назви методів (наприклад ПолучитьВес() - GetWeight() тощо).
- Підтримувати роботу з кількома екземплярами пристроїв у межах процедур, у яких використовується це обладнання.
- У разі виникнення помилки в роботі надавати докладний опис помилки, що сталася, який дає змогу користувачеві зрозуміти причину її виникнення та можливий спосіб усунення.
- У разі виникнення позаштатних ситуацій (некоректні дії користувача, відсутність запитуваного методу або функції, передавання некоректних значень тощо) коректно їх обробляти. Не повинно бути аварійних завершень роботи драйвера та інших дій драйвера, які можуть призвести до порушення нормальної роботи користувача.
- Приймати/повертати й обробляти таблиці значень у вигляді XML-документа (текст у форматі XML з кодуванням UTF-8, що передається за допомогою параметра типу STRING). Цей спосіб передавання складних масивів даних обрано для забезпечення незалежності від технології, на якій реалізується зовнішня компонента-драйвер (Windows COM або NativeAPI). Для спрощення обробки структур даних використовуються назви атрибутів лише англійською мовою.
- Обробляти метод SetLocale для локалізації драйвера відповідно до отриманого коду локалізації та налаштовувати своє середовище (текстові написи, повідомлення про помилки тощо). Драйвер повинен підтримувати локалізоване середовище для локального коду регіону та локалізацію середовища англійською мовою. Якщо отриманий код локалізації відрізняється від передбаченого в драйвері, драйвер повинен налаштувати своє середовище на використання англійської мови. Докладніше використання методу SetLocale описано в документі "Технологія створення зовнішніх компонент".
Під час розробки драйвера можна використовувати кілька архітектурних рішень:
- Однокомпонентний драйвер - Драйвер, що являє собою один файл і призначений для використання лише із системою програм «1С:Підприємство». Під час розробки драйвера у вигляді одного файла всі використовувані run-time бібліотеки та інші необхідні файли повинні статично включатися до драйвера, оскільки на комп’ютері користувача їх може не виявитися або вони можуть бути іншої версії. Рекомендована технологія для розробки цього драйвера - NativeAPI.
- Багатокомпонентний драйвер - Драйвер, що являє собою складний програмно-апаратний комплекс, призначений для використання як із системою програм «1С:Підприємство», так і з програмними рішеннями сторонніх виробників. Розроблюваний драйвер складається з двох частин:
- Інтеграційна бібліотека - проміжна компонента для зв’язку "1С Підприємства" з основною поставкою драйвера. Має інтерфейс, розроблений відповідно до загальних вимог до драйвера та технології розробки зовнішніх компонент, але не реалізує функціоналу драйвера підключеного обладнання. Інтеграційна бібліотека реалізує функціонал пошуку встановленої основної поставки драйвера, його ініціалізацію та переадресацію викликів. Усі використовувані run-time бібліотеки та інші необхідні файли повинні бути статично включені до компоненти.
- Основна поставка драйвера - драйвер постачальника, реалізований за довільною технологією та такий, що складається з довільного набору файлів. Протокол взаємодії драйвера з інтеграційною бібліотекою не регламентується цими вимогами. Поставка драйвера здійснюється шляхом інсталяції з дистрибутива постачальника.
2. Обов’язкові функції та методи, пов’язані з використанням драйвера підключеного обладнання в системі
Цей розділ містить список обов’язкових функцій і методів, пов’язаних із використанням драйвера підключеного обладнання в системі – його підключення та налаштування, отримання опису, тестування й обслуговування помилок.
Драйвер підтримує два основні етапи роботи з обладнанням у конфігурації:
- Реєстрація та налаштування обладнання
- Використання обладнання користувачем у процесі роботи
Реєстрація та налаштування обладнання
- Отримання опису драйвера викликом методу «ПолучитьОписание(GetDescription)».
- Отримання доступних параметрів для налаштування драйвера методом «ПолучитьПараметры(GetParameters)».
- Побудова форми налаштування драйвера на підставі списку доступних параметрів.
- Збереження параметрів налаштування драйвера в базі даних конфігурації.
Використання обладнання користувачем у процесі роботи
- Ініціалізація пристрою збереженими в базі параметрами методом «УстановитьПараметр(SetParameter)».
- Підключення обладнання за допомогою методу «Подключить(Open)» з поточними значеннями параметрів, установленими викликами методу «УстановитьПараметр(SetParameter)». Метод «Подключить(Open)» повертає ідентифікатор підключеного екземпляра пристрою.
- Виклик обов’язкових функцій і методів, специфічних для цього типу підключеного обладнання, з використанням ідентифікатора підключеного екземпляра пристрою.
- Отримання коду помилки та опису помилки методом «ПолучитьОшибку(GetLastError)» у разі її виникнення.
- Відключення пристрою методом «Отключить(Close)» за ідентифікатором підключеного екземпляра пристрою.
УВАГА: Усі значення елементів інтерфейсу (найменування, опис, заголовки, повідомлення) повинні бути реалізовані мовою, установленою кодом локалізації. (див. п.10 розділу Загальні вимоги до розроблюваного драйвера та його архітектури.)
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ПолучитьНомерВерсии (GetVersion) |
- |
- |
- |
STRING |
Повертає номер версії драйвера. |
| ПолучитьОписание (GetDescription) | Наименование (Name) | STRING [OUT] | Найменування драйвера |
BOOL |
Повертає інформацію про драйвер, таку як назва й опис, підтримуваний тип обладнання. |
| Описание (Description) | STRING [OUT] | Опис драйвера | |||
| ТипОборудования (EquipmentType) | STRING [OUT] | Рядок, що визначає тип обладнання* | |||
| РевизияИнтерфейса (InterfaceRevision) | LONG [OUT] | Підтримувана версія вимог** для цього типу обладнання | |||
| ИнтеграционнаяБиблиотека (IntegrationLibrary) |
BOOL [OUT] | Прапорець повертає, чи є компонента інтеграційною бібліотекою драйвера або самостійним драйвером | |||
| ОсновнойДрайверУстановлен (MainDriverInstalled) |
BOOL [OUT] | Для інтеграційної бібліотеки повертає прапорець установлення основної поставки драйвера | |||
| URLCкачивания (DownloadURL) |
STRING [OUT] | Повертає порожній рядок або адресу сторінки сайту виробника, за якою доступне посилання для завантаження основної поставки драйвера або інша інформація про драйвер. У разі повернення порожнього рядка функціонал установлення основної поставки драйвера не активізується. | |||
| ПолучитьОшибку (GetLastError) | ОписаниеОшибки (ErrorDescription) |
STRING [OUT] |
Опис помилки |
LONG |
Повертає код і опис останньої помилки, що сталася. |
| ПолучитьПараметры (GetParameters) | ТаблицаПараметров (TableParameters) XML таблиця |
STRING [OUT] |
Список параметрів |
BOOL |
Повертає список параметрів налаштування драйвера та їхні типи, значення за замовчуванням і можливі значення. |
| УстановитьПараметр (SetParameter) | Имя (Name) |
STRING [IN] |
Ім’я параметра |
BOOL |
Установлення значення параметра за ім’ям |
| Значение (Value) |
VARIANT [IN] |
Значення параметра | |||
| Подключить (Open) | ИДУстройства (DeviceID) |
STRING [OUT] |
Ідентифікатор пристрою |
BOOL |
Підключає обладнання з поточними значеннями параметрів, установленими функцією «УстановитьПараметр». Повертає ідентифікатор підключеного екземпляра пристрою |
| Отключить (Close) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою |
BOOL |
Відключає обладнання |
| ТестУстройства (DeviceTest) | Описание (Description) | STRING [OUT] | Опис результату виконання тесту |
BOOL |
Виконує пробне підключення й опитування пристрою з поточними значеннями параметрів, установленими функцією «УстановитьПараметр». У разі успішного виконання підключення в описі повертається інформація про пристрій |
| АктивированДемоРежим (DemoModeIsActivated) | STRING [OUT] | Повертає опис обмежень демонстраційного режиму за його наявності та порожній результат за його відсутності. Приклад: драйвер є платним, і для повноцінної роботи потрібен ключ захисту. | |||
| ПолучитьДополнительныеДействия (GetAdditionalActions) | ТаблицаДействий (TableActions) XML таблиця |
STRING [OUT] |
Список додаткових дій |
BOOL |
Отримує список дій, які відображатимуться як додаткові пункти меню у формі налаштування обладнання, доступній адміністратору. Якщо дій не передбачено, повертає порожній рядок. |
| ВыполнитьДополнительноеДействие (DoAdditionalAction) | ИмяДействия (ActionName) | STRING [IN] | Ім’я дії |
BOOL |
Команда на виконання додаткової дії з визначеним ім’ям |
ТаблицаПараметров (TableParameters)
Текст у форматі XML, що передається за допомогою параметра типу STRING. Містить опис усіх параметрів драйвера та опис візуального інтерфейсу налаштування драйвера.
Необхідні для роботи параметри можуть бути структуровані для виведення на форму конфігурації "1С:Підприємства" - розподілені за вкладками та групами на вкладці. Вкладки й групи можуть мати найменування, що відобразяться на формі. Для параметрів можуть бути задані певні значення, які сформують спадний список для вибору. Нарешті, поля параметрів, залежних від інших параметрів, можуть активуватися за потреби.
| Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута |
|---|---|---|---|
| Name | Так | string | Ім’я параметра, для якого створюється поле введення, не повинно містити пробілів і неприпустимих символів (відповідно до правил формування імен об’єктів "1С:Підприємства") та бути унікальним у межах таблиці параметрів |
| Caption | Так | string | Довільний напис перед полем введення |
| Description | Ні | string | Опис параметра. Довідкова інформація, що виводиться у спадній підказці. |
| TypeValue | Так | string | Один із зазначених нижче типів даних: “String“, “Number“, “Boolean” |
| FieldFormat | Ні | string | Рядок форматування значення параметра |
| DefaultValue | Ні | string | Значення параметра за замовчуванням |
| ReadOnly | Ні | boolean | Параметр лише для перегляду |
| ChoiceList | Ні | list | Містить список доступних для вибору значень параметра |
| PageCaption | Ні | string | Найменування вкладки, за яким групуватимуться поля введення |
| GroupCaption | Ні | string | Найменування групи, за яким групуватимуться поля введення |
| MasterParameterName | Ні | string | Ім’я параметра, що керує активністю цього поля |
| MasterParameterOperation | Ні | string | Операція порівняння з MasterParameterName: Equal, NotEqual |
| MasterParameterValue | Ні | string | Значення головного параметра, за якого виконується умова операції MasterParameterOperation. У разі виконання умови поле введення стає доступним. Якщо MasterParameterName і MasterParameterValue не визначені, поле завжди активне |
Приклад текстового XML, що описує параметри драйвера:
<?xml version="1.0" encoding="UTF-8" ?>
<Settings>
<Page Caption="Параметри">
<Group Caption="Параметри підключення">
<Parameter Name="Model" Caption="Модель" TypeValue="Number" />
<Parameter Name="Port" Caption="Порт" TypeValue="Number" DefaultValue="0">
<ChoiceList>
<Item Value="0">Клавіатура</Item>
<Item Value="1">COM1</Item>
<Item Value="2">COM2</Item>
</ChoiceList>
</Parameter>
<Parameter Name="Parity" Caption="Парність" TypeValue="Boolean" DefaultValue="true"/>
<Parameter Name="Speed" Caption="Швидкість" TypeValue="Number" DefaultValue="1" MasterParameterName="" MasterParameterOperation="" MasterParameterValue=""/>
</Group>
</Page>
</Settings>
У результаті буде сформовано таку форму для введення параметрів:

ТаблицаДействий (TableActions)
Текст у форматі XML, що передається за допомогою параметра типу STRING. Містить опис додаткових дій для налаштування та керування драйвером у формі налаштування обладнання, доступній адміністратору.
Ці дії відображатимуться пунктами меню в розділі "Функції", після пункту меню "Тест пристрою" на формі налаштування екземпляра підключеного обладнання. У разі вибору певного пункту меню буде викликано метод драйвера "ВыполнитьДополнительноеДействие" з параметром "ИмяДействия", що відповідає цьому пункту меню. Під час виконання цієї дії драйвер може створювати додаткові діалогові вікна відповідно до документа "Технологія створення зовнішніх компонент".
| Секція | Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута |
|---|---|---|---|---|
| Actions | Так | Користувацькі дії. | ||
|
Action |
Name | Так | string | Ім’я дії, для якої створюється пункт меню, не повинно містити пробілів і неприпустимих символів (відповідно до правил формування імен об’єктів "1С:Підприємства") та бути унікальним у межах таблиці параметрів |
| Caption | Так | string | Заголовок пункту меню | |
Приклад текстового XML, що описує додаткові дії:
Копіювати до буфера обміну
<?xml version="1.0" encoding="UTF-8" ?>
<Actions>
<Action Name="SettingLog" Caption="Параметри журналювання"/>
</Actions>
У результаті буде сформовано такі пункти меню для форми введення параметрів:

3. Опис методів, специфічних для типів підключеного обладнання
3.1. Вимоги до розробки драйверів для електронних ваг
Конфігураціями підтримуються такі можливості роботи з вагами on-line:
- Введення значення ваги тари, що використовується для пакування зважуваного товару.
- Отримання значення ваги товару за вирахуванням ваги тари.
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| УстановитьВесТары (Calibrate) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Виконує встановлення ваги тари на вагах. Якщо значення «ВесТары» має значення 0 – як значення приймається поточне значення ваги на вагах. |
| ВесТары (TareWeight) |
DOUBLE [IN] |
Вага тари | |||
| ПолучитьВес (GetWeight) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Отримує поточну вагу товару на вагах. |
| ТекущийВес (Weight) |
DOUBLE [OUT] |
Поточна вага товару на вагах | |||
3.2. Вимоги до розробки драйверів для електронних ваг з друком етикеток у режимі "OFFLINE"
Робота з електронними вагами з друком етикеток полягає у вивантаженні таблиці товарів. Таблиця формується на основі бази даних засобами конфігурації. Обробка вивантаження таблиці товарів в електронні ваги повинна передбачати вивантаження кількома ітераціями шляхом послідовних викликів методу «ВыгрузитьТовары (UploadGoods)» з пакетами даних певного розміру (наприклад, по 100 записів) з додатковим параметром, що визначає статус пакета ("first" - перший пакет, "regular" - черговий, "last" - останній пакет).
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ВыгрузитьТовары (UploadGoods) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Вивантажує товари у ваги |
| ТаблицаТоваров (GoodsTable) XML таблиця |
STRING [IN] |
Таблиця товарів | |||
| СтатусПакета (PackageStatus) |
STRING [IN] |
Статус пакета * | |||
| ОчиститьТовары (ClearGoods) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Видаляє раніше завантажені товари у вагах |
ТаблицаТоваров (GoodsTable)
Текст у форматі XML, що передається за допомогою параметра типу STRING.
| Секція | Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута |
|---|---|---|---|---|
| Table | Так | Таблиця товарів | ||
|
Record |
PLU | Так | long | PLU товару (Індекс товару у вагах) |
| Code | Так | long | Код вагового товару | |
| IsWeightGoods | Так | boolean | Прапорець вагового товару. За замовчуванням true. Якщо false – це штучний товар, що фасується на вагах. |
|
| Name | Так | string | Найменування товару | |
| Price | Так | decimal | Ціна за кілограм | |
| Description | Ні | string | Текстовий опис товару (склад товару, список інгредієнтів тощо) | |
| ShelfLife | Ні | long | Тривалість зберігання/термін придатності товару, у днях | |
Приклад текстового XML, що містить дані:
<?xml version="1.0" encoding="UTF-8"?>
<Table>
<Record PLU="1" Code="1003" Name="Яблука Антонівка" Price="95,50" ShelfLife="7" IsWeightGoods="true"/>
<Record PLU="2" Code="1023" Name="Салат Болгарський" Price="500,00" IsWeightGoods="true"
Description="Склад: буряк, морква, шинка, м’ясо, сир, яйце, цибуля ріпчаста, майонез" ShelfLife="5"/>
</Table>
3.3. Вимоги до розробки драйверів для дисплеїв покупця
Під час оформлення документів продажу необхідна інформація може відображатися на дисплеї покупця. Склад інформації визначається у конфігурації. Підтримуються багаторядкові дисплеї та поділ рядків на області.
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ВывестиСтрокуНаДисплейПокупателя (StringOutputOnCustomerDisplay) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Виводить передані рядки на дисплей покупця. Один рядок відповідає одному рядку дисплея. Якщо рядок порожній, інформація в цьому рядку на дисплеї не змінюється |
| Строки (Strings) |
STRING [IN] |
Рядки, що містять інформацію для відображення на дисплеї | |||
| ОчиститьДисплейПокупателя (ClearCustomerDisplay) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Очищає дисплей покупця |
| ПолучитьПараметрыВывода (GetOutputOptions) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Отримати розмірність дисплея покупця |
| СтолбцовНаДисплее (DeviceColumns) |
LONG [OUT] |
Повертає кількість стовпців на дисплеї (символів у рядку) | |||
| СтрокНаДисплее (DeviceRows) |
LONG [OUT] |
Повертає кількість рядків на дисплеї | |||
3.4. Вимоги до розробки драйверів для терміналів збору даних
Робота з терміналами збору даних полягає у вивантаженні таблиці товарів із конфігурації та завантаженні таблиці даних про відібрані товари. Таблиця формується на основі бази даних засобами конфігурації. Обробка вивантаження таблиці товарів повинна передбачати вивантаження кількома ітераціями шляхом послідовних викликів методу «ВыгрузитьТаблицу (UploadTable)» з пакетами даних певного розміру (наприклад, по 100 записів) з додатковим параметром, що визначає статус пакета ("first" - перший пакет, "regular" - черговий, "last" - останній пакет). Завантаження таблиці товарів виконується одноразово методом «ЗагрузитьТаблицу (DownloadTable)».
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ВыгрузитьТаблицу (UploadTable) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Вивантажує таблицю товарів у ТЗД |
| ТаблицаТоваров (GoodsTable) XML таблиця |
STRING [IN] | Вивантажувана таблиця | |||
| СтатусПакета (PackageStatus) | STRING [IN] | Статус пакета * | |||
| ЗагрузитьТаблицу (DownloadTable) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Завантажує таблицю з ТЗД |
| ТаблицаЗагрузки (DownloadTable) XML таблиця |
STRING [OUT] | Завантажувана таблиця | |||
| ОчиститьТаблицу (ClearTable) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою |
BOOL |
Очищає раніше завантажену таблицю товарів у ТЗД |
ТаблицаТоваров (GoodsTable)
Текст у форматі XML, що передається за допомогою параметра типу STRING.
| Секція | Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута |
|---|---|---|---|---|
| Table | Так | Таблиця товарів | ||
|
Record |
BarCode | Так | string | Штрихкод номенклатури |
| Name | Ні | string | Найменування товару | |
| UnitOfMeasurement | Ні | string | Одиниця виміру номенклатури | |
| CharacteristicOfNomenclature | Ні | string | Характеристика номенклатури | |
| SeriesOfNomenclature | Ні | string | Серія номенклатури | |
| Quality | Ні | string | Якість товару | |
| Price | Ні | decimal | Ціна товару | |
| Quantity | Ні | decimal | Кількість товару | |
Приклад текстового XML, що містить дані:
<?xml version="1.0" encoding="UTF-8"?>
<Table>
<Record BarCode="4008110271538" Name="Блокнот для нотаток" UnitOfMeasurement="Штуки" CharacteristicOfNomenclature=""
SeriesOfNomenclature="" Quality="" Price="25,30" Quantity="7"/>
<Record BarCode="2900001355643" Name="Фініки в банці" UnitOfMeasurement="Штуки" CharacteristicOfNomenclature=""
SeriesOfNomenclature="" Quality="Зелені" Price="95,50" Quantity="7"/>
</Table>
ТаблицаЗагрузки (DownloadTable)
Текст у форматі XML, що передається за допомогою параметра типу STRING.
| Секція | Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута |
|---|---|---|---|---|
| Table | Так | Таблиця завантаження | ||
|
Record |
BarCode | Так | string | Штрихкод номенклатури |
| Quantity | Так | decimal | Кількість товару | |
Приклад текстового XML, що містить дані:
<?xml version="1.0" encoding="UTF-8"?>
<Table>
<Record BarCode="4008110271538" Quantity="4"/>
<Record BarCode="2900001355643" Quantity="2"/>
</Table>
3.5. Вимоги до розробки драйверів для фіскальних реєстраторів
Під час роботи з фіскальними реєстраторами (АСПД, принтерами чеків для ЕНВД) підтримуються основні операції:
- Друк чеків внесення/вилучення грошових коштів;
- Друк чека ККМ;
- Друк звітів за зміну з погашенням (Z-звіт) і без погашення (X-звіт).
Алгоритм друку чека ККМ.
Під час формування чеків ККМ конфігурація надсилає команду на відкриття нового чека. Залежно від переданого параметра чек відкривається у фіскальному або нефіскальному режимі.
У режимі відкритого чека виконується друк фіскального або нефіскального рядка. Під час друку фіскального рядка розраховуються знижки. Якщо розраховане за формулою "Ценана*Количество – Сумма по строке" значення відрізняється від 0, у чеку друкується абсолютне значення знижки в грошовому вираженні. Якщо значення знижки менше нуля, замість слова "Скидка" виводиться слово «Наценка».
Підтримується анулювання раніше відкритого чека за допомогою параметра "АннулироватьОткрытыйЧек" методу "ОткрытьЧек".
Підтримується друк штрихкоду у відкритому чеку, якщо це дозволяє зробити модель пристрою.
Після закінчення друку рядків чека виконується розрахунок за чеком. Розрахунок за чеком може виконуватися кількома видами оплат. У разі відкритого фіскального чека відбувається друк підсумків і сум оплати.
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ОткрытьСмену (OpenShift) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Відкриває нову зміну. |
| ОткрытьЧек (OpenCheck) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Відкриває новий чек. |
| ФискальныйЧек (IsFiscalCheck) | BOOL [IN] | Ознака фіскального чека | |||
| ЧекВозврата (IsReturnCheck) |
BOOL [IN] |
Ознака чека повернення | |||
| АннулироватьОткрытыйЧек (CancelOpenedCheck) | BOOL [IN] | Ознака автоматичного анулювання раніше відкритого чека | |||
| НомерЧека (CheckNumber) | LONG [OUT] | Номер нового чека | |||
| НомерСмены (SessionNumber) | LONG [OUT] | Номер відкритої зміни | |||
| НапечататьФискСтроку (PrintFiscalString) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Друкує рядок товарної позиції з переданими реквізитами. |
| Наименование (Name) | STRING [IN] | Найменування товару | |||
| Количество (Quantity) | DOUBLE [IN] | Кількість товару | |||
| Цена (Price) | DOUBLE [IN] | Ціна одиниці товару (у форматі <Рубли,Копейки>) | |||
| Сумма (Amount) | DOUBLE [IN] | Кінцева сума за позицією чека (з урахуванням усіх знижок/націнок; у форматі <Рубли,Копейки>) | |||
| Отдел (Department) | LONG [IN] | Відділ, за яким ведеться продаж | |||
| НДС (Tax) | DOUBLE [IN] | ПДВ у відсотках (від 0 до 99,99) | |||
| НапечататьНефискСтроку (PrintNonFiscalString) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Виводить довільний текстовий рядок на чекову стрічку. |
| СтрокаТекста (TextString) | STRING [IN] | Рядок із довільним текстом | |||
| НапечататьШтрихКод (PrintBarCode) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Друк штрихкоду виконується з автоматичним розміром із вирівнюванням по центру чека. Тип штрихкоду може мати одне з таких значень: EAN8, EAN13, CODE39, QR. Якщо модель пристрою не підтримує друк штрихкоду, видається помилка. |
| ТипШтрихкода (BarcodeType) | STRING [IN] | Рядок, що визначає тип штрихкоду | |||
| Штрихкод (Barcode) | STRING [IN] | Значення штрихкоду | |||
| ЗакрытьЧек (CloseCheck) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Закриває чек. Сума всіх видів оплат повинна бути більшою за суму відкритого чека. |
| НаличнаяОплата (Cash) | DOUBLE [IN] | Сума готівкової оплати | |||
| ОплатаКартой (PayByCard) | DOUBLE [IN] | Сума оплати карткою | |||
| ОплатаКредитом (PayByCredit) | DOUBLE [IN] | Сума оплати кредитом | |||
| ОплатаСертификатом (PayByCertificate) | DOUBLE [IN] | Сума оплати сертифікатом | |||
| ОтменитьЧек (CancelCheck) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Скасовує раніше відкритий чек (потребує адміністративних привілеїв). |
| НапечататьЧекВнесенияВыемки (CashInOutcome) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Друкує на ФР чек внесення/вилучення (залежить від переданої суми). Сума >= 0 - внесення, Сума < 0 - вилучення. |
| Сумма (Amount) | DOUBLE [IN] | Сума внесення /вилучення у форматі <Рубли,Копейки> | |||
| НапечататьОтчетБезГашения (PrintXReport) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Друкує на ФР звіт за зміну без погашення (не закриває касову зміну) |
| НапечататьОтчетСГашением (PrintZReport) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Друкує на ФР звіт за зміну з погашенням (закриває касову зміну, потребує адміністративних привілеїв). |
| ОткрытьДенежныйЯщик (OpenCashDrawer) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Виконує відкриття грошової шухляди, підключеної до фіскального реєстратора. |
| ПолучитьШиринуСтроки (GetLineLength) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Отримати ширину рядка чека в символах. |
| ШиринаСтроки (LineLength) | LONG [OUT] | Ширина рядка в символахах | |||
3.6. Вимоги до розробки драйверів для принтерів чеків
Під час роботи з принтерами чеків підтримуються такі операції:
- Друк текстових чеків;
- Друк штрихкодів;
- Відкриття грошової шухляди.а.
Алгоритм друку чека.
Під час підключення пристрою командою "Подключить" драйвер ініціалізує пристрій друку, зокрема визначає кодування для друку чеків.
Під час формування чека конфігурація надсилає команду "ОткрытьДокумент" для відкриття нового документа на принтері чеків, і в циклі викликається команда друку текстового рядка "НапечататьСтроку" для построкового друку документа. Підтримується друк штрихкоду у відкритому чеку командою "НапечататьШтрихКод", якщо це підтримується моделлю пристрою.
Закриття документа здійснюється командою "ЗакрытьДокумент". За потреби й якщо це передбачено моделлю пристрою, надсилається команда відрізувачу.
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ОткрытьДокумент (OpenDocument) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Відкриває новий документ. Драйвер може перевірити доступність пристрою, наявність паперу та повернути False у разі неможливості друку. |
| НапечататьСтроку (PrintString) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Виводить текстовий рядок. |
| СтрокаТекста (TextString) | STRING [IN] | Рядок із довільним текстом | |||
| НапечататьШтрихКод (PrintBarCode) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Друк штрихкоду виконується з автоматичним розміром із вирівнюванням по центру чека. Тип штрихкоду може мати одне з таких значень: EAN8, EAN13, CODE39, QR. Якщо модель пристрою не підтримує друк штрихкоду, видається помилка. |
| ТипШтрихкода (BarcodeType) | STRING [IN] | Рядок, що визначає тип штрихкоду | |||
| Штрихкод (Barcode) | STRING [IN] | Значення штрихкоду | |||
| ЗакрытьДокумент (CloseDocument) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Закриває раніше відкритий документ. За потреби надсилається команда відрізувачу. |
| ОткрытьДенежныйЯщик (OpenCashDrawer) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Надсилає команду на відкриття грошової шухляди, підключеної до принтера чеків |
| ПолучитьШиринуСтроки (GetLineLength) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Отримати ширину рядка в символах |
| ШиринаСтроки (LineLength) | LONG [OUT] | Ширина рядка в символах | |||
3.7. Вимоги до розробки драйверів для принтерів етикеток
Робота з принтером друку етикеток полягає у вивантаженні в драйвер сформованого пакета даних про етикетки. Пакет формується засобами конфігурації та містить опис форматування шаблону етикетки й набору даних для формування етикеток. Драйвер друку етикеток повинен передбачати обробку сформованого масиву етикеток кількома ітераціями, шляхом послідовних викликів методу «ПечатьЭтикеток (PrintLabels)» з пакетами даних певного розміру (наприклад, по 100 етикеток) і з додатковим параметром, що визначає статус пакета ("first" - перший пакет, "regular" - черговий, "last" - останній пакет).
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ИнициализацияПринтера (InitializePrinter) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Первинна ініціалізація принтера етикеток (завантаження шрифтів, установлення параметрів друку, установлення потрібної кодової сторінки) |
| ПечатьЭтикеток (PrintLabels) | ИДУстройства (DeviceID) |
STRING [IN] |
Ідентифікатор пристрою |
BOOL |
Друк набору етикеток на принтері етикеток |
| ТаблицаЭтикеток (LabelsTable) XML таблиця |
STRING [IN] |
Таблиця етикеток | |||
| СтатусПакета (PackageStatus) |
STRING [IN] |
Статус пакета * * | |||
ТаблицаЭтикеток (LabelsTable)
Текст у форматі XML, що передається за допомогою параметра типу STRING.
Структуру передаваного пакета можна поділити на дві складові секції:
- Formatting - Секція опису форматування шаблону етикетки. Наявна одноразово й лише у першому пакеті та описує поля (елементи "Text", "Barcode", "Image" і "UserData"), що входять до шаблону етикетки, та їх форматування.
- Labels - Секція набору даних для формування етикеток. Секція наявна в кожному пакеті лише один раз і містить дані для заповнення кожної з етикеток, які необхідно надрукувати.
| Секція | Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута | |
|---|---|---|---|---|---|
|
Formatting |
Formatting |
Width |
Так | decimal | Ширина шаблону етикетки в міліметрах. |
|
Height |
Так | decimal | Висота шаблону етикетки в міліметрах. | ||
|
Text |
FieldName | Так | string | Унікальне ім’я поля в шаблоні етикетки. | |
| Left | Так | decimal | Позиція лівої межі поля по осі X (у міліметрах). | ||
| Top | Так | decimal | Позиція верхньої межі поля по осі Y (у міліметрах). | ||
| Width | Так | decimal | Ширина поля в міліметрах. | ||
| Height | Так | decimal | Висота поля в міліметрах. | ||
| Orientation | Ні | long |
Орієнтація вмісту поля. |
||
| FontName | Ні | string | Ім’я шрифту (не ім’я файла-шрифту). За замовчуванням попередньо встановлений на принтері шрифт. | ||
| FontSize | Так | long | Розмір шрифту в кеглях. | ||
| FontStyle | Ні | string | Стиль шрифту. Має одне або кілька значень через роздільник - пробіл: "Bold", "Italic", "Underline" і "StrikeOut". За замовчуванням "". | ||
| Border | Ні | string | Рядок, що визначає межі поля. Має одне або кілька значень через роздільник - пробіл: "Left", "Top", "Right" і "Bottom". За замовчуванням "". | ||
| BorderWidth | Ні | long | Товщина рамки в пікселях, за замовчуванням 1. | ||
| BorderStyle | Ні | string | Стиль рамки. Має одне зі значень: "Dotted", "Dashed", "Solid" або "Double". За замовчуванням "Solid". | ||
| Align | Ні | string | Горизонтальне вирівнювання тексту. Має одне зі значень: "Left", "Center" або "Right". За замовчуванням = "Left". | ||
| VAlign | Ні | string | Вертикальне вирівнювання тексту. Має одне зі значень: "Top", "Center" або "Bottom". За замовчуванням = "Top". | ||
| Multiline | Ні | boolean | Багаторядковість. За замовчуванням "false". | ||
| Static | Ні | boolean | Статичність (однакове значення для всіх екземплярів етикетки). За замовчуванням "false". | ||
| Value | За Static = "true" | string | У разі коли Static = "true", виступає в ролі загального значення. Інакше як значення за замовчуванням, тобто використовується, коли для Labels.Label.Record.Value не встановлено значення. | ||
|
Barcode |
FieldName | Так | string | Унікальне ім’я поля в шаблоні етикетки | |
| Type | Так | string | Тип штрихкоду. Має одне зі значень: "EAN8","EAN13", "EAN128", "Code39", "Code128", "Code16k", "Code93", "PDF417", "DataMatrix" , "QRCode" або "ITF14". | ||
| Left | Так | decimal | Позиція лівої межі поля по осі X (у міліметрах). | ||
| Top | Так | decimal | Позиція верхньої межі поля по осі Y (у міліметрах). | ||
| Width | Ні | decimal | Ширина поля в міліметрах. | ||
| Height | Так | decimal | Висота поля в міліметрах. | ||
| Orientation | Ні | long | Орієнтація вмісту поля. Має одне з таких значень: 0, 90, 180, 270. За замовчуванням 0. |
||
| PrintHRI | Ні | boolean | Прапорець наявності підпису у штрихкоді. За замовчуванням "true". | ||
| FontSize | За PrintHRI = "true" | long | Розмір шрифту в кеглях. | ||
| CheckSymbol | Ні | boolean | Наявність контрольного символу для тих типів штрихкодів, для яких можливе керування його наявністю. За замовчуванням "true". | ||
| Static | Ні | boolean | Статичність. За замовчуванням "false". | ||
| Value | За static = "true" | string | У разі коли Static = "true", виступає в ролі загального значення. Інакше як значення за замовчуванням, тобто використовується, коли для Labels.Label.Record.Value не встановлено значення. | ||
| Image | FieldName | Так | string | Унікальне ім’я поля в шаблоні етикетки. | |
| Left | Так | decimal | Позиція лівої межі поля по осі X (у міліметрах). | ||
| Top | Так | decimal | Позиція верхньої межі поля по осі Y (у міліметрах). | ||
| Width | Ні | decimal | Ширина поля в міліметрах. | ||
| Height | Ні | decimal | Висота поля в міліметрах. | ||
| Orientation | Ні | long | Орієнтація вмісту поля. Має одне з таких значень: 0, 90, 180, 270. За замовчуванням 0. |
||
| Border | Ні | string | Рядок, що визначає межі поля. Має одне або кілька значень через роздільник - пробіл: "Left", "Top", "Right" або "Bottom". За замовчуванням "". | ||
| BorderWidth | Ні | long | Товщина рамки в пікселях, за замовчуванням 1. | ||
| BorderStyle | Ні | string | Стиль рамки. Має одне зі значень: "Dotted", "Dashed", "Solid", "Double". За замовчуванням "Solid". | ||
| Static | Ні | boolean | Статичність. За замовчуванням "false". | ||
| Value | За Static = "true" | string | У разі коли Static = "true", виступає в ролі загального значення. Інакше як значення за замовчуванням, тобто використовується, коли для Labels.Label.Record.Value не встановлено значення. Кодується текстом у кодуванні Base64. | ||
|
UserData |
FieldName | Так | string | Унікальне ім’я поля в шаблоні етикетки. | |
| Static | Ні | boolean | Статичність. За замовчуванням "false". | ||
| Value | За Static = "true" | string | У разі коли Static = "true", виступає в ролі загального значення. Інакше як значення за замовчуванням, тобто використовується, коли для Labels.Label.Record.Value не встановлено значення. | ||
|
Labels |
Label | Quantity | Ні | long | Указує необхідну для етикетки кількість копій для друку. За замовчуванням 1. |
| Record | FieldName | Так | string | Унікальне ім’я поля в шаблоні етикетки. | |
| Value | За Formatting.Static = "false" | string | Значення поля в шаблоні етикетки. Для елемента "Image" зображення кодується текстом у кодуванні Base64. |
Приклад текстового XML, що містить дані:
<?xml version="1.0"?>
<Data>
<Formatting Width = "60" Height="40">
<Text FieldName="Найменування" Left="1" Top="1" Width="55" Height="10" FontName="Tahoma" FontSize="8" FontStyle="Italic"/>
<Text FieldName="Ціна" Left="1" Top="11" Width="55" Height="10" FontName="Tahoma" FontSize="8" FontStyle="Bold Italic" Border="Left Top Right Bottom"/>
<Barcode FieldName="Штрихкод" Type="EAN13" Left="1" Top="22" Height="10" PrintHRI="true" FontSize="8"/>
</Formatting>
<Labels>
<Label Quantity="2">
<Record FieldName="Найменування" Value="Блокнот для нотаток"/>
<Record FieldName="Ціна" Value="43,5"/>
<Record FieldName="Штрихкод" Value="4008110271538"/>
</Label>
<Label Quantity="3">
<Record FieldName="Найменування" Value="Яблука антонівка в банці"/>
<Record FieldName="Ціна" Value="78,5"/>
<Record FieldName="Штрихкод" Value="2900001355679"/>
</Label>
</Labels>
</Data>
3.8. Вимоги до розробки драйверів пристроїв введення (сканери штрихкоду, зчитувачі магнітних карток тощо)
Ці пристрої реалізують функцію автоматичного зчитування закодованої різними способами інформації та асинхронного передавання її до конфігурації "1С:Підприємства". Драйвери пристроїв такого типу не передбачають специфічних для обладнання методів, які можна викликати з конфігурацій.
Робота з драйвером будується так:
- Під час ініціалізації об’єкта компоненти йому передається вказівник на інтерфейс "1С:Підприємства", за допомогою якого можна викликати метод:
HRESULT ExternalEvent(BSTR bstrWho, BSTR bstrWhat, BSTR bstrData) - Під час кожного успішного зчитування коду сканером або зчитувачем драйвер повинен викликати метод HRESULT ExternalEvent(BSTR bstrWho, BSTR bstrWhat, BSTR bstrData).
- Передані дані розміщуються в черзі повідомлень. Повідомлення з черги обробляються лише після обробки всіх системних повідомлень "1С:Підприємства". У разі переповнення черги отримані повідомлення ігноруються.
Опис методів, доступних для асинхронного виклику з драйвера*
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ExternalEvent | bstrWho | BSTR [IN] | Унікальний ідентифікатор підключеного пристрою ** |
HRESULT |
Поміщає дані, отримані від сканера/зчитувача, до черги повідомлень |
| bstrWhat | BSTR [IN] | Тип повідомлення/тип даних *** | |||
| bstrData | BSTR [IN] | Зчитані пристроєм дані | |||
| SetEventBufferDepth | lDepth | BSTR [IN] | Максимальна кількість повідомлень у черзі |
HRESULT |
Установлює довжину черги повідомлень |
3.9. Вимоги до розробки драйверів для еквайрингових терміналів
Під час роботи з еквайринговими системами підтримуються такі операції:
- Оплата карткою
- Скасування платежу за карткою
- Повернення платежу за карткою
- Блокування суми на рахунку картки
- Списання заблокованої суми з рахунку картки
- Скасування блокування суми на рахунку картки
- Аварійне скасування операції
- Отримання підсумків дня за картками
УВАГА: За вимогами банку еквайринговий термінал може не надавати повний номер картки, у такому разі частина цифр номера картки замінюється зірочками.
Оплата карткою
За необхідності оплатити покупку платіжною карткою Система викликає метод "ОплатитьПлатежнойКартой", передаючи у вхідному параметрі суму до оплати для списання з картки та номер зчитаної картки. Якщо зчитування картки виконуватиметься на терміналі (PIN-Pad’e) банку, то в параметрі номера зчитаної картки передається порожній рядок. Драйвер у відповідь повертає результат виконання функції, код RRN, код авторизації та текст сліп-чека. Текст сліп-чека може бути самостійно надрукований терміналом на вбудованому принтері або надрукований на ФР (визначається методом ПечатьКвитанцийНаТерминале). Після виконання функції в параметрі номера зчитаної картки повертається номер картки, прочитаної на терміналі (PIN-Pad’e) банку.
Скасування платежу за карткою
Якщо відбувається скасування платежу, то Система викликає метод "ОтменитьПлатежПоПлатежнойКарте", передаючи у вхідних параметрах суму, яку було зазначено для списання з картки, номер зчитаної картки, код RRN операції, за якою виконується скасування, і код авторизації. Драйвер у відповідь повертає результат виконання функції. Якщо зчитування картки виконуватиметься на терміналі (PIN-Pad’e) банку, то в параметрі номера зчитаної картки передається порожній рядок. Після виконання функції в параметрі номера зчитаної картки повертається номер картки, прочитаної на терміналі (PIN-Pad’e) банку.
Повернення платежу за карткою
Під час повернення платежу Система викликає метод "ВернутьПлатежПоПлатежнойКарте", передаючи у вхідному параметрі суму до повернення на картку, номер зчитаної картки, код RRN операції, за якою виконується повернення, і код авторизації. Драйвер у відповідь повертає результат виконання функції, а до вихідних параметрів записує код RRN, код авторизації. Якщо зчитування картки виконуватиметься на терміналі (PIN-Pad’e) банку, то в параметрі номера зчитаної картки передається порожній рядок. Після виконання функції в параметрі номера зчитаної картки повертається номер картки, прочитаної на терміналі (PIN-Pad’e) банку.
Блокування суми на рахунку картки
За необхідності заблокувати суму на рахунку платіжної картки Система викликає метод "ПреавторизацияПоПлатежнойКарте", передаючи у вхідному параметрі суму для блокування та номер зчитаної картки. Якщо зчитування картки виконуватиметься на терміналі (PIN-Pad’e) банку, то в параметрі номера зчитаної картки передається порожній рядок. Драйвер у відповідь повертає результат виконання функції, код RRN, код авторизації та текст сліп-чека. Текст сліп-чека може бути самостійно надрукований терміналом на вбудованому принтері або надрукований на ФР (визначається методом ПечатьКвитанцийНаТерминале). Після виконання функції в параметрі номера зчитаної картки повертається номер картки, прочитаної на терміналі (PIN-Pad’e) банку.
Списання заблокованої суми з рахунку картки
За необхідності списання заблокованої суми з рахунку платіжної картки Система викликає метод "ЗавершитьПреавторизациюПоПлатежнойКарте", передаючи у вхідному параметрі суму для списання з картки, номер зчитаної картки, код RRN операції блокування та код авторизації. Якщо зчитування картки виконуватиметься на терміналі (PIN-Pad’e) банку, то в параметрі номера зчитаної картки передається порожній рядок. Драйвер у відповідь повертає результат виконання функції, код RRN, код авторизації та текст сліп-чека. Текст сліп-чека може бути самостійно надрукований терміналом на вбудованому принтері або надрукований на ФР (визначається методом ПечатьКвитанцийНаТерминале). Після виконання функції в параметрі номера зчитаної картки повертається номер картки, прочитаної на терміналі (PIN-Pad’e) банку.
Скасування блокування суми на рахунку картки
Для скасування блокування суми на рахунку платіжної картки Система викликає метод "ОтменитьПреавторизациюПоПлатежнойКарте", передаючи у вхідному параметрі суму для списання з картки, номер зчитаної картки, код RRN операції блокування та код авторизації. Якщо зчитування картки виконуватиметься на терміналі (PIN-Pad’e) банку, то в параметрі номера зчитаної картки передається порожній рядок. Драйвер у відповідь повертає результат виконання функції, код RRN, код авторизації та текст сліп-чека. Текст сліп-чека може бути самостійно надрукований терміналом на вбудованому принтері або надрукований на ФР (визначається методом ПечатьКвитанцийНаТерминале). Після виконання функції в параметрі номера зчитаної картки повертається номер картки, прочитаної на терміналі (PIN-Pad’e) банку.
Аварійне скасування операції
Якщо операція за платіжною карткою пройшла успішно і сліп-чек повинен бути надрукований на ФР (визначається методом ПечатьКвитанцийНаТерминале), але виникла помилка друку, операція за карткою повинна бути аварійно скасована.
Отримання підсумків дня за картками
Для отримання тексту звіту Система викликає метод "ИтогиДняПоКартам". Драйвер повертає результат виконання функції та текст звіту.
| Опис методів | |||||
|---|---|---|---|---|---|
| Назва (alias) | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| ОплатитьПлатежнойКартой (PayByPaymentCard) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Метод виконує авторизацію оплати за карткою |
| НомерКарты (CardNumber) | STRING [IN/OUT] | Номер картки / Дані картки* | |||
| Сумма (Amount) | DOUBLE [IN] | Сума операції за карткою | |||
| НомерЧека (ReceiptNumber) | STRING [IN/OUT] | Номер чека | |||
| КодRRN (RRNCode) | STRING [OUT] | Унікальний код транзакції RRN | |||
| КодАвторизации (AuthorizationCode) | STRING [OUT] | Код авторизації транзакції | |||
| ТекстКвитанции (Slip) | STRING [OUT] | Текст квитанції, сформований Еквайринговим ПЗ ** | |||
| ВернутьПлатежПоПлатежнойКарте (ReturnPaymentByPaymentCard) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Метод виконує повернення платежу за карткою |
| НомерКарты (CardNumber) | STRING [IN/OUT] | Номер картки / Дані картки* | |||
| Сумма (Amount) | DOUBLE [IN] | Сума операції за карткою | |||
| НомерЧека (ReceiptNumber) | STRING [IN/OUT] | Номер чека | |||
| КодRRN (RRNCode) | STRING [IN/OUT] | Унікальний код транзакції RRN | |||
| КодАвторизации (AuthorizationCode) | STRING [IN/OUT] | Код авторизації транзакції | |||
| ТекстКвитанции (Slip) | STRING [OUT] | Текст квитанції, сформований Еквайринговим ПЗ ** | |||
| ОтменитьПлатежПоПлатежнойКарте (CancelPaymentByPaymentCard) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Метод виконує скасування платежу за карткою |
| НомерКарты (CardNumber) | STRING [IN/OUT] | Номер картки / Дані картки* | |||
| Сумма (Amount) | DOUBLE [IN] | Сума операції за карткою | |||
| НомерЧека (ReceiptNumber) | STRING [IN/OUT] | Номер чека | |||
| КодRRN (RRNCode) | STRING [IN/OUT] | Унікальний код транзакції RRN | |||
| КодАвторизации (AuthorizationCode) | STRING [IN/OUT] | Код авторизації транзакції | |||
| ТекстКвитанции (Slip) | STRING [OUT] | Текст квитанції, сформований Еквайринговим ПЗ ** | |||
| ПреавторизацияПоПлатежнойКарте (AuthorisationByPaymentCard) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Метод виконує преавторизацію – блокування суми на рахунку картки |
| НомерКарты (CardNumber) | STRING [IN/OUT] | Номер картки / Дані картки* | |||
| Сумма (Amount) | DOUBLE [IN] | Сума операції за карткою | |||
| НомерЧека (ReceiptNumber) | STRING [IN/OUT] | Номер чека | |||
| КодRRN (RRNCode) | STRING [OUT] | Унікальний код транзакції RRN | |||
| КодАвторизации (AuthorizationCode) | STRING [OUT] | Код авторизації транзакції | |||
| ТекстКвитанции (Slip) | STRING [OUT] | Текст квитанції, сформований Еквайринговим ПЗ ** | |||
| ЗавершитьПреавторизациюПоПлатежнойКарте (AuthConfirmationByPaymentCard) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Метод завершує преавторизацію – списує суму з рахунку картки |
| НомерКарты (CardNumber) | STRING [IN/OUT] | Номер картки / Дані картки* | |||
| Сумма (Amount) | DOUBLE [IN] | Сума операції за карткою | |||
| НомерЧека (ReceiptNumber) | STRING [IN/OUT] | Номер чека | |||
| КодRRN (RRNCode) | STRING [IN] | Унікальний код транзакції RRN | |||
| КодАвторизации (AuthorizationCode) | STRING [IN] | Код авторизації транзакції | |||
| ТекстКвитанции (Slip) | STRING [OUT] | Текст квитанції, сформований Еквайринговим ПЗ ** | |||
| ОтменитьПреавторизациюПоПлатежнойКарте (CancelAuthorisationByPaymentCard) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Метод скасовує преавторизацію – розблоковує суму на рахунку картки |
| НомерКарты (CardNumber) | STRING [IN/OUT] | Номер картки / Дані картки* | |||
| Сумма (Amount) | DOUBLE [IN] | Сума операції за карткою | |||
| НомерЧека (ReceiptNumber) | STRING [IN/OUT] | Номер чека | |||
| КодRRN (RRNCode) | STRING [IN] | Унікальний код транзакції RRN | |||
| КодАвторизации (AuthorizationCode) | STRING [IN] | Код авторизації транзакції | |||
| ТекстКвитанции (Slip) | STRING [OUT] | Текст квитанції, сформований Еквайринговим ПЗ ** | |||
| АварийнаяОтменаОперации (EmergencyReversal) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Метод скасовує останню транзакцію |
| ИтогиДняПоКартам (Settlement) | ИДУстройства (DeviceID) | STRING [IN] | Ідентифікатор пристрою | BOOL | Виконується звірка підсумків дня |
| ТекстКвитанции (Slip) | STRING [OUT] | Текст квитанції, сформований Еквайринговим ПЗ ** | |||
| ПечатьКвитанцийНаТерминале (PrintSlipOnTerminal) |
- |
- |
- |
BOOL |
Повертає, чи буде термінал самостійно друкувати квитанції на своєму принтері для операцій |
4. Підключення драйверів, розроблених за стандартом «1С: Сумісно», до конфігурації БПО
У конфігурації БПО починаючи з версії 1.1.1 додано можливість підключення нових драйверів, розроблених за стандартом «1С: Сумісно».
Надається можливість:
- Завантаження до інформаційної бази файла однокомпонентного драйвера або інтеграційної бібліотеки, що постачається у вигляді архіву зовнішньої компоненти;
- Завантаження до інформаційної бази файла драйвера, що постачається у вигляді дистрибутива постачальника *;
- Можливість використання драйвера, попередньо встановленого на локальних комп’ютерах *.
4.1. Підготовка драйвера до завантаження в конфігурацію БПО
Підготовка однокомпонентного драйвера або інтеграційної бібліотеки, що постачаються у вигляді архіву зовнішньої компоненти
Підготовка драйвера, що постачається у вигляді архіву зовнішньої компоненти, для завантаження в конфігурацію БПО здійснюється згідно з розділом "Підготовка зовнішніх компонент для завантаження в конфігурацію" документа "Технологія створення зовнішніх компонент". Крім того, в архіві повинен бути XML файл з ім’ям "INFO.XML", що містить інформацію для завантаження драйвера.
XML файл повинен мати таку структуру:
| Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута |
|---|---|---|---|
| progid | Так | string | Ідентифікатор об’єкта драйвера. |
| type | Так | string | Тип драйвера. Має одне зі значень: “СканерШтрихкода“, “СчитывательМагнитныхКарт“, “ФискальныйРегистратор“, “ПринтерЧеков“, “ПринтерЭтикеток“, “ДисплейПокупателя“, “ТерминалСбораДанных“, “ЭквайринговыйТерминал“, “ЭлектронныеВесы“, “ВесыСПечатьюЭтикеток“. |
| name | Так | string | Найменування драйвера, що відображається користувачеві. |
| version | Так | string | Постачана версія драйвера. |
Приклад файла "INFO.XML", що описує інформацію про драйвер:
Копіювати до буфера обміну
<?xml version="1.0" encoding="UTF-8"?>
<drivers>
<component progid="AddIn.EmulatorFP1C" type="ФискальныйРегистратор" name="1C: Емулятор фіскального реєстратора" version="1.0.21.1"/>
</drivers>
Підготовка драйвера, що постачається у вигляді дистрибутива
Для підготовки драйвера необхідно упакувати дистрибутив інсталятора в ZIP архів. Виконуваний файл дистрибутива повинен мати ім’я "setup.exe". Крім виконуваного файла допускається наявність додаткових файлів, необхідних для роботи інсталятора дистрибутива. Також в архіві повинен бути XML-файл з ім’ям "INFO.XML", що містить інформацію, необхідну для завантаження драйвера. Структура цього файла така сама, як і структура "INFO.XML" попереднього розділу.
4.2. Завантаження підготовленого драйвера в конфігурацію БПО
Для завантаження підготовленого драйвера необхідно перейти до розділу "Підключене обладнання/Драйвери обладнання".
У формі списку драйверів натиснути "Додати новий драйвер із файла" і у відкритому діалозі вибору файла вибрати підготовлений для завантаження файл драйвера.
Після відкриття форми завантажуваного драйвера необхідно перевірити правильність заповнення інформації про драйвер (поля: Тип обладнання, Найменування, Ідентифікатор об’єкта) і натиснути кнопку "Записати й закрити".

4.3. Використання драйвера, попередньо встановленого на локальному комп’ютері
Для підключення драйвера, попередньо встановленого на локальному комп’ютері, необхідно перейти до розділу "Підключене обладнання/Драйвери обладнання".
У формі списку драйверів натиснути "Створити", і у відкритій формі створюваного драйвера ввести необхідні параметри драйвера в поля: Тип обладнання, Найменування, Ідентифікатор об’єкта.
Після заповнення необхідних даних натиснути кнопку "Записати й закрити". Ця можливість передбачена лише для драйверів, розроблених за COM технологією.
У цьому режимі не підтримується робота у WEB клієнті та Linux клієнті.
Підключення програмно-апаратних POS-систем у режимі "OFFLINE" за допомогою файлового обміну
Робота з програмно-апаратними POS-системами (активними системними контрольно-касовими машинами) у режимі "OFFLINE" полягає у файловому обміні інформацією. До POS-системи з конфігурації вивантажується список товарів і цін, наприкінці робочого дня до конфігурації завантажуються дані про продажі, зареєстровані POS-системою протягом зміни.
Таблиця товарів формується на основі даних інформаційної бази засобами конфігурації. Формування XML файла з даними виконується за допомогою модуля "1С:ККМ-Offline", що входить до складу БПО, ім’я файла та шлях розміщення задаються користувацькими налаштуваннями.
За великого обсягу вивантажуваних даних передбачено поділ на пакети даних. Кожен пакет даних розміщується в окремому файлі. Ім’я файла формується за маскою із зазначенням номера файла відповідно до стану спеціального лічильника. Наприклад, "PriceList001.xml", "PriceList002.xml" тощо. Маска імені файла та максимальна кількість товарів у пакеті задаються користувацькими налаштуваннями. Процедура завантаження даних у POS-систему повинна передбачити обробку набору файлів.
Завантаження звіту про продані товари з файла виконується одноразово, без поділу на пакети. Форматом файла завантаження передбачено можливість розміщення в одному файлі кількох звітів про продажі в розрізі касових змін. Ім’я файла звітів про продажі зазначається в користувацьких налаштуваннях.
Успішно завантажені файли позначаються спеціальним атрибутом - "Обработан(Processed)"
Список команд, підтримуваних модулем "1С:ККМ-Offline" бібліотеки підключеного обладнання
| Операція | Дані | Опис операції |
|---|---|---|
| Выгрузить настройки | Настройки (Settings) XML таблиця |
Вивантажує таблицю налаштувань у ККМ |
| Выгрузить таблицу товаров | ПрайсЛист (PriceList) XML таблиця |
Вивантажує прайс-лист товарів у ККМ |
| Загрузить отчет | ОтчетОПродажах (SalesReport) XML таблиця |
Завантажує інформацію про продані товари з ККМ у вигляді масиву звітів про продажі, у розрізі касових змін. |
| Отчет загружен | - | Драйверу встановлюється прапорець у «Істина», якщо звіт було успішно оброблено, та у «Хибність» у протилежному разі. |
Настройки (Settings)
Структура XML.
| Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута | |
|---|---|---|---|---|
| Settings |
Так |
Секція налаштувань | ||
| CompanyName | Так | string | Найменування організації | |
| Taxation | Так | string | Система оподаткування організації. Значення "Общая" або "Упрощенная". | |
| VATIN | Так | string | ІПН організації | |
| UseDiscounts | Так | boolean | Використання знижок у ККМ | |
| UseBankingCard | Так | boolean | Використання платіжних карток під час оплати | |
| Processed | Ні | datetime | Ознака обробки файла | |
|
RecordSorts |
Ні | Види оплати під час оплати платіжними картками | ||
| RecordSort | Code | Так | string | Код, ідентифікатор виду оплати |
| PaymentType | Так | decimal | Тип оплати, "1"–оплата платіжною карткою | |
| Name | Так | string | Найменування виду оплати під час оплати платіжними картками | |
Приклад вмісту файла XML із даними:
Копіювати до буфера обміну
<?xml version="1.0" encoding="UTF-8"?>
<Settings>
<CompanyName>Ромашка</CompanyName>
<Taxation>Общая</Taxation>
<UseDiscounts>true</UseDiscounts>
<UseBankingCard>true</UseBankingCard>
<VATIN>123456789012</VATIN>
<PaymentSorts>
<RecordSort Code="100001" PaymentType="1" Name="ПРО100"/>
<RecordSort Code="100002" PaymentType="1" Name="UniPay"/>
</PaymentSorts>
</Settings>
ТаблицаТоваров (GoodsTable)
Таблиця товарів має деревоподібну структуру. Товар може мати набір характеристик і набір упаковок.
Упаковки можуть бути описані як у секції товарів, так і в секції характеристик, якщо облік товарів ведеться в розрізі характеристик.
Атрибути "Код" і "Штрихкод" зазначаються для останнього рівня ієрархії.
Наприклад, для товару "Майка дит." виду "Одяг" необхідно вводити характеристику "Розмір". Товар може продаватися як упаковкою по 3 шт., так і поштучно.
У цьому разі формуються записи в усіх трьох секціях, код присвоюється записам: "Майка дит."+"р-р. 22" у секції "Характеристики"
і для "Майка дит."+"р-р. 22"+"Уп." у секції "Упаковки".
Див. приклад файла нижче.

Структура XML.
| Секція | Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута | |
|---|---|---|---|---|---|
| PriceList | FullLoad | Так | boolean | Ознака вивантаження "Часткове/Повне". За повного вивантаження передбачається повне очищення товарів у суміжній POS-системі. | |
| Processed | Ні | datetime | Ознака обробки файла | ||
| Groups | Ні | Таблиця груп товарів | |||
| RecordGroup | Code | Так | string | Код, ідентифікатор групи | |
| Name | Так | string | Найменування | ||
| GroupCode | Так | string | Код групи товарів, у яку вкладено поточну групу | ||
| Goods | Ні | Таблиця товарів | |||
| RecordGood | Code | <Визначається> | string | Код, ідентифікатор товарної позиції. Обов’язковий, якщо товар не має характеристик і упаковок. |
|
| BarCode | <Визначається> | string | Штрихкоди товару, роздільник - пробіл | ||
| GroupCode | Ні | string | Код групи товарів | ||
| Name | Так | string | Найменування | ||
| Article | Ні | string | Артикул товару | ||
| UnitOfMeasurement | Ні | string | Базова одиниця виміру товару | ||
| Tax | Ні | decimal | Ставка ПДВ | ||
| IsWeightGoods | Ні | boolean | Ваговий товар | ||
| Price | Ні | decimal | Ціна товару | ||
| Service | Ні | boolean | Послуга | ||
| Remainder | Ні | decimal | Залишок товару | ||
| HavingCharacteristic | Ні | boolean | Наявність характеристик у товару | ||
| Characteristic | Ні | RecordCharacteristic | Список характеристик | ||
| HavingPacking | Ні | boolean | Наявність упаковок у товару. Прапорець не встановлюється, якщо товар має характеристики. |
||
| Packing | Ні | RecordPacking | Список упаковок | ||
Секція RecordCharacteristic – характеристики товарів.
| Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута |
|---|---|---|---|
| Code | <Визначається> | string | Код, ідентифікатор товарної позиції. Обов’язковий, якщо характеристика не має вкладених упаковок. Так - якщо HavingPacking="false" і Ні якщо HavingPacking="true". |
| BarCode | <Визначається> | string | Штрихкоди характеристики, роздільник - пробіл |
| Name | Так | string | Найменування |
| Price | Ні | decimal | Ціна характеристики |
| Remainder | Так | decimal | Залишок характеристики |
| HavingPacking | Ні | boolean | Наявність упаковок у характеристики |
| Packing | Ні | RecordPacking | Список упаковок |
Секція RecordPacking – упаковки товарів.
| Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута |
|---|---|---|---|
| Code | Так | string | Код, ідентифікатор товарної позиції. |
| Name | Так | string | Найменування |
| BarCode | Ні | string | Штрихкоди упаковки, роздільник - пробіл |
| Price | Ні | decimal | Ціна за упаковку |
| Remainder | Так | decimal | Залишок упаковки |
| Coefficient | Так | decimal | Кількість товару в упаковці |
Приклад вмісту файла XML із даними:
<?xml version="1.0" encoding="UTF-8"?>
<PriceList FullLoad="true">
<Groups>
<RecordGroup Code="1001" Name="Упаковка" GroupCode=""/>
<RecordGroup Code="1002" Name="Майки" GroupCode=""/>
</Groups>
<Goods>
<RecordGood Code="2001" GroupCode="1001" Name="Пакет" Article="тр-1" UnitOfMeasurement="шт" Tax="18" IsWeightGoods="false"
BarCode="2900001585861" Price="10.00" Service="false" Remainder="512" HavingCharacteristic="false" HavingPacking="false"/>
<RecordGood GroupCode="1002" Name="Майка дит." Article="М-2" UnitOfMeasurement="шт" Tax="10"
IsWeightGoods="false" Service="false" HavingCharacteristic="true" HavingPacking="false">
<Characteristic>
<RecordCharacteristic Code="2002" Name="р-р. 22" BarCode="2900001585862" Price="115.50" Remainder="2" HavingPacking="false"/>
<RecordCharacteristic Name="р-р. 22" HavingPacking="true">
<Packing>
<RecordPacking Code="2003" Name="Уп." Coefficient="3" BarCode="2900001585863" Price="346.50" Remainder="7"/>
</Packing>
</RecordCharacteristic>
</Characteristic>
</RecordGood>
</Goods>
</PriceList>
ОтчетОПродажах (SalesReport)
Структура XML.
| Секція | Найменування атрибута | Обов’язкова наявність у структурі | Типи даних | Опис атрибута | |
|---|---|---|---|---|---|
| SalesReports |
Так |
Звіти про продажі | |||
| Processed | Ні | datetime | Ознака обробки файла | ||
| Report | SessionNumber | Так | string | Номер зміни | |
| DateOpen | Ні | datetime | Дата відкриття зміни | ||
| DateClose | Ні | datetime | Дата закриття зміни | ||
| Goods | Так | Список проданих товарів | |||
| RecordGood | Code | Так | string | Код, ідентифікатор товарної позиції | |
| Quantity | Так | decimal | Кількість проданого товару | ||
| Price | Так | decimal | Ціна, за якою продано товар (без урахування знижок і націнок) | ||
| Amount | Так | decimal | Сума (з урахуванням знижки) | ||
| Payments | Так | Список оплат | |||
| RecordPayment | PaymentType | Так | string | Код типу оплати, 0 – готівка, 1 - безготівкові | |
| Amount | Так | decimal | Сума | ||
| CodePaymentSort | Так | string | Види оплати під час оплати платіжними картками | ||
Приклад вмісту файла XML із даними:
<?xml version="1.0" encoding="UTF-8"?>
<SalesReports Processed="2015-02-06T14:13:10">
<Report DateClose="2015-02-04T14:55:55" DateOpen="2015-02-04T14:54:56" SessionNumber="1">
<Goods>
<RecordGood Code="100000" Quantity="2" Price="1000" Amount="2000"/>
<RecordGood Code="100021" Quantity="2" Price="400" Amount="800"/>
<RecordGood Code="100024" Quantity="2" Price="7850" Amount="15700"/>
<RecordGood Code="100020" Quantity="1" Price="200" Amount="200"/>
<RecordGood Code="100019" Quantity="1" Price="600" Amount="600"/>
<RecordGood Code="100023" Quantity="3" Price="9850" Amount="29550"/>
<RecordGood Code="100001" Quantity="1" Price="25000" Amount="25000"/>
</Goods>
<Payments>
<RecordPayment PaymentType="0" Amount="53850" CodePaymentSort=""/>
<RecordPayment PaymentType="1" Amount="20000" CodePaymentSort="10001"/>
</Payments>
</Report>
</SalesReports>
Підключення програмно-апаратних комплексів за допомогою Веб-сервісу обладнання
Бібліотека підтримує роботу сторонніх програмно-апаратних комплексів різного призначення за допомогою "Веб-сервісу обладнання". Для здійснення обміну необхідно опублікувати Веб-сервіс "EquipmentService" що входить до складу бібліотеки. Веб-сервіс обробляє запити на отримання й обробку даних від програмно-апаратних комплексів і повертає стандартний результат до зовнішнього програмно-апаратного комплексу.
| Опис методів | |||||
|---|---|---|---|---|---|
| Ім’я методу | Параметри | Тип значення, що повертається | Опис методу | ||
| Ім’я | Тип | Опис | |||
| Connect | DeviceID | string | Ідентифікатор пристрою |
Response |
Перевірка реєстрації обладнання в ІБ за унікальним ідентифікатором обладнання |
| GetDocTypes | DeviceID | string | Ідентифікатор пристрою |
Response |
Отримання типів документів, що підтримуються в системі |
| GetSettings | - | - | - |
Settings |
Отримання налаштувань для обладнання. Повертається структура в XML, відповідно до опису секції settings файлового обміну з ККМ-Offline |
| GetPriceList | DeviceID | string | Ідентифікатор пристрою |
PriceList |
Отримання списку товарів і цін для обладнання. Повертається структура в XML, відповідно до опису секції PriceList файлового обміну з ККМ-Offline |
| PostDocs | DeviceID | string | Ідентифікатор пристрою |
Response |
Передавання від пристрою документа до цільової конфігурації. Передається структура в XML, відповідно до опису секції SalesReports файлового обміну з ККМ-Offline |
| DocType | string | Тип документа | |||
| Document | SalesReport | Зчитані пристроєм дані | |||