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

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

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

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

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

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

1. Используя решение из пункта 3. можно решить все необходимые вопросы с минимальными изменениями типового кода.
Для меня это было принципиально важно.
2. Переписать все функции на другой драйвер, это не такое и быстрое решение, с учетом возможных последствий...
Надо и писать нормально :-) и тестировать.
3. Ну и как уже упомянул комрад JohnyDeath, работа напрямую с протоколом позволяет все что описано в протоколе.
7. webester 28 27.05.16 13:35 Сейчас в теме
(1)Дописать одну функцию или переписать весь функционал работы с ФР? Хм какой сложный выбор...
4. dmt 31 28.03.16 03:44 Сейчас в теме
Добавил примеры. В том числе как в человекочитабельном виде получать строковые данные от ФР.
5. kostik_love 269 28.03.16 05:17 Сейчас в теме
А почему бы не связаться с ребятами из "Штрих-М" и подать заявку на доработку драйвера «ПО «ШТРИХ-М: Драйвер ФР» в соответствии с «требованиями к разработке драйверов для фискальных регистраторов» компании 1С»- что бы в следующей версии все нужные вам функции были.
а пункты 1, 2, 3 - получается временное решение.
6. dmt 31 28.03.16 05:50 Сейчас в теме
(5) kostik_love, потому что именно на форуме Штриха от сотрудников Штриха я и получил ответ использовать DeviceControlHEX.
8. al2ko 66 22.12.16 23:16 Сейчас в теме
Бодрого времени суток. Пробовал данный метод на версии драйвера 4.13 и получил сообщение:
{ВнешняяОбработка.ШтрихМФискальныеРегистраторы.МодульОбъекта(921)}: Метод объекта не обнаружен (DeviceControlHEX)
КомандаВыполнена = Объект.Драйвер.DeviceControlHEX(Объект.ИДУстройства, КомандаКВыполнению, РезультатКоманды);
У вас на какой версии работает?
9. dmt 31 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 31 25.12.16 05:43 Сейчас в теме
(10) Привет!
Затестил 4.13. У меня тоже не взлетело.
Ошибок не выдает. И даже частично печатает. Но частично.
12. pomestnik 48 27.12.16 19:50 Сейчас в теме
А у меня другая печаль).Медленная печать с rdp. Весь штриховский форум кишит сообщениями что надо добавить
BeginDocument и EndDocument для буферизации.
Но в DrvFR1C их нету.. .
И костыль описанный тобой тут не всунуть ибо мне воздействовать на сам драйвер надо... Я правильно понимаю ?

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

13. dmt 31 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 81 16.01.18 00:09 Сейчас в теме
Подскажите, можно ли воспользоваться данным методом в текущих конфигурациях, где общение программы с устройством идет через компоненту 1С? Не вижу там команды DeviceControlHEX...
16. bigmal 38 16.01.18 07:44 Сейчас в теме
(15) Юрий, в компоненте а-ля 1С нет практически ничего. Это заусенец на верхушке айсберга в сравнении с возможностями нормального драйвера ))
17. dmt 31 21.01.18 09:39 Сейчас в теме
(15) В компоненте DrvFR1C такой метод есть, в SMDrvFR1C20 для ККТ такого метода нет.
18. Strange Device 305 03.07.18 14:12 Сейчас в теме
А с Атоллами ничего подобного не проделывали? Столкнулся с бедой, что при переходе с 8-ых драйверов Атолла на 9-е перестал работать код печати ШК, который раньше работал, вот ищу пути решения проблемы...
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день