On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение





Пост N: 330
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 16.12.16 09:29. Заголовок: Фискальный регистратор. Как работать из Harbour?


Доброго времени суток!

Возможно придётся интегрировать свои программы с данным устройством. Конечно "драйвера" на разное оборудование разные, но если можно дайте пожалуйста пинок в нужном направлении - где посмотреть, а если возможно фрагмент кода. Никогда этим не занимался и пока полное непонимание, а рунет завален лишь рекомендациями по настройке с "1с"

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]


администратор




Пост N: 6201
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.12.16 09:45. Заголовок: Это смотря какой фис..


Это смотря какой фискальный регистратор.
Кусок кода для Мария 301
Пробитие чека , делал давно еще на Clipper
У меня было подробное описание протокола обмена , листов эдак 40 или больше.

Скрытый текст



а вот и сами протоколы

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 331
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 16.12.16 10:18. Заголовок: Dima пишет: Это смо..


Dima пишет:

 цитата:
Это смотря какой фискальный регистратор. Кусок кода для Мария 301


Спасибо! Это "что-то", но, как читал (возможно не понял) сейчас (в России? в свете нового закона об on-line кассах) используют более "высокоуровневые" механизмы взаимодействия.

Действительно всё сильно зависит от типа ФР, т.к. подходы к взаимодействию сильно разнятся... но мне бы, для ориентации взглянуть некий самодостаточный пример, типа приведённого Dima, но для чего-то типа Штрих, Атол, Меркурий с доработками под ФЗ 53? Может быть кто-нибудь, что пытался делать...

"На пока" даже будет полезен опыт общения с современными off-line кассами... т.е. пока и не срочно пытаюсь понять "идеологию"... да и в этом направлении пока не очень хочется работать, а возможно "нада"

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6202
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.12.16 10:23. Заголовок: AndreyZh Уточни мод..


AndreyZh
Уточни модель фискальной кассы

AndreyZh пишет:

 цитата:
используют более "высокоуровневые" механизмы взаимодействия.


Ну так код писался 100 лет назад

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 332
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 16.12.16 10:27. Заголовок: Dima пишет: Уточни ..


Dima пишет:

 цитата:
Уточни модель фискальной кассы


На сей момент не важно! ФР должен удовлетворять закону об on-line кассах, желательно недорого стоить - будет "готовое" простое решение, то допишу программу и купим "эту кассу"

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6203
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.12.16 10:28. Заголовок: AndreyZh Ну по нача..


AndreyZh
Ну по началу надо обзавестись протоколом обмена , определиться с ФР , купить его и тогда уже делать , до того
как её профискализируют.
Не имея на руках ФР врядли сможешь написать готовый код , без тестов.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 333
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 16.12.16 10:48. Заголовок: Dima пишет: Ну по н..


Dima пишет:

 цитата:
Ну по началу надо обзавестись протоколом обмена , определиться с ФР , купить его и тогда уже делать , до того как её профискализируют


В этом и анекдот! Есть закон, действующий с июля 16... есть куча "презентаций", обсуждений среди бухов и спецов, как правило "при 1с"... и даже говорят есть тестовые образцы оборудования и "драйвера" для 1с... Например получить какой-нибудь ФР для создания проги нужно заплатить за предзаказ и через 1-2 месяца получить "кота в мешке" для "игрушек". Моё умное (в отличии от большинства) руководство "волнуется", а я могу лишь ему показать картинки презентаций "виртуальных коней в вакууме" и при этом ничего не могу сказать "как мы будем поступать"... Хочу понять, есть ли у программистам на Harbour опыт - смогу ли допилить свои програмки... или нужно искать другие решения?... и вообще "розница в России" для меня тупиковое направление



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6204
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.12.16 10:55. Заголовок: AndreyZh пишет: Хоч..


AndreyZh пишет:

 цитата:
Хочу понять, есть ли у программистам на Harbour опыт - смогу ли допилить свои програмки


На Harbour думаю сможешь.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6205
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.12.16 11:09. Заголовок: Как то делал на Clip..


Как то делал на Clipper связь с одним ФР , можно было сделать связь на низком уровне или
же путем создания OLE объекта (DLL прилагалась) и в дальнейшем общаться с кассой через него.
Но тогда я еще не писал на Harbour и сделал на низком уровне.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 334
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 09.01.17 16:58. Заголовок: Ежели кому интересно..


Ежели кому интересно??? Два основных типа драйвера: от Atol и Штрих. Возможны варианты: загрузка DLL или подключения OLE объекта. Пример с форума БЭСТ, дающий общую идею создания, отправки и сохранения чека:


Код рассчитан на работу с драйвером АТОЛ, он для "Меркуриев" бесплатный, http://www.atol.ru/products/programs/trade-work/driver/driver-kkm/

В приведенном примере в чек выводятся построчно наименования товаров из накладной, НДС не выделяется, регистрация всегда идет через секцию 1, поле mdoc->date0 используется для защиты от повторнной печати чека при пересохранении документа.

 
Function Main()
local ss,gg,ml,hkkm

if select('MDOC') > 0 .and. select('MDOCM') > 0
if empty(mdoc->date0)
mdoc->(ordsetfocus('MDOC'))
mdocm->(ordsetfocus('MDOCM'))
mlabel->(ordsetfocus('MLABEL'))

ss := mdoc->sclad + mdoc->vid + mdoc->type
ss := ss + mdoc->codedoc + mdoc->numdoc + dtos(mdoc->date)
ss := upper(ss)
gg := ss

if mdocm->(dbseek(ss))
hkkm := CreateObject('AddIn.FprnM45')
try
hkkm:DeviceEnabled := .t.
hkkm:CheckState()
hkkm:CancelCheck()
hkkm:Password := '1'
hkkm:Mode := 1
hkkm:SetMode()

do while !mdocm->(eof()) .and. (ss == gg)
if mlabel->(dbseek(upper(mdocm->grup + mdocm->nnum)))
ml := mlabel->name
ml := rtrim(ml)
do while len(ml) > 19
hkkm:Caption := OemToAnsi(left(ml, 19))
hkkm:PrintString()
ml := substr(ml, 20)
enddo
hkkm:Name := OemToAnsi(ml)
else
hkkm:Name := '?'
endif

hkkm:Price := Round(mdocm->Cenaout, 2)
hkkm:Quantity := Round(mdocm->Kolout, 3)
hkkm:Department := 1
hkkm:Registration()

mdocm->(dbskip())
ss := mdocm->sclad + mdocm->vid + mdocm->type
ss := ss + mdocm->codedoc + mdocm->numdoc + dtos(mdocm->date)
ss := upper(ss)
enddo
hkkm:TypeClose := 0
hkkm:CloseCheck()
hkkm := nil
catch
hkkm:CancelCheck()
hkkm := nil
alert('ЋиЁЎЄ ЇаЁ ЇҐз ⨠祪 !')
return -1
end

mdoc->(dbrlock())
mdoc->date0 := Date()
mdoc->summa0 := mdoc->summa
mdoc->(dbcommit())
mdoc->(dbunlock())

endif
endif
endif
return 0


Пример на C# для штриха - нужно загрузить DLL перед использованием, а так всё кажется понятным? Правда DLL они утверждают, что только для C, но высылают пример, что можно использовать из Delphi и Васика

 
private void button2_Click_1(object sender, EventArgs e)
{
//Открываем чек продажи
Driver.CheckType = 0;
Driver.OpenCheck();

//Отправка данных о покупателе
Driver.CustomerEmail = textBox1.Text; //В качестве параметра можно передавать или телефон (+7хххххххххх) или e-mail: test@test.com
Driver.FNSendCustomerEmail();

//Формируем продажу
Driver.Quantity = Convert.ToDouble(textBox3.Text);
Driver.Price = Convert.ToInt32(textBox2.Text);
Driver.Department = 1;
Driver.Tax1 = 0;
Driver.Tax2 = 0;
Driver.Tax3 = 0;
Driver.Tax4 = 0;
Driver.StringForPrinting = "Булка с маком";
Driver.Sale();

Driver.CheckSubTotal();

//Закрываем чек
Driver.Summ1 = Driver.Summ1;
Driver.Summ2 = 0;
Driver.Summ3 = 0;
Driver.Summ4 = 0;
Driver.Tax1 = 0;
Driver.Tax2 = 0;
Driver.Tax3 = 0;
Driver.Tax4 = 0;
Driver.StringForPrinting = "";
Driver.CloseCheck();
}


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1399
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.17 18:04. Заголовок: AndreyZh пишет: Пра..


AndreyZh пишет:

 цитата:
Правда DLL они утверждают, что только для C, но высылают пример, что можно использовать из Delphi и Васика



Скорее всего, написана на C, а для использовании с Делфи или Бейсик используется стандартная техника: функции DLL экспортируются с использованием соответствующего соглашения о вызовах (calling conventions) и без декорирования имен.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 30
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет