Вход | Регистрация
    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   

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