Вход | Регистрация
    1  2   

Получить данные чека когда он пробит в ККМ

Получить  данные чека когда он пробит в ККМ
Я
   mishaPH
 
19.03.19 - 09:06
Коллеги. А возможно ли кроме номера чека ККМ получить при удачном пробитии оного другие параметры.
Есть некие номера ФН ФД ФП и дату время которая пошла на чек (с таймера самого ККМ)

Атоловские драйвера
 
 
   Cyberhawk
 
1 - 19.03.19 - 09:23
Конечно
   mishaPH
 
Модератор
2 - 19.03.19 - 09:26
о. а описание этого есть где-то?
   Cyberhawk
 
3 - 19.03.19 - 09:28
В ПДФ-файлике с описанием АПИ драйвера
   serpentt
 
4 - 19.03.19 - 09:35
ОбъектECR.RegisterNumber = 51;
ОбъектECR.GetRegister();
НомерЧека = ОбъектECR.НомерДокумента;
НомерФД   = ОбъектECR.ФискальныйПризнак;
   serpentt
 
5 - 19.03.19 - 09:37
51 регистр
Данные по последнему фискальному
чеку (DocNumber,
LastCheckType, Summ, Day,
Month, Year, Minute, Hour,
FiscalSign)
   mishaPH
 
Модератор
6 - 19.03.19 - 09:42
(4) мерси.

вот определились. надо получить параметр с чека ФН и ФД
НомерЧека это ФД? иди Номер ФД у вас это поле ФПД.

нам надо чек из налоговой полученный через контроль чеков точно опознать с пробитым в магазине. по идее ФН_ФД как раз уникальный для данного ККМ номер чека.
   serpentt
 
7 - 19.03.19 - 09:45
DocNumber ФД
FiscalSign ФПД
   mishaPH
 
Модератор
8 - 19.03.19 - 09:47
(7) еще раз для меня тупого. ФН и ФД как вызвать у атола. ФПД не надо.
   serpentt
 
9 - 19.03.19 - 09:49
ФПД(абривеатуры) у Атола уже нет давно

DocNumber ФД
FiscalSign ФП
   PaulBC
 
10 - 19.03.19 - 09:50
еще можно в личном кабинете ОФД посмотреть
   Aleksey
 
11 - 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
   mishaPH
 
Модератор
12 - 19.03.19 - 09:52
(9) большое спасибо. попробую.
ОбъектECR.RegisterNumber = 51;
ОбъектECR.GetRegister();

это обязательно вызывать или уже у Объекта после пробития чека все уже известно?
сейчас работает конструкция еще с бог знает каких времен     
НомерЧека = Объект.НомерЧека;
   mishaPH
 
Модератор
13 - 19.03.19 - 09:53
(10) да тут как раз лазить туда долго. да и в ЛК еще может быть не передано

все эти параметры для точного опознавания чека в будущем надо при пробитии в док запомнить
   serpentt
 
14 - 19.03.19 - 09:53
(12) обращение к регистру ОБЯЗАТЕЛЬНО
   serpentt
 
15 - 19.03.19 - 09:54
Я эти реквизиты запоминаю в Документе и сразу могу сравнить с ОФД
   mishaPH
 
Модератор
16 - 19.03.19 - 09:56
(14) ок. (15) ну вот как раз для этого и делаем
   Garykom
 
17 - 19.03.19 - 10:35
(0) Практически все можно, изучай http://integration.atol.ru/?pascal#c6464ee6ea
   Garykom
 
18 - 19.03.19 - 10:41
(17)+
Процедура ПроверкаСвязиККТ(КассирФИО, КассирИНН)
    
    ОбъектДрайвера = Новый COMобъект("AddIn.Fptr10");
    
    // Подключение по порту USB

    ОбъектДрайвера.setSingleSetting(ОбъектДрайвера.LIBFPTR_SETTING_PORT, Строка(ОбъектДрайвера.LIBFPTR_PORT_USB));
    ОбъектДрайвера.applySingleSettings();
    ОбъектДрайвера.open();
    
    ОбъектДрайвера.setParam(1021, СокрЛП(КассирФИО));
    ОбъектДрайвера.setParam(1203, СокрЛП(КассирИНН));
    ОбъектДрайвера.operatorLogin();
    
    ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_FN_DATA_TYPE, ОбъектДрайвера.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
    ОбъектДрайвера.fnQueryData();
    
    ОшибкаТО = ОбъектДрайвера.errorDescription();
    Если ОшибкаТО = "Ошибок нет" Тогда
        СтатусОбмена = ОбъектДрайвера.getParamInt(ОбъектДрайвера.LIBFPTR_PARAM_OFD_EXCHANGE_STATUS);
        КоличествоНеотправленных = ОбъектДрайвера.getParamInt(ОбъектДрайвера.LIBFPTR_PARAM_DOCUMENTS_COUNT);
        НомерПервогоНеотправленного = ОбъектДрайвера.getParamInt(ОбъектДрайвера.LIBFPTR_PARAM_DOCUMENT_NUMBER);
        ДатаВремяПервогоНеотправленного = ОбъектДрайвера.getParamDateTime(ОбъектДрайвера.LIBFPTR_PARAM_DATE_TIME);
        ЕстьСообщенияДляОФД = ОбъектДрайвера.getParamBool(ОбъектДрайвера.LIBFPTR_PARAM_OFD_MESSAGE_READ);
        
        Сообщить("Кол-во неотправленных "+КоличествоНеотправленных);
        Сообщить("Есть сообщения для ОФД: "+ЕстьСообщенияДляОФД+" (Статус обмена: "+СтатусОбмена+")");
        Сообщить("Первый неотправленный № "+НомерПервогоНеотправленного+" от "+ДатаВремяПервогоНеотправленного);
    Иначе
        Сообщить(""+ОшибкаТО);
    КонецЕсли;
    
    ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_DATA_TYPE, ОбъектДрайвера.LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME);
    ОбъектДрайвера.queryData();
    
    ОшибкаТО = ОбъектДрайвера.errorDescription();
    Если ОшибкаТО = "Ошибок нет" Тогда
        ДатаВремяСвязиСОФД = ОбъектДрайвера.getParamDateTime(ОбъектДрайвера.LIBFPTR_PARAM_DATE_TIME);
        Сообщить("Последняя связь с ОФД "+ДатаВремяСвязиСОФД);
    Иначе
        Сообщить(""+ОшибкаТО);
    КонецЕсли;
    
    // Состояние смены

    ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_DATA_TYPE, ОбъектДрайвера.LIBFPTR_DT_SHIFT_STATE);
    ОбъектДрайвера.queryData();
    
    ОшибкаТО = ОбъектДрайвера.errorDescription();
    Если ОшибкаТО = "Ошибок нет" Тогда
        ОбъектДрайвера_СостояниеСмены = ОбъектДрайвера.getParamInt(ОбъектДрайвера.LIBFPTR_PARAM_SHIFT_STATE);
        Если ОбъектДрайвера_СостояниеСмены = ОбъектДрайвера.LIBFPTR_SS_CLOSED Тогда
            Сообщить("Кассовая смена закрыта.");
        ИначеЕсли ОбъектДрайвера_СостояниеСмены = ОбъектДрайвера.LIBFPTR_SS_OPENED Тогда
            Сообщить("Кассовая смена открыта.");
        ИначеЕсли ОбъектДрайвера_СостояниеСмены = ОбъектДрайвера.LIBFPTR_SS_EXPIRED Тогда
            Сообщить("Кассовая смена истекла!");
        Иначе
            Сообщить("Не смогли получить состояние кассовой смены!");
        КонецЕсли;
    Иначе
        Сообщить(""+ОшибкаТО);
    КонецЕсли;
    
    ОбъектДрайвера.close();
    ОбъектДрайвера = Неопределено;
    
КонецПроцедуры

   mishaPH
 
Модератор
19 - 20.03.19 - 10:24
(4) кстати а к регистру обращаться уже после закрытия чека перед коммандо отключится от фр?
   Garykom
 
20 - 20.03.19 - 10:26
(19) Это неужели еще через 8-й драйвер пытаешься?
Забей и перепиши уже все через 10-е.
   Garykom
 
21 - 20.03.19 - 10:27
(20)+ Могу примеры кода пробивки и прочего дать готовые для 1С и подсказать если что не получится.
   mishaPH
 
Модератор
22 - 20.03.19 - 10:34
(20) я не могу в 200 магазинах менять драйвера ккм. это вообще не мое дело
   mishaPH
 
Модератор
23 - 20.03.19 - 10:35
надо из имеющегося вытащить или послать тех кому это надо из за невозможности
   Garykom
 
24 - 20.03.19 - 11:07
(22) Так один хрен скоро менять придется вынужденно в спешке и с матами.
   mishaPH
 
Модератор
25 - 20.03.19 - 11:08
(24) зачем и когда? с этого года вроде итак новый формат
   mishaPH
 
Модератор
26 - 20.03.19 - 12:22
ОбъектECR.RegisterNumber = 51;
ОбъектECR.GetRegister();
НомерЧека = ОбъектECR.НомерДокумента;
НомерФД   = ОбъектECR.ФискальныйПризнак;

конструкция на 8х драйверах работает. но
DocNumber ФД  верный
FiscalSign ФП есть но номер не тот что на чеке потом.

а ФН вообще в Объекте не нашел.

Кстати на чеке 2 номера ккт ЗН и РН
ЗН заводской наверное и виден в Объекте
а если чек получить через прогу налоговую с шк то там один номер и подозреваю не заводской.

нужен ФН и ФД тогда точно чтобы получить чек из налоговой и точно его найти в 1с
   mishaPH
 
Модератор
27 - 21.03.19 - 09:09
как ФН получить так что то нигде найти не могу. Может там кроме 51 регистра еще какие есть и данные там?
   Mikhail Volkov
 
28 - 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));
    СтруктураВозвратныхПараметров=Новый Структура("ДатаФР,НомерЧека,НомерДокумента,НомерСмены",ДатаФР,НомерЧека,НомерДокумента,НомерСмены);
Или все же возможно получить Фискальный признак чека?
   Garykom
 
29 - 21.03.19 - 10:51
(28) Когда уже снимешь нафуй защиту с этой древней альфы и переделаешь работу с ККТ нормально?
   Garykom
 
30 - 21.03.19 - 11:12
Хм понимаешь же что в один прекрасный момент 8-й драйвер атола всё.
А кто будет переписывать эту систему защиты на 10-й драйвер это большой вопрос, очень сомневаюсь ибо конфа устарела.
 
 
   mishaPH
 
Модератор
31 - 21.03.19 - 12:39
(30) когда и почему?
   НаборДанных
 
32 - 21.03.19 - 13:08
(30)Альфа так-то до сих пор не работает с драйверами выше 8.16.5, и так всё, что требуется на сегодняшний день согласно формата 1.05 реализовано
   Garykom
 
33 - 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=260491&#entry260491

После 2019 года поддержки для 8-й и 9-й версий атол сказал не будет, новые версии уже не выпускают с 2018, но патчи для старых делают еще.
   Garykom
 
34 - 21.03.19 - 13:12
Ну маркировка для автошин и возможно расширят до 2024 перечень что еще.
Если есть планы менять альфу 4 в ближайшие 5 лет надо или придется много ее пилить.
   Mikhail Volkov
 
35 - 21.03.19 - 13:21
(30) Фрагмент (28) взял из Альфа-Авто 4.1, но в 5.1.15.10 он не изменился. По поводу драйверов АТОЛ 1С-Рарус задавался вопрос: https://rarus.ru/forum/messages/forum7/topic11493/message81010/#message81010 Ответ в (32).
   mishaPH
 
Модератор
36 - 21.03.19 - 14:04
(33) понятно.. а из 8й то можно вытянуть поле ФН чека? пока с этим разбираемся
   serpentt
 
37 - 21.03.19 - 14:05
(26)
У меня все ТО и из регистра и на чеке...
Обращение к регистру сразу после закрытия чека
ОбъектECR.CloseCheck();
    
Если ЕстьОшибкаККМ(ОбъектECR,10) = 1 Тогда
    Возврат 0;
КонецЕсли;
    
//Получаем Номера

ОбъектECR.RegisterNumber = 51;
ОбъектECR.GetRegister();
НомерЧека = ОбъектECR.НомерДокумента;
НомерФД   = ОбъектECR.ФискальныйПризнак;
СуммаЧека = ОбъектECR.Сумма;
   mishaPH
 
Модератор
38 - 21.03.19 - 14:26
(37) а фискальный признак он вообще что такое? он уникален ? в каких рамках?
   Garykom
 
39 - 21.03.19 - 14:52
(38) Нет он не уникален а "криптографичен".
Короче хеш-функция некая, зависящая от кучи параметров (номер ккт, номер чека и т.д.)
   Mikhail Volkov
 
40 - 21.03.19 - 17:35
   Garykom
 
41 - 21.03.19 - 18:58
(40) платная
   Mikhail Volkov
 
42 - 22.03.19 - 06:47
(39) Число?
(41) Да мне только эмулятор нужен, чтобы провериль. Есть в ФР Альфа-Авто Учебный/ЕНВД, неизвестно формирует ли фискальный признак?
   Mikhail Volkov
 
43 - 22.03.19 - 10:22
(37) Этот фрагмент из какой конфигурации?
   mishaPH
 
Модератор
44 - 22.03.19 - 10:31
(43) тис обычная наверное
   Mikhail Volkov
 
45 - 22.03.19 - 13:07
(44) Скачал ТиС 7.70.999, сделал Поиск во всех текстах строки "ОбъектECR". Не найдены!?
   Garykom
 
46 - 22.03.19 - 13:10
(45) "ОбъектECR" это чье то изобретение, в примерах от атол просто ECR
   mishaPH
 
Модератор
47 - 22.03.19 - 13:10
(46) в старых атоловских идет просто Объект.
   mishaPH
 
Модератор
48 - 22.03.19 - 13:11
(45) все это в fr_comm.ert в папке еквип
   mishaPH
 
Модератор
49 - 22.03.19 - 13:11
(45) вообще это просто под себя ктото так мог назвать
   Garykom
 
50 - 22.03.19 - 13:11
(42) Да просто число. Суть в том чтобы не смогли подделать этот ФП без настоящего ФН.
   Garykom
 
51 - 22.03.19 - 13:14
Я бы все же рекомендовал на 10-е дрова перейти, там все логичнее и больше возможностей.
   Garykom
 
52 - 22.03.19 - 13:15
Например можно пробивать нормально НДС 20% без покупки КЗ10 ))
   Сияющий в темноте
 
53 - 22.03.19 - 13:32
В восьмом драйвере есть возможность посылки низкоуровнего пакета на фр
восьмая версия драйвера работает через службу,что позволяет ставить службу нп одном компе,а работать с другой.
девятый так не умеет,а в десятом службу зпменили на вебсервис,но прозрачного проброса так и нет.
еще одна из проблеи в том,что у раруса своя служба управления оборудованием,и она работает под системно учеткой,насколько я помню,9 и 10 драйвер так не умеет он окна на экран кидает.
   serpentt
 
54 - 22.03.19 - 13:37
(52) а кто Вам сказал что КЗ10 надо покупать?

Все аппараты продаваемые с января 2019 года имеют КЗ10
   Garykom
 
55 - 22.03.19 - 13:40
(54) Т.е. вместо покупки КЗ10 ты предлагаешь новую ККТ купить а старую выкинуть?
   Garykom
 
56 - 22.03.19 - 13:41
(55)+ Хотя интересный момент.
А сайт ФНС позволит две ККТ с одним заводским номером зарегать?
   serpentt
 
57 - 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" или "sergey@milkopt.ru"

    Объект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()
   serpentt
 
58 - 22.03.19 - 13:42
(56) нет

только с разными ФН
   Garykom
 
59 - 22.03.19 - 13:45
(58) Понятно что номера ФН будут разные.
Суть в том что берем новую такую же ККТ, КЗ10 привязан к заводскому номеру.
Делаем клон из старой ККТ прописывая туда данные из новой.
Регаем обе в ФНС под разными регистрационными номерами с разными ФН.

Не прокатит?
   Garykom
 
60 - 22.03.19 - 13:47
Суть могут ли быть дубли заводских номеров ККТ, например у разных производителей?
   Сияющий в темноте
 
61 - 22.03.19 - 13:56
При регистрации заводской номер проверяется в реестре,и дублей быть не может,но после регистрации,заводской номер нигде не используется до замены фн.
   Mikhail Volkov
 
62 - 22.03.19 - 15:45
(48) В ExtForms\Equip\fr_comm.ert функция ПечататьЧек(). Но ФискальныйПризнак в Альфа-Авто получить фрагментами (26), (37) наверное не получится, если только штатную ВыполнитьКомандуОборудования("ФР",GUID_ФР,"ПробитьЧек",SafeArrayПараметрыЧека,ТаймаутФР,ТекстОшибки) заменить типа (57)?
   Garykom
 
63 - 22.03.19 - 15:47
(62) Ты лучше объясни почему еще используете эту кривую работу/пробивку через сервер защиты?
Там переписать дело пары дней.
   Mikhail Volkov
 
64 - 22.03.19 - 15:50
(63) Особой нужды не было.
   Garykom
 
65 - 22.03.19 - 15:51
(64) И нет проблем с хитрыми пробивками? Например делить чеки по СНО или еще что?
   Сияющий в темноте
 
66 - 22.03.19 - 17:43
вообщн,и у штриха и у атола можно получить весь фискальный документ в виде тлв структур,через любой драйвер от 8 до 10.

система защиты раруса позволяет работать с одной кассой с разных рабочих мест,собственно,это единственный ее плюс.
 
 Рекламное место пустует
   Garykom
 
67 - 22.03.19 - 17:49
(66) Есть множество способов делать тоже самое и даже через инет пробивать на удаленную ККТ.
В ответ получить слип и вывести его на чековый принтер с верным ФП ))

Жаль что по закону ККТ должна быть именно в месте расчета если наличными платят.
Так бы можно было одну реальную ККТ с ФН использовать на организацию.
   Mikhail Volkov
 
68 - 23.03.19 - 06:29
(65) Были конечно, но их решил штатными средствами. А ФискальныйПризнак похоже ими не получить, если вместо них не использовать свою функцию подобную (57)?
(66) > система защиты раруса позволяет работать с одной кассой с разных рабочих мест,собственно,это единственный ее плюс.
Для Альфа-Авто даже терминальный режим внештатный.
   Garykom
 
69 - 23.03.19 - 13:50
(68) Можно слегка допилить и все будет штатное.
И нет проблем с долгим запуском и тем что "флешка" из usb пропадет на сервере.
   Mikhail Volkov
 
70 - 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 элементов массива расписаны. А в каком элементе массива находится ФискальныйПризнак - нет, и вообще, есть ли такой?
   Mikhail Volkov
 
71 - 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,ФискальныйПризнак); К сожалению этого нет. А как его получить не знаю..?
   Mikhail Volkov
 
72 - 28.03.19 - 13:18
(38) В моих чеках вроде строка из 10 цифр. 10 - это стандарт, длиннее бывает?
   Mikhail Volkov
 
73 - 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));
    КонецЕсли;
    СтруктураВозвратныхПараметров=Новый Структура("ДатаФР,НомерЧека,НомерДокумента,НомерСмены,НомерФПД",ДатаФР,НомерЧека,НомерДокумента,НомерСмены,НомерФПД);    //-МВ

Исключение
    ТекстОшибки="Ошибка получения фискальных реквизитов пробитого чека: "+ОписаниеОшибки();
КонецПопытки; 

Теперь в чеке имею НомерФПД - Фискальный признак документа. Хочу в форме чека на вкладке Фискальные реквизиты вывести в виде гиперссылки, при ее нажатии выводился чек с сайта ОФД. Как?
   Mikhail Volkov
 
74 - 28.03.19 - 16:08
На Такском https://receipt.taxcom.ru/ кроме ФПД нужно вводить Итог - сумму расчета, на https://check.ofd.ru/ - еще ФД. А так, чтобы в ссылке указать ФПД, и получить чек - нельзя?
   Mikhail Volkov
 
75 - 28.03.19 - 17:53
А вот Первый ОФД https://consumer.1-ofd.ru/#/landing имеет Поиск по ссылке: Вставьте ссылку из письма с электронной копией чека или из СМС на вашем телефоне отправленную Вам при покупке в магазине. Как эту ссылку сформировать из известных фискальных реквизитов чека?
   Garykom
 
76 - 28.03.19 - 18:00
У ФНС нет какой то штуки/сервиса для проверки чека?
   Mikhail Volkov
 
77 - 28.03.19 - 19:05
(76) Вроде есть Проверка с помощью мобильного приложения от ФНС https://www.ekam.ru/blogs/pos/proverka-podlinnosti-cheka - сканируешь телефоном штрихкод, и получаешь чек с сайта ОФД. А вот просто по цифровому ФПД...?
   Garykom
 
78 - 28.03.19 - 19:31
   Mikhail Volkov
 
79 - 29.03.19 - 06:17
(78) https://buhguru.com/kass-tekh/api-proverka-chekov-fns.html ...подать заявку непосредственно на подключение к сервису «API Проверка чеков» - да, не все так просто как хотелось.

Вчера, когда отлаживал свои изменения (73), а отлаживал в рабочей базе с реальным ФР АТОЛ (эмуляторы не формируют ФПД), вылезло еще 2 чека. При закрытии кассовой смены вышло предупреждение, что обороты ККМ и ФР не совпадают, т.е. в ОФД по 1-му чеку отправлено всего 3 чека. Смену закрыли, в Альфа-Авто все нормально. Но что делать с 2-я лишними чеками отправленными в ОФД?
   NorthWind
 
80 - 29.03.19 - 06:46
(31) когда будут очередные новшества в ФФД или когда будет очередная переобувка законодательства, которая коснется ККТ, как это случилось с НДС 20% только что. В зависимости от того что произойдет раньше. Восьмые дрова допиливать не будут под такие новшества, уже сказали.
   Mikhail Volkov
 
81 - 29.03.19 - 09:22
(79)+ Может в копии базы отбить 2 возвратных чека по 1-му чеку, чтобы в ОФД отослались?
   mishaPH
 
Модератор
82 - 29.03.19 - 10:17
Колелги еще вопрос.
а размер шрифта при печати чего-то в чек ( строки рекламной например ) можно менять? и жирность
   Garykom
 
83 - 29.03.19 - 10:19
(81) Если по ЕНВД чеки то забить, иначе да возвраты пробить
   Garykom
 
84 - 29.03.19 - 10:20
(82) Можно в пределах то умеет ККТ
   mishaPH
 
Модератор
85 - 29.03.19 - 10:25
(84) а как атоловскому драйверу сказать что эту строку вот так печатать)
   Mikhail Volkov
 
86 - 29.03.19 - 14:12
(78) Оказывается чек надо открывать на том сайте ОФД, с которым договор. у меня Такском-Касса:
// Открыть чек на сайте ОФД Такском-Касса

//+МВ 29.03.2019
Процедура НомерФПДНажатие(Элемент)
    Если ПустаяСтрока(НомерФПД) Тогда    Возврат;    КонецЕсли;
    ЗапуститьПриложение("https://receipt.taxcom.ru/v01/show?fp="; + СокрЛП(НомерФПД) + "&s=" + Формат(СуммаДокумента,"ЧГ=0") + "&sf=False&sfn=False");
КонецПроцедуры
Правда чеков с копейками пока нет...
   Garykom
 
87 - 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
   mishaPH
 
Модератор
88 - 29.03.19 - 15:27
(87) а для 8го это возможно?
   Garykom
 
89 - 29.03.19 - 15:32
(88) PrintField
   mishaPH
 
Модератор
90 - 29.03.19 - 15:48
(89) да понятно что так и печатаем.

http://blog.atol.ru/archives/717

вот нашел.
   Garykom
 
91 - 29.03.19 - 16:01
(90) Там ограничение что в одной строке текст разными размерами/стилем только на отдельных моделях ККТ редких.
   mishaPH
 
Модератор
92 - 29.03.19 - 17:33
(91) т.е. построчно разбивать и только в одной строке можно изменять шрифт. для одной строки параметры задаются?
   Garykom
 
93 - 29.03.19 - 17:48
(92) угу
   Garykom
 
94 - 29.03.19 - 17:49
(93)+ Точнее строка может перенестись и будет тем же шрифтом
   Mikhail Volkov
 
95 - 30.03.19 - 12:01
(83) Нет, ОСНО. Из-за НДС?
   Mikhail Volkov
 
96 - 31.03.19 - 06:45
(95)+ А может забить, не делать никаких левых возвратов? Для чего ставятся кассовые аппараты, чтобы контролировать продажи, выручку... В данном случае по одной продажи отбит чек, который трижды ушел в ОФД. Нарушений нет (или есть?). В базе 1С все нормально, на отчетность этот факт никак не повлияет!?
   Garykom
 
97 - 31.03.19 - 07:09
(96) НДС с чека трижды заплотите и ок
   Mikhail Volkov
 
98 - 01.04.19 - 06:15
(97) НДС платится согласно отчетности по базе. А в базе одна продажа, один чек, а не три!?
   Garykom
 
99 - 01.04.19 - 06:28
(98) НДС платится по поданной декларации, а ее надо подавать согласно (на основе данных) пробитым чекам или другим первичным документам.

Чек это в рознице первичный документ же.
   Mikhail Volkov
 
100 - 01.04.19 - 07:01
(99) Но чек один, это в ОФД их три!?
  1  2   

Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.