0. dmt 46 21.03.16 09:40 Сейчас в теме

Работа с драйвером ФР "Штрих-М" на уровне протокола

Для работы со своими фискальными регистраторами компания «Штрих-М» написала свой драйвер «Штрих-М: Драйвер ФР».
А для интеграции с программами семейства 1С компании «Штрих-М» пришлось подготовить дополнительный драйвер, который довольно сложно называется: «ПО «ШТРИХ-М: Драйвер ФР» в соответствии с «требованиями к разработке драйверов для фискальных регистраторов» компании 1С».
Это предыстория. А история в том, что, используя драйвер 1С, невозможно выполнить некоторые команды, которые имеет стандартный драйвер «Штрих-М». Например, вывести штрих код.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. bigmal 38 23.03.16 08:18 Сейчас в теме
Мсье знает толк в извращениях! (с) ))

Переход на работу по упомянутому выше пункту №1, на порядок проще, быстрее и правильнее, чем извращаться с HEX-ами. Ну, разве что для овладения использования данного метода от 1С, но не более того :)
2. JohnyDeath 291 23.03.16 08:26 Сейчас в теме
(1) bigmal, конечно проще, но с оговоркой, что нужные методы есть в родном драйвере.
Я также использовал и п.2 и п.3 при разработке печати на подкладных документах.
Подробностей уже и не вспомню, но точно также приходилось играть с HEX-ами. Ес-но, предварительно общался со службой поддержки Штрих-М. Именно они мне сказали, что HEX в некоторых случаях - единственный вариант.
3. dmt 46 23.03.16 12:29 Сейчас в теме
(1) bigmal, возможно и так :-), но я могу привести свои аргументы.

1. Используя решение из пункта 3. можно решить все необходимые вопросы с минимальными изменениями типового кода.
Для меня это было принципиально важно.
2. Переписать все функции на другой драйвер, это не такое и быстрое решение, с учетом возможных последствий...
Надо и писать нормально :-) и тестировать.
3. Ну и как уже упомянул комрад JohnyDeath, работа напрямую с протоколом позволяет все что описано в протоколе.
7. webester 29 27.05.16 13:35 Сейчас в теме
(1)Дописать одну функцию или переписать весь функционал работы с ФР? Хм какой сложный выбор...
4. dmt 46 28.03.16 03:44 Сейчас в теме
Добавил примеры. В том числе как в человекочитабельном виде получать строковые данные от ФР.
5. kostik_love 272 28.03.16 05:17 Сейчас в теме
А почему бы не связаться с ребятами из "Штрих-М" и подать заявку на доработку драйвера «ПО «ШТРИХ-М: Драйвер ФР» в соответствии с «требованиями к разработке драйверов для фискальных регистраторов» компании 1С»- что бы в следующей версии все нужные вам функции были.
а пункты 1, 2, 3 - получается временное решение.
6. dmt 46 28.03.16 05:50 Сейчас в теме
(5) kostik_love, потому что именно на форуме Штриха от сотрудников Штриха я и получил ответ использовать DeviceControlHEX.
8. al2ko 66 22.12.16 23:16 Сейчас в теме
Бодрого времени суток. Пробовал данный метод на версии драйвера 4.13 и получил сообщение:
{ВнешняяОбработка.ШтрихМФискальныеРегистраторы.МодульОбъекта(921)}: Метод объекта не обнаружен (DeviceControlHEX)
КомандаВыполнена = Объект.Драйвер.DeviceControlHEX(Объект.ИДУстройства, КомандаКВыполнению, РезультатКоманды);
У вас на какой версии работает?
9. dmt 46 23.12.16 08:34 Сейчас в теме
Привет!
На кассах стоит 4.10.
Но, насколько я помню работала и на 4.12.

А что за конфигурация? Название обработки намекает, что это УТ 11 или Розница 2.
Насколько я понимаю в этих конфигурациях логика работы торгового оборудования немного изменена.

Отсюда пара вопросов:
1. Объект это действительно объект? :-)
2. Драйвер действительно драйвер Штриха (DrvFR), а не DrvFR1C?
10. al2ko 66 23.12.16 14:29 Сейчас в теме
Бодрого времени суток.
Конфигурация УТ 10.3. Для проверки засунул код в стандартную обработку фискального регистратора ShtrihMFiscalPrinters_v2.
Драйвер наверно используется DrvFR1C из стандартной обработки.
Мне нужно в момент закрытия чека узнать подитог и назначить скидку суммой, а стандартные команды согласно "требований к разработке драйверов для фискальных регистраторов компании 1С" этого не умеют, переписывать конфигурацию не хочу.
Мне показалось что представленный тобой способ подойдет.
11. dmt 46 25.12.16 05:43 Сейчас в теме
(10) Привет!
Затестил 4.13. У меня тоже не взлетело.
Ошибок не выдает. И даже частично печатает. Но частично.
12. pomestnik 48 27.12.16 19:50 Сейчас в теме
А у меня другая печаль).Медленная печать с rdp. Весь штриховский форум кишит сообщениями что надо добавить
BeginDocument и EndDocument для буферизации.
Но в DrvFR1C их нету.. .
И костыль описанный тобой тут не всунуть ибо мне воздействовать на сам драйвер надо... Я правильно понимаю ?

p.s. интересно можно ли декомпильнуть и пересобрать дллку эту =\

13. dmt 46 28.12.16 13:02 Сейчас в теме
(12) По идее, костыль может все что может протокол "Протокол работы ФР".
Описание протокола можно посмотреть тут:
ftp://ftp.shtrih-m.ru/download/FR/Doc/ProtocolFR_1_12.pdf
14. anrahell 19.02.17 13:07 Сейчас в теме
// Функция переводит обычную cтроку в шестнадцатеричное представление
// Параметры:
// ТекстСообщения - Строка - Текст сообщения
// ТипКодировки - Число - Тип кодировки (1 - каждый символ представляется 2 байтами, 0 - 1 байтом)
// Возвращаемое значение: Строка - Строка после перекодировки
//
Функция Str2Hex(ТекстСообщения, ТипКодировки)
СтрокаЗнаков = "";
Если ТипКодировки = 1 Тогда
ДлинаКодаСимвола = 4;
Иначе
ДлинаКодаСимвола = 2;
КонецЕсли;
Для К = 1 По СтрДлина(ТекстСообщения) Цикл
СтрокаЗнаков = СтрокаЗнаков + Padl(DecToHex(КодСимвола(Сред(ТекстСообщения, К, 1))), ДлинаКодаСимвола, "0");
КонецЦикла;
Возврат СтрокаЗнаков;
КонецФункции // Str2Hex()

// Функция переводит cтроку из шестнадцатеричного представления в обычную строку
// Параметры:
// СтрокаСимволов - Строка - Текст в шестнадцатеричном виде
// ПризнакКода - Строка - Тип кодировки ("0" - каждый символ представляется 1 байтами, "1" - 2 байтами)
// Возвращаемое значение: Строка - Строка после перекодировки
//
Функция StrHexToStr(СтрокаСимволов, ПризнакКода) Экспорт
Если Число(ПризнакКода) = 0 Тогда
КоличествоСимволов = 2;
Иначе
КоличествоСимволов = 4;
КонецЕсли;
к = 1;
Результат = "";
Пока к < СтрДлина(СтрокаСимволов) Цикл
Строка = Сред(СтрокаСимволов, к, КоличествоСимволов);
Результат = Результат + Символ(HexToDec(Строка));
к = к + КоличествоСимволов;
КонецЦикла;
Возврат Результат;
КонецФункции // StrHexToStr()
15. ardn 83 16.01.18 00:09 Сейчас в теме
Подскажите, можно ли воспользоваться данным методом в текущих конфигурациях, где общение программы с устройством идет через компоненту 1С? Не вижу там команды DeviceControlHEX...
16. bigmal 38 16.01.18 07:44 Сейчас в теме
(15) Юрий, в компоненте а-ля 1С нет практически ничего. Это заусенец на верхушке айсберга в сравнении с возможностями нормального драйвера ))
17. dmt 46 21.01.18 09:39 Сейчас в теме
(15) В компоненте DrvFR1C такой метод есть, в SMDrvFR1C20 для ККТ такого метода нет.
18. Strange Device 305 03.07.18 14:12 Сейчас в теме
А с Атоллами ничего подобного не проделывали? Столкнулся с бедой, что при переходе с 8-ых драйверов Атолла на 9-е перестал работать код печати ШК, который раньше работал, вот ищу пути решения проблемы...
19. man-1982 14.03.19 16:15 Сейчас в теме
Подскажите, а как отлаживать такие обработки для фискальников и для ККМ? На примере ут 10.3
Сейчас делаю так, произвел изменения во внешней обработки и потом загрузил ее в справочники ОбработкиТО. Проверил, если не взлетело то опять подправляю и загружаю.
Может есть какой то метод, чтобы в 10.3 не выгружать и загружать обработки каждый раз, может они могут подхватываться прямо из кода? Из встроенных обработок конфигуратора?
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)