Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2Работа с торговым оборудова…Общее

1С:Предприятие 8.2 /
Работа с торговым оборудованием /
Общее

Оглавление

Внедрение торгового оборудования в объекты конфигурации.

1. Общие методы, обязательные для всех объектов

2. Событийные методы

2.1. Общий метод получения оповещения о событии.

2.2. Сканер штрихкода

2.3. Считыватель магнитных карт

2.4. ККМ Онлайн

2.5 Считыватель RFID меток

3. Специфичные методы управления оборудованием

3.1. Фискальный регистратор

3.2. Терминал сбора данных

3.3. Дисплей покупателя

3.4. Электронные весы

3.5. Весы с печатью этикеток

3.6. ККМ Оффлайн

3.7. Эквайринговая система

3.8. Считыватель RFID меток

 

Обновлено: 12.02.2009

Для упрощения взаимодействия с торговым оборудованием в конфигурациях , которые поддерживают работу с торговым оборудованием ("Управление торговлей ", " Управление производственным предприятием ", "Розница", " Бухгалтерия предприятия " и " Бухгалтерия для бюджетных учреждений "), реализован механизм взаимодействия с торговым оборудованием ( дополнительно можно ознакомиться с демонстрационной конфигурацией "Тестирование подключения торгового оборудования", реализующей механизм взаимодействия С ТО). Для встраивания поддержки торгового оборудования в объекты конфигурации необходимо обеспечить вызов и реализацию описанных ниже методов механизма ТО. По способу оповещения оборудование условно можно разделить на 2 категории: оборудование без оповещения о событиях и с оповещением (событийные).

В группу оборудования без оповещения о событиях от устройства входят фискальные регистраторы , терминалы сбора данных, дисплеи покупателя , электронные весы, весы с печатью этикеток, ККМ Оффлайн и эквайринговые системы. Для их поддержки достаточно воспользоваться общими методами, обязательными для всех объектов, а затем можно вызывать функции, специфичные для реализуемого вида ТО.

В группу оборудования с оповещением о событиях от устройства (событийное оборудование) входят сканеры штрихкодов, считыватели магнитных карт, ККМ Онлайн и считыватели RFID меток. Для их поддержки необходимо воспользоваться общими методами, а также реализовать дополнительные событийные методы, специфичные для каждого вида ТО. Некоторые виды оборудования из данной группы позволяют не только получать оповещение о событиях, но посылать управляющие команды. Для этого механизм предоставляет дополнительные методы, специфичные для каждого вида ТО.

1. Общие методы, обязательные для всех объектов

Для использования торгового оборудования в объектах конфигурации необходимо вызвать следующие функции (обычно при открытии и закрытии формы):

ПодключитьКлиента() – подключает все настроенное торговое оборудование в соответствии с видами ТО, поддерживаемыми данным документом (список поддерживаемых видов ТО указывается в функции "ПоддерживаетсяВидТО").

ОтключитьКлиента() – отключает подключенное ранее оборудование.

Внимание!
Если работа клиента досрочно завершается, то в обязательном порядке должна быть вызвана функция "ОтключитьКлиента"

Также необходимо реализовать функцию:

ПоддерживаетсяВидТО() – проверяет поддержку данной формой переданного вида ТО

Пример кода:

Процедура ПриОткрытии()
    ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
 КонецПроцедуры 

Процедура ПриЗакрытии()
    ПолучитьСерверТО().ОтключитьКлиента(ЭтаФорма);
КонецПроцедуры

Функция ПоддерживаетсяВидТО(Вид) Экспорт
    Результат = Ложь;
    Если Вид = Перечисления.ВидыТорговогоОборудования.СканерШтрихКода
     Или Вид = Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор Тогда
        Результат = Истина;
    КонецЕсли;
    
    Возврат Результат; 
 КонецФункции 

2. Событийные методы

В разделе описаны событийные методы для каждого вида ТО, поддерживающего оповещение о событиях от устройства.

2.1. Общий метод получения оповещения о событии.

ВнешнееСобытие() – вызывается при наступлении внешнего события в системе.

Пример кода:

Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если Не ВводДоступен() Тогда
        Возврат; 
    КонецЕсли; 

    ПолучитьСерверТО().ОбработатьВнешнееСобытие(Событие, Данные, ЭтаФорма); 
КонецПроцедуры

2.2. Сканер штрихкода

Для использования сканера штрихкода в документах необходимо дополнительно реализовать следующие функции:

СШКНоменклатура() – возникает, если обнаруженный ШК принадлежит номенклатуре .

СШКСерийныйНомер() – возникает, если обнаруженный ШК принадлежит серийному номеру.

СШКИнформационнаяКарта() – возникает, если обнаруженный ШК принадлежит информационной карте.

СШКНеизвестныйКод() – возникает, если обнаруженный ШК не зарегистрирован в базе.

СШКОшибка() – возникает, если при обработке ШК возникла ошибка.

Все перечисленные функции обязательны к реализации для данного вида ТО.

Пример кода:

Функция СШКНоменклатура(Номенклатура, Характеристика, Серия, Качество, Единица, Количество, СШК) Экспорт
    Результат = Истина;
    Возврат Результат; 
КонецФункции

Функция СШКСерийныйНомер(Номер, СШК) Экспорт
    Результат = Истина;
    Возврат Результат;
КонецФункции

Функция СШКИнформационнаяКарта(Карта, СШК) Экспорт
    Предупреждение("Подбор информационных карт в данной форме не предусмотрен!");
    Возврат Истина;
КонецФункции

Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК) Экспорт
    Возврат Ложь;
КонецФункции
Процедура СШКОшибка(Ошибка, Штрихкод, ТипШК, СШК) Экспорт
    Текст = ПолучитьСерверТО().ПолучитьТекстОшибкиСШКТО(Ошибка, Штрихкод, ТипШК);
    Предупреждение(Текст); 
КонецПроцедуры

Событийные функции должны содержать тот же набор аргументов, что приведен в примере.

2.3. Считыватель магнитных карт

Для использования считывателя магнитных карт в документах необходимо дополнительно реализовать следующие функции:

СМКИнформационнаяКарта() – возникает, если обнаруженный код принадлежит информационной карте.

СМКНеизвестныйКод() – возникает, если обнаруженный код не зарегистрирован в базе.

СМКОшибка() – возникает, если при обработке кода возникла ошибка.

Все перечисленные функции обязательны к реализации для данного вида ТО.

Пример кода:

Функция СМКИнформационнаяКарта(Карта, СМК) Экспорт
    Результат = Истина;
    Возврат Результат;
КонецФункции

Функция СМКНеизвестныйКод(Код, СМК) Экспорт
    Результат = Ложь;
    Возврат Результат;
КонецФункции

Процедура СМКОшибка(Ошибка, КодКарты, СМК) Экспорт
    Текст = ПолучитьСерверТО().ПолучитьТекстОшибкиСМКТО(Ошибка, КодКарты);
    Предупреждение(Текст); 
КонецПроцедуры
 

 

2.4. ККМ Онлайн

Особенность работы устройств вида ККМ Онлайн состоит в том, что в любой момент (без дополнительного вмешательства пользователя ) должен существовать клиент, который обработает событие от ККМ. Т.е. ККМ Онлайн обычно подключается при старте приложения и в качестве клиента указывается специализированная обработка (входит в состав конфигурации), которая реализует описанные ниже методы и выполняет операции с БД.

Для использования считывателя магнитных карт в документах необходимо дополнительно реализовать следующие функции:

ОбработатьЗапросККМ() – возникает, если на ККМ вводят штрихкод товара.

ЗакрытиеЧекаККМ() – возникает, если на ККМ завершают чек.

Все перечисленные функции обязательны к реализации для данного вида ТО.

Пример кода:

Функция ОбработатьЗапросККМ(Номенклатура, Характеристика, Серия, Качество,
                            Единица, Количество, Цена, Скидка, НомерСекции, ККМ) Экспорт

    Результат = Истина;

    Если Не ЗначениеЗаполнено(мСклад) Тогда
        Сигнал();
        Сообщение = "Не задан склад  по умолчанию .";
        Результат = Ложь;
    ИначеЕсли Не ЗначениеЗаполнено(мТипЦен) Тогда
        Сигнал();
        Сообщение = "Не задан тип цен.";
        Результат = Ложь;
    Иначе
        Цена        = Ценообразование.ПолучитьЦенуНоменклатуры(Номенклатура, Характеристика, мТипЦен,  Неопределено , Единица);
        Скидка      = Ценообразование.ПолучитьПроцентСкидкиНаценкиЦеныНоменклатуры(Номенклатура, Характеристика, мТипЦен);
        НомерСекции = мНомерСекции;
    КонецЕсли;

    Возврат Результат;

КонецФункции
Процедура ЗакрытиеЧекаККМ(Товары, ПризнакВозврата, СуммаНал, СуммаБезнал, НомерЧека, НомерСмены, ККМ) Экспорт

    ДокЧек = Документы.ЧекККМ.СоздатьДокумент();
    ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокЧек, глЗначениеПеременной("глТекущийПользователь"), мВалютаРеглУчета, "Продажа");

    ДокЧек.Дата           = РабочаяДата;
    ДокЧек.ВидОперации    = ?(ПризнакВозврата, мВозврат, мПродажа);
    ДокЧек.КассаККМ       = ПолучитьСерверТО().ПолучитьКассуККМ(ККМ);
    ДокЧек.НомерСменыККМ  = НомерСмены;
    ДокЧек.НомерЧекаККМ   = НомерЧека;
    ДокЧек.ЧекПробитНаККМ = Истина;

    Товар = Неопределено;
    Для Каждого Товар Из Товары Цикл
        Сумма                               = Товар.Цена * Товар.Количество;
        ПроцентСкидкиНаценки                = ?(Сумма = 0, 0, 100 * (1 - Товар.Сумма / Сумма));
        СтрокаТЧ                            = ДокЧек.Товары.Добавить();
        СтрокаТЧ.Артикул                    = Товар.Номенклатура.Артикул;
        СтрокаТЧ.ЕдиницаИзмерения           = Товар.ЕдиницаИзмерения;
        СтрокаТЧ.Количество                 = Товар.Количество;
        СтрокаТЧ.Коэффициент                = Товар.ЕдиницаИзмерения.Коэффициент;
        СтрокаТЧ.Номенклатура               = Товар.Номенклатура;
        СтрокаТЧ.ПроцентСкидкиНаценки       = ПроцентСкидкиНаценки;
        СтрокаТЧ.СерияНоменклатуры          = Товар.СерияНоменклатуры;
        СтрокаТЧ.Сумма                      = Товар.Сумма;
        СтрокаТЧ.ХарактеристикаНоменклатуры = Товар.ХарактеристикаНоменклатуры;
        СтрокаТЧ.Цена                       = Товар.Цена;
        ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ДокЧек);
    КонецЦикла;

    Если СуммаНал <> 0 Тогда
        СтрокаТЧ           = ДокЧек.Оплата.Добавить();
        СтрокаТЧ.ВидОплаты = мНаличные;
        СтрокаТЧ.Сумма     = СуммаНал;
    КонецЕсли;

    Если СуммаБезнал <> 0 Тогда
        СтрокаТЧ           = ДокЧек.Оплата.Добавить();
        СтрокаТЧ.Сумма     = СуммаНал;
    КонецЕсли;

    Попытка
        ДокЧек.Записать(РежимЗаписиДокумента.Запись);
        Сообщить(СокрЛП(РабочаяДата) + ": Был создан чек """ + СокрЛП(ДокЧек) + """.",
                 СтатусСообщения.Информация);
    Исключение
        Сообщить(СокрЛП(ТекущаяДата()) + ": Был создан, но не был записан чек """ + СокрЛП(ДокЧек) + """.");
        ДокЧек.ПолучитьФорму().Открыть();
    КонецПопытки;

КонецПроцедуры

2.5 Считыватель RFID меток

Для использования считывателя магнитных карт в документах необходимо дополнительно реализовать следующие функции:

RFIDЧтениеМеток() – возникает, если устройство присылает список обнаруженных меток.

RFIDМеткаВПоле() – возникает, если в поле считывателя возникла метка.

RFIDНетМетокВПоле() – возникает, если из поля считывателя исчезли все метки.

RFIDОшибкаВДрайвере() – возникает, если в процессе работы драйвера возникла ошибка.

Все перечисленные функции обязательны к реализации для данного вида ТО.

Пример кода:

Функция RFIDЧтениеМеток(ДанныеИзМеток) Экспорт
    Для Каждого СтрокаДанных Из ДанныеИзМеток Цикл
        ПолучитьСерверТО().ОбработатьВведенныйШтрихкод(СтрокаДанных.ШК, ЭтаФорма);
    КонецЦикла;

    Возврат Истина;
КонецФункции

Функция RFIDМеткаВПоле(Событие, Данные) Экспорт
    Возврат Истина;
КонецФункции

Функция RFIDНетМетокВПоле(Событие, Данные) Экспорт
    Возврат Истина;
КонецФункции

Функция RFIDОшибкаВДрайвере(Событие, Данные) Экспорт
    Возврат Истина;
КонецФункции

3. Специфичные методы управления оборудованием

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

3.1. Фискальный регистратор

ПечатьЧекаПКО() - функция осуществляет печать чека для приходного кассового ордера .

ПечатьЧекаРКО() - функция осуществляет печать чека для расходного кассового ордера.

ПечатьЧека() - функция осуществляет печать чека.

ПолучитьПараметрыНаличнойОплаты() - функция осуществляет получение параметров наличной оплаты.

ВнестиСумму() - функция осуществляет внесение суммы в ФР.

ОтчетБезГашения() - функция осуществляет снятие отчёта без гашения.

ОтчетСГашением() - функция осуществляет снятие отчёта с гашением.

ПечатьТекста() - функция осуществляет печать массива произвольных строк.

ПоддерживаетсяСмешанныйРежимПечати() - функция проверяет возможность печати нефискальных строк в фискальном чеке.

3.2. Терминал сбора данных

ВыгрузитьТаблицуТСД() - функция осуществляет выгрузку таблицы в терминал сбора данных.

ЗагрузитьТаблицуТСД() - функция осуществляет загрузку таблицы из терминала сбора данных.

3.3. Дисплей покупателя

ВывестиСтрокуНаДисплейПокупателя() - функция осуществляет вывод строки на дисплей покупателя .

ВывестиСтрокиНаДисплейПокупателя() - функция осуществляет вывод строк на дисплей покупателя.

ОчиститьДисплейПокупателя() - Функция очищает дисплей покупателя.

3.4. Электронные весы

ТарированиеЭВ() - функция задаёт вес тары на электронных весах.

ПолучитьВесЭВ() - функция осуществляет получение веса от электронных весов.

3.5. Весы с печатью этикеток

ВыгрузитьТоварыВесы() - функция выгружает таблицу товаров в весы с печатью этикеток.

ОчиститьТоварыВВесах() - функция очищает таблицу товаров в весах с печатью этикеток.

3.6. ККМ Оффлайн

ПолучитьПараметрыВыгрузкиOffline() - функция осуществляет получение параметров выгрузки данных в ККМ Оффлайн.

ВыгрузитьТоварыККМ() - функция осуществляет выгрузку таблицы товаров в ККМ Оффлайн.

ЗагрузитьОтчетОПродажах() - функция осуществляет загрузку отчета о продажах из ККМ Оффлайн.

ЗавершитьЗагрузкуОтчетаОПродажах() - функция извещает ККМ Оффлайн об окончании загрузки отчёта.

ПолучитьПЛУПоШтрихкоду() - функция возвращает ПЛУ товара по штрихкоду для заданного объекта драйвера ККМ Оффлайн.

3.7. Эквайринговая система

ОплатитьПлатежнойКартой() - функция выполняет оплату банковской картой.

ОтменитьПлатежПоПлатежнойКарте() - функция выполняет отмену ранее осуществленного платежа по банковской карте.

ВернутьПлатежПоПлатежнойКарте() - функция выполняет операцию возврата платежа на банковскую карту.

ИтогиДняПоКартам() - функция выполняет сверку итогов по банковским картам с банком

ПоддерживаетсяСверкаИтогов() - функция проверяет возможность выполнения операции "Сверка итогов"

ПреавторизацияПоПлатежнойКарте() - функция выполняет преавторизацию банковской картой.

ЗавершитьПреавторизацииПоПлатежнойКарте() - функция выполняет завершение преавторизации банковской картой.

ОтменитьПреавторизациюПоПлатежнойКарте() - функция выполняет отмену преавторизации банковской картой.

3.8. Считыватель RFID меток

ПолучитьКоличествоМетокRFID() - функция производит обнаружение меток в поле считывателя и возвращает в параметре количество обнаруженных меток.

ПрочитатьДанныеИзМетокRFID() - функция считывает все данные из обнаруженных меток и возвращает в параметре структуру, содержащую идентификаторы меток и данные.

ЗаписатьДанныеВМеткиRFID() - функция записывает переданные данные в метки, находящиеся в поле считывателя.

УстановитьРежимДрайвераRFID() - функция устанавливает режим работы драйвера (активный/пассивный).

ОткрытьСессиюRFID() - функция открывает новую сессию для чтения данных из меток, попадающих в поле считывателя.

ЗакрытьСессиюRFID() - функция закрывает открытую ранее сессию.


Нас находят: какое значение возвращает метод вернутьплатежпоплатежнойкарте в 1с, метод ВернутьПлатежПоПлатежнойКарте, СШКНоменклатура, ПолучитьСерверТО() ВыгрузитьТоварыККМ, Поддерживаетсявидто весы, ВыгрузитьТаблицуТСД(), СтрокаТЧ ВидОплаты = мНаличные, пример использования считывателя магнитных карт в торговле, ПолучитьСерверТО() ПодключитьКлиента(ЭтаФорма);, ПолучитьСерверТО() ПечатьЧека


Подписка на новости RSS     Добавьте в закладки Google fusion     Мы в Google+    

 

Мы ВКонтакте

 

Мы на Facebook