|
Получить данные чека когда он пробит в ККМ | ☑ | ||
---|---|---|---|---|
0
mishaPH
19.03.19
✎
09:06
|
Коллеги. А возможно ли кроме номера чека ККМ получить при удачном пробитии оного другие параметры.
Есть некие номера ФН ФД ФП и дату время которая пошла на чек (с таймера самого ККМ) Атоловские драйвера |
|||
1
Cyberhawk
19.03.19
✎
09:23
|
Конечно
|
|||
2
mishaPH
модератор
19.03.19
✎
09:26
|
о. а описание этого есть где-то?
|
|||
3
Cyberhawk
19.03.19
✎
09:28
|
В ПДФ-файлике с описанием АПИ драйвера
|
|||
4
serpentt
19.03.19
✎
09:35
|
ОбъектECR.RegisterNumber = 51;
ОбъектECR.GetRegister(); НомерЧека = ОбъектECR.НомерДокумента; НомерФД = ОбъектECR.ФискальныйПризнак; |
|||
5
serpentt
19.03.19
✎
09:37
|
51 регистр
Данные по последнему фискальному чеку (DocNumber, LastCheckType, Summ, Day, Month, Year, Minute, Hour, FiscalSign) |
|||
6
mishaPH
модератор
19.03.19
✎
09:42
|
(4) мерси.
вот определились. надо получить параметр с чека ФН и ФД НомерЧека это ФД? иди Номер ФД у вас это поле ФПД. нам надо чек из налоговой полученный через контроль чеков точно опознать с пробитым в магазине. по идее ФН_ФД как раз уникальный для данного ККМ номер чека. |
|||
7
serpentt
19.03.19
✎
09:45
|
DocNumber ФД
FiscalSign ФПД |
|||
8
mishaPH
модератор
19.03.19
✎
09:47
|
(7) еще раз для меня тупого. ФН и ФД как вызвать у атола. ФПД не надо.
|
|||
9
serpentt
19.03.19
✎
09:49
|
ФПД(абривеатуры) у Атола уже нет давно
DocNumber ФД FiscalSign ФП |
|||
10
PaulBC
19.03.19
✎
09:50
|
еще можно в личном кабинете ОФД посмотреть
|
|||
11
Aleksey
19.03.19
✎
09:52
|
Для 10-ки смотри описание протокола страница 39
Таблица 5. Описание пакета ответа с результатами обработки документа payload Реквизиты фискализации документа. - ∟fiscal_receipt_number integer Номер чека в смене. 1042 ∟shift_number integer Номер смены. 1038 ∟receipt_datetime string Дата и время документа из ФН. 1012 ∟total number Итоговая сумма документа в рублях с заданным в CMS округлением: целая часть не более 8 знаков; дробная часть не более 2 знаков. При регистрации в ККТ происходит расчёт фактической суммы: суммирование значений sum позиций. 1020 ∟fn_number string Номер ФН. 1041 ∟ecr_registration_number string Регистрационный номер ККТ. 1037 ∟fiscal_document_number integer Фискальный номер документа. 1040 ∟fiscal_document_attribute integer Фискальный признак документа. 1077 ∟fns_site string Адрес сайта ФНС. 1060 |
|||
12
mishaPH
модератор
19.03.19
✎
09:52
|
(9) большое спасибо. попробую.
ОбъектECR.RegisterNumber = 51; ОбъектECR.GetRegister(); это обязательно вызывать или уже у Объекта после пробития чека все уже известно? сейчас работает конструкция еще с бог знает каких времен НомерЧека = Объект.НомерЧека; |
|||
13
mishaPH
модератор
19.03.19
✎
09:53
|
(10) да тут как раз лазить туда долго. да и в ЛК еще может быть не передано
все эти параметры для точного опознавания чека в будущем надо при пробитии в док запомнить |
|||
14
serpentt
19.03.19
✎
09:53
|
(12) обращение к регистру ОБЯЗАТЕЛЬНО
|
|||
15
serpentt
19.03.19
✎
09:54
|
Я эти реквизиты запоминаю в Документе и сразу могу сравнить с ОФД
|
|||
16
mishaPH
модератор
19.03.19
✎
09:56
|
(14) ок. (15) ну вот как раз для этого и делаем
|
|||
17
Garykom
гуру
19.03.19
✎
10:35
|
(0) Практически все можно, изучай http://integration.atol.ru/?pascal#c6464ee6ea
|
|||
18
Garykom
гуру
19.03.19
✎
10:41
|
(17)+
|
|||
19
mishaPH
модератор
20.03.19
✎
10:24
|
(4) кстати а к регистру обращаться уже после закрытия чека перед коммандо отключится от фр?
|
|||
20
Garykom
гуру
20.03.19
✎
10:26
|
(19) Это неужели еще через 8-й драйвер пытаешься?
Забей и перепиши уже все через 10-е. |
|||
21
Garykom
гуру
20.03.19
✎
10:27
|
(20)+ Могу примеры кода пробивки и прочего дать готовые для 1С и подсказать если что не получится.
|
|||
22
mishaPH
модератор
20.03.19
✎
10:34
|
(20) я не могу в 200 магазинах менять драйвера ккм. это вообще не мое дело
|
|||
23
mishaPH
модератор
20.03.19
✎
10:35
|
надо из имеющегося вытащить или послать тех кому это надо из за невозможности
|
|||
24
Garykom
гуру
20.03.19
✎
11:07
|
(22) Так один хрен скоро менять придется вынужденно в спешке и с матами.
|
|||
25
mishaPH
модератор
20.03.19
✎
11:08
|
(24) зачем и когда? с этого года вроде итак новый формат
|
|||
26
mishaPH
модератор
20.03.19
✎
12:22
|
ОбъектECR.RegisterNumber = 51;
ОбъектECR.GetRegister(); НомерЧека = ОбъектECR.НомерДокумента; НомерФД = ОбъектECR.ФискальныйПризнак; конструкция на 8х драйверах работает. но DocNumber ФД верный FiscalSign ФП есть но номер не тот что на чеке потом. а ФН вообще в Объекте не нашел. Кстати на чеке 2 номера ккт ЗН и РН ЗН заводской наверное и виден в Объекте а если чек получить через прогу налоговую с шк то там один номер и подозреваю не заводской. нужен ФН и ФД тогда точно чтобы получить чек из налоговой и точно его найти в 1с |
|||
27
mishaPH
модератор
21.03.19
✎
09:09
|
как ФН получить так что то нигде найти не могу. Может там кроме 51 регистра еще какие есть и данные там?
|
|||
28
Mikhail Volkov
21.03.19
✎
10:03
|
Когда нет возможность вручить отбитый чек клиенту в руки отправляем его по e-mail. Хотелось бы отправлять Фискальный признак, чтобы клиент мог его открыть на сайте ОФД. Но в Альфа-Авто нет такой (26) возможности, отбитие чека выполняется ВыполнитьКомандуОборудования("ФР",GUID_ФР,"ПробитьЧек",SafeArrayПараметрыЧека,ТаймаутФР,ТекстОшибки), а получение фискальных реквизитов:
КоличествоСтрок=0; КоличествоСтолбцов=0; SafeArrayПараметрыЧека.GetBounds(КоличествоСтрок,КоличествоСтолбцов); НомерСмены=Число(SafeArrayПараметрыЧека.GetValue(0,0)); НомерЧека=Число(SafeArrayПараметрыЧека.GetValue(1,0)); ДатаФР=Вычислить("'"+SafeArrayПараметрыЧека.GetValue(3,0)+"'"); НомерДокумента=Число(SafeArrayПараметрыЧека.GetValue(2,0)); СтруктураВозвратныхПараметров=Новый Структура("ДатаФР,НомерЧека,НомерДокумента,НомерСмены",ДатаФР,НомерЧека,НомерДокумента,НомерСмены); Или все же возможно получить Фискальный признак чека? |
|||
29
Garykom
гуру
21.03.19
✎
10:51
|
(28) Когда уже снимешь нафуй защиту с этой древней альфы и переделаешь работу с ККТ нормально?
|
|||
30
Garykom
гуру
21.03.19
✎
11:12
|
Хм понимаешь же что в один прекрасный момент 8-й драйвер атола всё.
А кто будет переписывать эту систему защиты на 10-й драйвер это большой вопрос, очень сомневаюсь ибо конфа устарела. |
|||
31
mishaPH
модератор
21.03.19
✎
12:39
|
(30) когда и почему?
|
|||
32
НаборДанных
21.03.19
✎
13:08
|
(30)Альфа так-то до сих пор не работает с драйверами выше 8.16.5, и так всё, что требуется на сегодняшний день согласно формата 1.05 реализовано
|
|||
33
Garykom
гуру
21.03.19
✎
13:09
|
(31) https://www.atol.ru/company/news/o-perekhode-na-dkkt-10-i-prekrashchenii-razvitiya-i-podderzhki-dkkt-8-i-9-/
http://forum.atol.ru/index.php?showtopic=35965&st=0&p=260491entry260491 После 2019 года поддержки для 8-й и 9-й версий атол сказал не будет, новые версии уже не выпускают с 2018, но патчи для старых делают еще. |
|||
34
Garykom
гуру
21.03.19
✎
13:12
|
Ну маркировка для автошин и возможно расширят до 2024 перечень что еще.
Если есть планы менять альфу 4 в ближайшие 5 лет надо или придется много ее пилить. |
|||
35
Mikhail Volkov
21.03.19
✎
13:21
|
(30) Фрагмент (28) взял из Альфа-Авто 4.1, но в 5.1.15.10 он не изменился. По поводу драйверов АТОЛ 1С-Рарус задавался вопрос: https://rarus.ru/forum/messages/forum7/topic11493/message81010/#message81010 Ответ в (32).
|
|||
36
mishaPH
модератор
21.03.19
✎
14:04
|
(33) понятно.. а из 8й то можно вытянуть поле ФН чека? пока с этим разбираемся
|
|||
37
serpentt
21.03.19
✎
14:05
|
(26)
У меня все ТО и из регистра и на чеке... Обращение к регистру сразу после закрытия чека ОбъектECR.CloseCheck(); Если ЕстьОшибкаККМ(ОбъектECR,10) = 1 Тогда Возврат 0; КонецЕсли; //Получаем Номера ОбъектECR.RegisterNumber = 51; ОбъектECR.GetRegister(); НомерЧека = ОбъектECR.НомерДокумента; НомерФД = ОбъектECR.ФискальныйПризнак; СуммаЧека = ОбъектECR.Сумма; |
|||
38
mishaPH
модератор
21.03.19
✎
14:26
|
(37) а фискальный признак он вообще что такое? он уникален ? в каких рамках?
|
|||
39
Garykom
гуру
21.03.19
✎
14:52
|
(38) Нет он не уникален а "криптографичен".
Короче хеш-функция некая, зависящая от кучи параметров (номер ккт, номер чека и т.д.) |
|||
40
Mikhail Volkov
21.03.19
✎
17:35
|
(34) Есть обработка ККТ-ОНЛАЙН 54-ФЗ: Обработка для работы фискальных регистраторов + Эмулятор вроде и для Альфа-Авто тоже...
|
|||
41
Garykom
гуру
21.03.19
✎
18:58
|
(40) платная
|
|||
42
Mikhail Volkov
22.03.19
✎
06:47
|
(39) Число?
(41) Да мне только эмулятор нужен, чтобы провериль. Есть в ФР Альфа-Авто Учебный/ЕНВД, неизвестно формирует ли фискальный признак? |
|||
43
Mikhail Volkov
22.03.19
✎
10:22
|
(37) Этот фрагмент из какой конфигурации?
|
|||
44
mishaPH
модератор
22.03.19
✎
10:31
|
(43) тис обычная наверное
|
|||
45
Mikhail Volkov
22.03.19
✎
13:07
|
(44) Скачал ТиС 7.70.999, сделал Поиск во всех текстах строки "ОбъектECR". Не найдены!?
|
|||
46
Garykom
гуру
22.03.19
✎
13:10
|
(45) "ОбъектECR" это чье то изобретение, в примерах от атол просто ECR
|
|||
47
mishaPH
модератор
22.03.19
✎
13:10
|
(46) в старых атоловских идет просто Объект.
|
|||
48
mishaPH
модератор
22.03.19
✎
13:11
|
(45) все это в fr_comm.ert в папке еквип
|
|||
49
mishaPH
модератор
22.03.19
✎
13:11
|
(45) вообще это просто под себя ктото так мог назвать
|
|||
50
Garykom
гуру
22.03.19
✎
13:11
|
(42) Да просто число. Суть в том чтобы не смогли подделать этот ФП без настоящего ФН.
|
|||
51
Garykom
гуру
22.03.19
✎
13:14
|
Я бы все же рекомендовал на 10-е дрова перейти, там все логичнее и больше возможностей.
|
|||
52
Garykom
гуру
22.03.19
✎
13:15
|
Например можно пробивать нормально НДС 20% без покупки КЗ10 ))
|
|||
53
Сияющий в темноте
22.03.19
✎
13:32
|
В восьмом драйвере есть возможность посылки низкоуровнего пакета на фр
восьмая версия драйвера работает через службу,что позволяет ставить службу нп одном компе,а работать с другой. девятый так не умеет,а в десятом службу зпменили на вебсервис,но прозрачного проброса так и нет. еще одна из проблеи в том,что у раруса своя служба управления оборудованием,и она работает под системно учеткой,насколько я помню,9 и 10 драйвер так не умеет он окна на экран кидает. |
|||
54
serpentt
22.03.19
✎
13:37
|
(52) а кто Вам сказал что КЗ10 надо покупать?
Все аппараты продаваемые с января 2019 года имеют КЗ10 |
|||
55
Garykom
гуру
22.03.19
✎
13:40
|
(54) Т.е. вместо покупки КЗ10 ты предлагаешь новую ККТ купить а старую выкинуть?
|
|||
56
Garykom
гуру
22.03.19
✎
13:41
|
(55)+ Хотя интересный момент.
А сайт ФНС позволит две ККТ с одним заводским номером зарегать? |
|||
57
serpentt
22.03.19
✎
13:41
|
(43) Это своя внешняя обработка обслуживания ККТ
вот функция пробития чека Функция ПечататьЧекФЗ54_105(ОбъектECR,Пароль,ВыбДокумент,ТипЧека,НомерЧека,НомерФД,ДлинаСтроки,ЗаводскойНомККМ,МайлТелефон="", КодТоргПред="",НомерПечДока,ПакетнаяПечать=0,ТипКоррекции="",СпособРасчета=1,ДатаДокОсн="") Если ПустоеЗначение(ОбъектECR) = 1 Тогда ОписаниеРезультата = "устройство не подключено"; Возврат 0; Иначе Если ПодключитьсяКФР(ОбъектECR) = 0 Тогда Возврат 0; КонецЕсли; КонецЕсли; //Сверим на всякий случай Серийный номер ККМ Если Строка(Прав(ОбъектECR.SerialNumber,10)) <> ЗаводскойНомККМ Тогда ОписаниеРезультата = "Не совпадают Номера в кассе и на ККМ"; Возврат 0; КонецЕсли; //{ Mode - Режим: // 0 - Выбора // 1 - Регистрации // 2 - Отчётов без гашения // 3 - Отчётов с гашением ОбъектECR.Mode = 1; //} ОбъектECR.Password = Пароль; // пароль на режим регистрации //Данные метод является сервисным и представляет собой логическое сочетание нескольких кассовых операций // (Запросы, GetStatus (), SetMode (), CancelCheck () и т.д.). ОбъектECR.NewDocument(); //ОбъектECR.SetMode(); Если ЕстьОшибкаККМ(ОбъектECR,6) = 1 Тогда Возврат 0; КонецЕсли; //{ "1021" Записать должность и ФИО кассира ОбъектECR.AttrNumber = 1021; ОбъектECR.AttrValue = СокрЛП(глПользователь.Наименование);//"Старший кассир Иванов И.И." ОбъектECR.WriteAttribute(); //} //{ "1203" Записать ИНН кассира ИННКассира = СокрЛП(глПользователь.я_Сотрудник.ФизЛицо.ИНН); Если ПустоеЗначение(ИННКассира) = 0 Тогда ОбъектECR.AttrNumber = 1203; ОбъектECR.AttrValue = ИННКассира; ОбъектECR.WriteAttribute(); Если ЕстьОшибкаККМ(ОбъектECR,7) = 1 Тогда Возврат 0; КонецЕсли; КонецЕсли; //}[+]_ //{ CheckType - Тип чека: // 1 - Приход // 2 - Возврат прихода // 4 - Расход // 5 - Возврат расхода // 7 - Коррекция прихода // 9 - Коррекция расхода ОбъектECR.CheckType = ТипЧека; //} //{ CheckMode - Режим формирования чека: // 0 - только в электронном виде без печати на чековой ленте // 1 - печатать на чековой ленте ЭлектронныйЧек = 0; Если МайлТелефон <> "" Тогда ОбъектECR.CheckMode = 0; ЭлектронныйЧек = 1; Иначе ОбъектECR.CheckMode = 1; КонецЕсли; //} ОбъектECR.OpenCheck(); //{ "1008" Запись контакта покупателя для отправки электронного чека ОбъектECR.AttrNumber = 1008; ОбъектECR.AttrValue = МайлТелефон;//"+79091235566" или "[email protected]" ОбъектECR.WriteAttribute(); //} //{ "1055" Применяемая система налогооблажения в чеке: // ОСН - 1 // УСН доход - 2 // УСН доход-расход - 4 // ЕНВД - 8 // ЕСН - 16 // ПСН - 32 ОбъектECR.AttrNumber = 1055; ОбъектECR.AttrValue = 1; ОбъектECR.WriteAttribute(); //} //ОбъектECR.AdvancedRegistration = TRUE;//РасширеннаяРегистрация Наименование печатается вместе с ценой и количеством //[-]serpent, 26.04.2017 ВыбДокумент.ВыбратьСтроки(); Пока ВыбДокумент.ПолучитьСтроку() = 1 Цикл ТекНоменклатура = ВыбДокумент.Номенклатура; Если ТипЗначенияСтр(ТекНоменклатура) = "Справочник" Тогда //Т.Е. Гипотетически это строки из Документов(Реализация или ВозвратОтПокупателя) ПредметРасчета = 1; ОригНаименование = СокрЛП(ТекНоменклатура.Наименование); СтрНаимТовара = Мин(ОригНаименование, Сред(ОригНаименование,1,ДлинаСтроки)); //Начало Регистрации товара или услуги ОбъектECR.BeginItem(); ОбъектECR.Name = СтрНаимТовара; ОбъектECR.Price = ВыбДокумент.Цена; ОбъектECR.Quantity = ВыбДокумент.Количество; ОбъектECR.Department = 0; // Если значение |Summ - Price * Quantity| > 0.01 , // то ККТ посчитает, что была скидка и будет при необходимости преобразовывать позицию, разделяя её на 2 Попытка ОбъектECR.Summ = ВыбДокумент.Сумма; Исключение //[+]serpent, 13.06.2018 //Это кривой ЧЕК, сумма документа не передается. Сумма=Цена !!! //Потом заменить ГРАБЛИ на передачу реквизита "Сумма" из Документа ОбъектECR.Summ = ВыбДокумент.Цена; КонецПопытки; //{ Признак предмета расчёта. Свойство ItemType может принимать значения: // 1 - товар, за исключением подакцизного товара // 2 - подакцизный товар // 3 - работа // 4 - услуга // 5 - приём ставок при деятельность по организации и проведению азартных игр // 6 - выплата выигрышей в азартных играх // 7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей // 8 - выплата выигрышей в лотереях // 9 - прав на использование результатов интеллектуальной деятельности или средств индивидуализации // 10 - аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета // 11 - предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор) // 12 - предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11 ОбъектECR.ItemType = ПредметРасчета; //} //{ Признак способа расчёта. Свойство PaymentMode может принимать значения: // 1 - Полная предварительная оплата до момента передачи предмета расчета // 2 - Частичная предварительная оплата до момента передачи предмета расчета // 3 - Аванс // 4 - Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета // 5 - Частичная оплата предмета расчета в момент его передачи с последующей оплатой в кредит // 6 - Передача предмета расчета без его оплаты в момент его передачи с последующей оплатой в кредит // 7 - Оплата предмета расчета после его передачи с оплатой в кредит (оплата кредита) ОбъектECR.PaymentMode = СпособРасчета; //} //{ TaxTypeNumber - Номер налога: // 0 - Налог из секции // 1 - НДС 0% // 2 - НДС 10% // 3 - НДС 18% // 4 - НДС не облагается // 5 - НДС с расчётной ставкой 10% // 6 - НДС с расчётной ставкой 18% Если ВыбДокумент.СтавкаНДС = локНДС10 Тогда ОбъектECR.TaxTypeNumber = 2; ИначеЕсли ВыбДокумент.СтавкаНДС = локНДС18 Тогда ОбъектECR.TaxTypeNumber = 3; ИначеЕсли ВыбДокумент.СтавкаНДС = локНДС20 Тогда //[+]serpent, 06.12.2018 ОбъектECR.TaxTypeNumber = 3; ИначеЕсли ВыбДокумент.СтавкаНДС = локБезНДС Тогда ОбъектECR.TaxTypeNumber = 4; Иначе ОписаниеРезультата = "У товара неопределенная ставка НДС, чек отменен."; ОбъектECR.CancelCheck(); Возврат 0; КонецЕсли; //} //{ ОТКЛЮЧЕНО Способ исчисления суммы налога. Доступные значения TaxMode: // 0 - налог расчитывается от суммы позиции // 1 - налог расчитывается от цены позиции //ОбъектECR.TaxMode = 1; //} //{ Сумма налога TaxSumm. Если передаётся 0, то ККТ считает самостоятельно по TaxTypeNumber и TaxMode. // В противном случае в ОФД отправляется переданная сумма, но при значении настройки Т2Р1П114 бит 1 = 1 ККТ // бедет осуществлять контроль переданных данных, при чём контроль в будущем нельзя будет отключить (Русинова). Если ДатаДокОсн = "" Тогда ОбъектECR.TaxSumm = 0; Иначе Если ТекущаяДата() < '01.01.2019' Тогда ОбъектECR.TaxSumm = 0; Иначе Если ДатаДокОсн < '01.01.2019' Тогда //[+]serpent, 17.12.2018 Если ВыбДокумент.СтавкаНДС = локНДС18 Тогда ОбъектECR.TaxMode = 0; ОбъектECR.TaxSumm = ВыбДокумент.СуммаНДС; Иначе ОбъектECR.TaxSumm = 0; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; //} //Окончание Регистрации ОбъектECR.EndItem(); Иначе //Будем считать что это на основании ПКО введен РКО и теперь мы решили сделать возврат суммы ОригНаименование = СокрЛП(ТекНоменклатура); СтрНаимТовара = Мин(ОригНаименование, Сред(ОригНаименование,1,ДлинаСтроки)); // Регистрация товара или услуги ОбъектECR.BeginItem(); ОбъектECR.Name = СтрНаимТовара; ОбъектECR.Price = ВыбДокумент.Цена; ОбъектECR.Quantity = ВыбДокумент.Количество; ОбъектECR.Department = 0; ОбъектECR.TaxTypeNumber = ВыбДокумент.СтавкаНДС;// 1-по умолчанию ОбъектECR.Summ = ВыбДокумент.Цена*ВыбДокумент.Количество; ОбъектECR.ItemType = 1; ОбъектECR.PaymentMode = 1; //ОбъектECR.TaxMode = 1; ОбъектECR.TaxSumm = 0; ОбъектECR.EndItem(); КонецЕсли; ////[-]serpent, 26.04.2017 //Если ЕстьОшибкаККМ(ОбъектECR,8) = 1 Тогда // Возврат 0; //КонецЕсли; ////[-]_ КонецЦикла; // Нефискальная печать с информацией //ОбъектECR.Caption = "Можно напечатать все что угодно"; //ОбъектECR.PrintString(); //{ ОТКЛЮЧЕНО Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. // Таким образом недоступны: надбавки, назначение "на позицию", процентные значения. SummCharge(), PercentsCharge(), // PercentsDiscount () и ResetChargeDiscount () более недоступны // Destination - Назначение скидки: // 0 - на чек // 1 - на позицию (недоступно) //ОбъектECR.Destination = 0; //ОбъектECR.Summ = 0.70; //ОбъектECR.SummDiscount(); //} // Нефискальная печать с информацией о номере документа и Торг.Представителе //{ СтрДопИнформ = ""; Если КодТоргПред <> "" Тогда СтрДопИнформ = СтрДопИнформ + "КОД ТП: "+КодТоргПред; КонецЕсли; Если НомерПечДока <> "" Тогда Добавок = ""; Если ТипКоррекции = 1 Тогда Добавок = " ПКО"; ИначеЕсли ТипКоррекции = 2 Тогда Добавок = " ПКО"; Иначе Добавок = ?(ТипЧека=1," ПКО"," РКО"); КонецЕсли; СтрДопИнформ = СтрДопИнформ +Добавок+" №: "+НомерПечДока; КонецЕсли; // ДС- символ «удвоения ширины» ОбъектECR.Caption = "--------------"+ДС+"И"+ДС+"н"+ДС+"ф"+ДС+"о"+ДС+"р"+ДС+"м"+ДС+"а"+ДС+"ц"+ДС+"и"+ДС+"я-------------";//не более 48-символов. ОбъектECR.PrintString(); ОбъектECR.Caption = СтрДопИнформ; ОбъектECR.PrintString(); ОбъектECR.Caption = "-----------------------------------------------"; ОбъектECR.PrintString(); //} // Нефискальная печать с информацией Если (ТипКоррекции=1) или (ТипКоррекции=2) Тогда ОбъектECR.Caption = "ВНИМАНИЕ, чек коррекция!"; ОбъектECR.PrintString(); КонецЕсли; //{ TypeClose - Тип оплаты: // 0 - Наличными // 1 - Электронными средствами платежа ОбъектECR.TypeClose = 0;//Тип Закрытия чека - НАЛИЧНЫМИ //ОбъектECR.Summ = ВыбДокумент.Итог("Сумма"); //ОбъектECR.Payment(); //Если ЕстьОшибкаККМ(ОбъектECR,9) = 1 Тогда // Возврат 0; //КонецЕсли; //} ОбъектECR.CloseCheck(); Если ЕстьОшибкаККМ(ОбъектECR,10) = 1 Тогда Возврат 0; КонецЕсли; //Получаем Номера ОбъектECR.RegisterNumber = 51; ОбъектECR.GetRegister(); НомерЧека = ОбъектECR.НомерДокумента; НомерФД = ОбъектECR.ФискальныйПризнак; СуммаЧека = ОбъектECR.Сумма; //Запишем в реестр номер Инфа = "НД: "+СокрЛП(НомерПечДока)+" НЧ: "+СокрЛП(НомерЧека)+" ФД: "+СокрЛП(НомерФД)+" Сумма: "+СокрЛП(СуммаЧека)+?(ЭлектронныйЧек=1," Электронный",""); глЗаписатьИнфуВЛогФайл(локИмяФайлаЧеки,Инфа); Возврат 1; КонецФункции // ПечататьЧекФЗ54_105() |
|||
58
serpentt
22.03.19
✎
13:42
|
(56) нет
только с разными ФН |
|||
59
Garykom
гуру
22.03.19
✎
13:45
|
(58) Понятно что номера ФН будут разные.
Суть в том что берем новую такую же ККТ, КЗ10 привязан к заводскому номеру. Делаем клон из старой ККТ прописывая туда данные из новой. Регаем обе в ФНС под разными регистрационными номерами с разными ФН. Не прокатит? |
|||
60
Garykom
гуру
22.03.19
✎
13:47
|
Суть могут ли быть дубли заводских номеров ККТ, например у разных производителей?
|
|||
61
Сияющий в темноте
22.03.19
✎
13:56
|
При регистрации заводской номер проверяется в реестре,и дублей быть не может,но после регистрации,заводской номер нигде не используется до замены фн.
|
|||
62
Mikhail Volkov
22.03.19
✎
15:45
|
(48) В ExtForms\Equip\fr_comm.ert функция ПечататьЧек(). Но ФискальныйПризнак в Альфа-Авто получить фрагментами (26), (37) наверное не получится, если только штатную ВыполнитьКомандуОборудования("ФР",GUID_ФР,"ПробитьЧек",SafeArrayПараметрыЧека,ТаймаутФР,ТекстОшибки) заменить типа (57)?
|
|||
63
Garykom
гуру
22.03.19
✎
15:47
|
(62) Ты лучше объясни почему еще используете эту кривую работу/пробивку через сервер защиты?
Там переписать дело пары дней. |
|||
64
Mikhail Volkov
22.03.19
✎
15:50
|
(63) Особой нужды не было.
|
|||
65
Garykom
гуру
22.03.19
✎
15:51
|
(64) И нет проблем с хитрыми пробивками? Например делить чеки по СНО или еще что?
|
|||
66
Сияющий в темноте
22.03.19
✎
17:43
|
вообщн,и у штриха и у атола можно получить весь фискальный документ в виде тлв структур,через любой драйвер от 8 до 10.
система защиты раруса позволяет работать с одной кассой с разных рабочих мест,собственно,это единственный ее плюс. |
|||
67
Garykom
гуру
22.03.19
✎
17:49
|
(66) Есть множество способов делать тоже самое и даже через инет пробивать на удаленную ККТ.
В ответ получить слип и вывести его на чековый принтер с верным ФП )) Жаль что по закону ККТ должна быть именно в месте расчета если наличными платят. Так бы можно было одну реальную ККТ с ФН использовать на организацию. |
|||
68
Mikhail Volkov
23.03.19
✎
06:29
|
(65) Были конечно, но их решил штатными средствами. А ФискальныйПризнак похоже ими не получить, если вместо них не использовать свою функцию подобную (57)?
(66) > система защиты раруса позволяет работать с одной кассой с разных рабочих мест,собственно,это единственный ее плюс. Для Альфа-Авто даже терминальный режим внештатный. |
|||
69
Garykom
гуру
23.03.19
✎
13:50
|
(68) Можно слегка допилить и все будет штатное.
И нет проблем с долгим запуском и тем что "флешка" из usb пропадет на сервере. |
|||
70
Mikhail Volkov
25.03.19
✎
19:14
|
На https://forum.infostart.ru/forum28/topic167314/?PAGEN_1=56#message2178573 мне подсказали: когда вызывается команда ВыполнитьКомандуОборудования, то управление переходит в компоненту защиты Рарус, после этого уже компонента вызывает обработку "Торговое оборудование", с его формой, соответствующей функционалу определенного оборудования. В обработке "Торговое оборудование" нашел функцию ОборудованиеПробитьЧек(), в которой из массива входных параметров получают фискальные реквизиты чека:
ПараметрыШапкиЧека=ВходныеПараметры.GetValue(0,0); флФиск = ПараметрыШапкиЧека.GetValue(1, 0); Всего = ПараметрыШапкиЧека.GetValue(2, 0); Итог = ПараметрыШапкиЧека.GetValue(3, 0); СкидкаНаЧек = ПараметрыШапкиЧека.GetValue(4, 0); : НомерСмены = ПараметрыШапкиЧека.GetValue(9, 0); НомерЧека = ПараметрыШапкиЧека.GetValue(10, 0); НомерДокумента = ПараметрыШапкиЧека.GetValue(11, 0); ДатаЧека = ПараметрыШапкиЧека.GetValue(12, 0); : ВыделятьНалоги = ПараметрыШапкиЧека.GetValue(18, 0); ПарольКассираЧека=ПараметрыШапкиЧека.GetValue(19, 0); СНО = ПараметрыШапкиЧека.GetValue(23, 0); Назначение первых 19 и 23 элементов массива расписаны. А в каком элементе массива находится ФискальныйПризнак - нет, и вообще, есть ли такой? |
|||
71
Mikhail Volkov
26.03.19
✎
07:34
|
Похоже нет такого элемента массива со значением ФискальныйПризнак. Его сперва нужно получить, типа:
// Получить параметры чека Функция ПолучитьПараметрыЧека(НомерСмены,НомерЧека,НомерДок,ДатаЧека,Фискальный = Истина); // Сохраняем номер,дату и время чека Устройство.ПолучитьСостояние(); КодОшибки = РезультатВыполненияДействия(); Если КодОшибки <> 0 Тогда Возврат КодОшибки; КонецЕсли; ПроверкаПоддержки54ФЗ(); Если Поддерживает54ФЗ Тогда Устройство.НомерРегистра = 53; КодОшибки = ВыполнитьКоманду("ПолучитьРегистр"); Если КодОшибки <>0 Тогда Возврат КодОшибки; КонецЕсли; // Получим номер смены НомерСмены = -1; НомерСмены = Число(Устройство.Смена); Если НомерСмены=0 Тогда НомерСмены=-1; КонецЕсли; Если Фискальный Тогда НомерЧека = Устройство.КоличествоИтераций; Если НомерЧека=0 Тогда НомерЧека=-1; КонецЕсли; Устройство.НомерРегистра = 52; КодОшибки = ВыполнитьКоманду("ПолучитьРегистр"); Если КодОшибки <>0 Тогда Возврат КодОшибки; КонецЕсли; НомерДок = Устройство.НомерДокумента; Иначе НомерДок = Устройство.НомерЧека - 1; КонецЕсли; Иначе // Сохраняем номер чека Устройство.ПолучитьСостояние(); КодОшибки = РезультатВыполненияДействия(); Если КодОшибки <> 0 Тогда Возврат КодОшибки; КонецЕсли; Устройство.НомерРегистра = 19; КодОшибки = ВыполнитьКоманду("ПолучитьРегистр"); Если КодОшибки <>0 Тогда Возврат КодОшибки; КонецЕсли; НомерЧека = Устройство.НомерЧека-1; НомерДок = Устройство.НомерДокумента-1; // Получим номер закрытой смены НомерСмены = -1; Устройство.НомерРегистра = 21; // номер текущей смены КодОшибки = ВыполнитьКоманду("ПолучитьРегистр"); Если КодОшибки <>0 Тогда Возврат КодОшибки; КонецЕсли; НомерСмены = Число(Устройство.Смена); Если НомерСмены=0 Тогда НомерСмены=-1; КонецЕсли; КонецЕсли; // Сохраняем дату и время чека ДатаЧека=Формат(Устройство.Год,"ЧЦ=4; ЧВН=; ЧГ=0")+"."+ Формат(Устройство.Месяц,"ЧЦ=2; ЧВН=; ЧГ=0")+"."+ Формат(Устройство.День,"ЧЦ=2; ЧВН=; ЧГ=0")+" "+ Формат(Устройство.Час,"ЧЦ=2; ЧВН=; ЧГ=0")+":"+ Формат(Устройство.Минута,"ЧЦ=2; ЧВН=; ЧГ=0")+":"+ Формат(Устройство.Секунда,"ЧЦ=2; ЧВН=; ЧГ=0"); Возврат 0; КонецФункции // Вернуть параметры чека Процедура ВернутьПараметрыЧека(НомерСмены,НомерЧека,НомерДок,ДатаЧека) // Возвращает данные пробитого на ФР чека // .. НомерЧека = Число(<Номер пробитого чека>) // .. ДатаЧека = Дата(<Дата пробитого чека>) ПараметрыВозврата=Рарус_Компонента.СоздатьПараметры(4,1); ПараметрыВозврата.SetValue(0,0,НомерСмены); ПараметрыВозврата.SetValue(1,0,НомерЧека); ПараметрыВозврата.SetValue(2,0,НомерДок); ПараметрыВозврата.SetValue(3,0,ДатаЧека); КонецПроцедуры // ВернутьПараметрыЧека А потом поместить в элемент массива, например, так: ПараметрыВозврата.SetValue(4,0,ФискальныйПризнак); К сожалению этого нет. А как его получить не знаю..? |
|||
72
Mikhail Volkov
28.03.19
✎
13:18
|
(38) В моих чеках вроде строка из 10 цифр. 10 - это стандарт, длиннее бывает?
|
|||
73
Mikhail Volkov
28.03.19
✎
15:29
|
Вроде получилось: в функцию ПолучитьПараметрыЧека(НомерСмены,НомерЧека,НомерДок,ДатаЧека,Фискальный = Истина,НомерФПД = "") вставил: НомерФПД = Устройство.ФискальныйПризнак; после Устройство.НомерРегистра = 52; и изменил
// Вернуть параметры чека Процедура ВернутьПараметрыЧека(НомерСмены,НомерЧека,НомерДок,ДатаЧека,НомерФПД) //+МВ 27.03.2019 // Возвращает данные пробитого на ФР чека // .. НомерЧека = Число(<Номер пробитого чека>) // .. ДатаЧека = Дата(<Дата пробитого чека>) ПараметрыВозврата=Рарус_Компонента.СоздатьПараметры(5,1); //+МВ 27.03.2019 ПараметрыВозврата.SetValue(0,0,НомерСмены); ПараметрыВозврата.SetValue(1,0,НомерЧека); ПараметрыВозврата.SetValue(2,0,НомерДок); ПараметрыВозврата.SetValue(3,0,ДатаЧека); ПараметрыВозврата.SetValue(4,0,НомерФПД); //+МВ 27.03.2019 КонецПроцедуры // ВернутьПараметрыЧека а во ФронтКассира добавил: Попытка КоличествоСтрок=0; КоличествоСтолбцов=0; SafeArrayПараметрыЧека.GetBounds(КоличествоСтрок,КоличествоСтолбцов); НомерСмены=Число(SafeArrayПараметрыЧека.GetValue(0,0)); НомерЧека=Число(SafeArrayПараметрыЧека.GetValue(1,0)); ДатаФР=Вычислить("'"+SafeArrayПараметрыЧека.GetValue(3,0)+"'"); НомерДокумента=Число(SafeArrayПараметрыЧека.GetValue(2,0)); НомерФПД=0; //+МВ 27.03.2019 Если КоличествоСтрок > 4 Тогда НомерФПД=Число(SafeArrayПараметрыЧека.GetValue(4,0)); КонецЕсли; СтруктураВозвратныхПараметров=Новый Структура("ДатаФР,НомерЧека,НомерДокумента,НомерСмены,НомерФПД",ДатаФР,НомерЧека,НомерДокумента,НомерСмены,НомерФПД); //-МВ Исключение ТекстОшибки="Ошибка получения фискальных реквизитов пробитого чека: "+ОписаниеОшибки(); КонецПопытки; Теперь в чеке имею НомерФПД - Фискальный признак документа. Хочу в форме чека на вкладке Фискальные реквизиты вывести в виде гиперссылки, при ее нажатии выводился чек с сайта ОФД. Как? |
|||
74
Mikhail Volkov
28.03.19
✎
16:08
|
На Такском https://receipt.taxcom.ru/ кроме ФПД нужно вводить Итог - сумму расчета, на https://check.ofd.ru/ - еще ФД. А так, чтобы в ссылке указать ФПД, и получить чек - нельзя?
|
|||
75
Mikhail Volkov
28.03.19
✎
17:53
|
А вот Первый ОФД https://consumer.1-ofd.ru/#/landing имеет Поиск по ссылке: Вставьте ссылку из письма с электронной копией чека или из СМС на вашем телефоне отправленную Вам при покупке в магазине. Как эту ссылку сформировать из известных фискальных реквизитов чека?
|
|||
76
Garykom
гуру
28.03.19
✎
18:00
|
У ФНС нет какой то штуки/сервиса для проверки чека?
|
|||
77
Mikhail Volkov
28.03.19
✎
19:05
|
(76) Вроде есть Проверка с помощью мобильного приложения от ФНС https://www.ekam.ru/blogs/pos/proverka-podlinnosti-cheka - сканируешь телефоном штрихкод, и получаешь чек с сайта ОФД. А вот просто по цифровому ФПД...?
|
|||
78
Garykom
гуру
28.03.19
✎
19:31
|
||||
79
Mikhail Volkov
29.03.19
✎
06:17
|
(78) https://buhguru.com/kass-tekh/api-proverka-chekov-fns.html ...подать заявку непосредственно на подключение к сервису «API Проверка чеков» - да, не все так просто как хотелось.
Вчера, когда отлаживал свои изменения (73), а отлаживал в рабочей базе с реальным ФР АТОЛ (эмуляторы не формируют ФПД), вылезло еще 2 чека. При закрытии кассовой смены вышло предупреждение, что обороты ККМ и ФР не совпадают, т.е. в ОФД по 1-му чеку отправлено всего 3 чека. Смену закрыли, в Альфа-Авто все нормально. Но что делать с 2-я лишними чеками отправленными в ОФД? |
|||
80
NorthWind
29.03.19
✎
06:46
|
(31) когда будут очередные новшества в ФФД или когда будет очередная переобувка законодательства, которая коснется ККТ, как это случилось с НДС 20% только что. В зависимости от того что произойдет раньше. Восьмые дрова допиливать не будут под такие новшества, уже сказали.
|
|||
81
Mikhail Volkov
29.03.19
✎
09:22
|
(79)+ Может в копии базы отбить 2 возвратных чека по 1-му чеку, чтобы в ОФД отослались?
|
|||
82
mishaPH
модератор
29.03.19
✎
10:17
|
Колелги еще вопрос.
а размер шрифта при печати чего-то в чек ( строки рекламной например ) можно менять? и жирность |
|||
83
Garykom
гуру
29.03.19
✎
10:19
|
(81) Если по ЕНВД чеки то забить, иначе да возвраты пробить
|
|||
84
Garykom
гуру
29.03.19
✎
10:20
|
(82) Можно в пределах то умеет ККТ
|
|||
85
mishaPH
модератор
29.03.19
✎
10:25
|
(84) а как атоловскому драйверу сказать что эту строку вот так печатать)
|
|||
86
Mikhail Volkov
29.03.19
✎
14:12
|
(78) Оказывается чек надо открывать на том сайте ОФД, с которым договор. у меня Такском-Касса:
// Открыть чек на сайте ОФД Такском-Касса //+МВ 29.03.2019 Процедура НомерФПДНажатие(Элемент) Если ПустаяСтрока(НомерФПД) Тогда Возврат; КонецЕсли; ЗапуститьПриложение("https://receipt.taxcom.ru/v01/show?fp=" + СокрЛП(НомерФПД) + "&s=" + Формат(СуммаДокумента,"ЧГ=0") + "&sf=False&sfn=False"); КонецПроцедуры Правда чеков с копейками пока нет... |
|||
87
Garykom
гуру
29.03.19
✎
14:15
|
(85) LIBFPTR_PARAM_FONT для 10-го драйвера и там еще много что есть
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "Строка"); fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_RIGHT); fptr.setParam(fptr.LIBFPTR_PARAM_FONT, 2); fptr.setParam(fptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, True); fptr.setParam(fptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, True); fptr.printText(); http://integration.atol.ru/?pascal#da8644ef4c |
|||
88
mishaPH
модератор
29.03.19
✎
15:27
|
(87) а для 8го это возможно?
|
|||
89
Garykom
гуру
29.03.19
✎
15:32
|
(88) PrintField
|
|||
90
mishaPH
модератор
29.03.19
✎
15:48
|
||||
91
Garykom
гуру
29.03.19
✎
16:01
|
(90) Там ограничение что в одной строке текст разными размерами/стилем только на отдельных моделях ККТ редких.
|
|||
92
mishaPH
модератор
29.03.19
✎
17:33
|
(91) т.е. построчно разбивать и только в одной строке можно изменять шрифт. для одной строки параметры задаются?
|
|||
93
Garykom
гуру
29.03.19
✎
17:48
|
(92) угу
|
|||
94
Garykom
гуру
29.03.19
✎
17:49
|
(93)+ Точнее строка может перенестись и будет тем же шрифтом
|
|||
95
Mikhail Volkov
30.03.19
✎
12:01
|
(83) Нет, ОСНО. Из-за НДС?
|
|||
96
Mikhail Volkov
31.03.19
✎
06:45
|
(95)+ А может забить, не делать никаких левых возвратов? Для чего ставятся кассовые аппараты, чтобы контролировать продажи, выручку... В данном случае по одной продажи отбит чек, который трижды ушел в ОФД. Нарушений нет (или есть?). В базе 1С все нормально, на отчетность этот факт никак не повлияет!?
|
|||
97
Garykom
гуру
31.03.19
✎
07:09
|
(96) НДС с чека трижды заплотите и ок
|
|||
98
Mikhail Volkov
01.04.19
✎
06:15
|
(97) НДС платится согласно отчетности по базе. А в базе одна продажа, один чек, а не три!?
|
|||
99
Garykom
гуру
01.04.19
✎
06:28
|
(98) НДС платится по поданной декларации, а ее надо подавать согласно (на основе данных) пробитым чекам или другим первичным документам.
Чек это в рознице первичный документ же. |
|||
100
Mikhail Volkov
01.04.19
✎
07:01
|
(99) Но чек один, это в ОФД их три!?
|
|||
101
Garykom
гуру
01.04.19
✎
07:18
|
(100) Ну посмотрят что в ФН записано при спорах. Если там тоже три то платите за три ))
|
|||
102
Mikhail Volkov
02.04.19
✎
12:22
|
Ладно, отбил возвратные чеки в копии 1С, на том же ФР, ушли в ОФД...
И вроде есть контроль уже отбитых чеков: Данный документ уже был пробит на фискальном регистраторе. Повторное выполнение операции запрещено. А как вносятся исправления в отбитый чек? Например, клиент купил товар, ему отбили чек. А ему что то не понравилось, например, модель немного не та. Товар заменили, может и доплачивать не пришлось, но чек надо исправить. Как вносятся исправления в отбитый чек? |
|||
103
Garykom
гуру
02.04.19
✎
12:33
|
(102) Возврат + Новый правильный чек
|
|||
104
Mikhail Volkov
02.04.19
✎
12:54
|
(103) Только так, без вариантов?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |