Имя: Пароль:
1C
1С v8
ИНН кассира не передаётся в ОФД
0 kobayoshi
 
03.11.18
12:38
Добрый день.
Вопрос наверное даже не столько по 1С. Я обслуживаю несколько организаций. В каждой разные ККМ (Штрих, Атол, ВикиПринт, даже одна MStrar650tk), разные 1С (правда в основном ТиС и УТ 10.3). Есть даже одна свежая Розница 2.2, в которой вроде бы всё должно работать из коробки. Но нигде я не видел в личном кабинете ОФД, что бы отображался ИНН кассира.
ОФД в основном Такском. И парочка Первый ОФД. Касса не ругается, тег 1203 передаёт. А техподдержка ОФД утверждает, что этот тег им не передавался.
Кому-нибудь удавалось передать ИНН кассира? Какая у вас конфигурация и ККМ? Желательно, конечно, узнать мнение людей, которые сами писали обработку. И в случае удачной передачи ИНН, где я могу его увидеть в личном кабинете?
1 NorthWind
 
03.11.18
13:06
https://onlain-kassy.ru/normativ/kom/rekvizity-kassovogo-cheka.html - в ФФД 1.05 атрибут "ИНН кассира" не является ни обязательным, ни даже рекомендуемым для включения в чек. Чисто на усмотрение владельца кассы - может включать, а может и не включать. Надо полагать, что и ОФД не обязан его поддерживать и передавать.
2 pablo_escobar
 
03.11.18
13:54
(0) Есть кассы в первом ОФД, ИНН кассира показывается. Кассы точно на ФФД 1.05?
3 kobayoshi
 
03.11.18
14:20
(2) Кассы точно на 1.05. Это видно в личном кабинете. На первом ОФД у меня 2 кассы Штрих, которые работают на самописных обработках, одна под 1С 7.7 ТиС, другая под УТ 10.3 (Используют обычный DrvFR.dll, не DrvFR1C). И ещё одна MStar, которая работает в Розница 2.2 (там обработка уже зашита в конфигурацию)
А какая у Вас учётная программа и касса?
4 karpik666
 
03.11.18
14:56
Посмотрите здесь, вот описание требований к драйверам 1с https://its.1c.ru/db/metod8dev/content/4829/hdoc
5 d4rkmesa
 
03.11.18
15:45
(0) ИНН должен показываться, если нет - значит что-то не так. У меня такое было с Атол, когда обработка обслуживания(для УТ10/УПП/КА1) устаревшая была и, соответственно, интеграционная компонента 1С тоже.
6 ColonelAp4u
 
03.11.18
17:43
в кассах штрих м при фискализации задается ИНН кассира, и хранится в таблице 18 fiscal storage.
7 kobayoshi
 
04.11.18
09:55
А если не цепляться за 1С. Кассы же не только для него созданы. Я передаю тег 1203 с ИНН кассира. Таким же образом я передаю тег с его именем. Имя то приходит в ОФД. А вот ИНН похоже нет... А в каком месте в ОФД его должно быть видно? Можно скрин? Я хочу хоть где-нибудь его увидеть)
8 NorthWind
 
04.11.18
09:58
(7) может быть даже смешнее - он может в ОФД и приходить, но где написано, что ОФД обязан его как-то обрабатывать, показывать и передавать дальше?
9 kobayoshi
 
04.11.18
10:03
(6) Обычно я при регистрации ИНН не указываю. А бывает мне уже зарегистрированные кассы дают. Но не так давно при регистрации ВикиПринт я ИНН вводил. Только что проверил, и в ОФД такскома ни слова про ИНН кассира: https://yadi.sk/i/A2kUv4m6G0JUxw
10 Лефмихалыч
 
04.11.18
10:04
Может речь про ИНН организации-продавца? Кассир - это физлицо, у которого может и не быть ИНН.
От кассира в чеке должны быть только "должность и фамилия лица, осуществившего расчет с покупателем". Да и то, - только, если там было лицо в расчетах.
11 MWWRuza
 
гуру
04.11.18
11:44
Несколько конфигураций, моих, самописки. 1-ОФД. Кассы АТОЛ Ф-Принт-22 и Спарк-115-Ф. Под АТОЛ работают "на прямую", под Спарк - через XML по технологии 1C. Если ФФД 1.05(соответственно драйвера касс и сама конфа под требования к разработке драйверов 2.4 доработаны), то ИНН передается, и ФИО кассира тоже. В 1-ОФД отображается в верхней части чека, под "Кассовый чек приход", так и пишет:
"Кассир: ФИО
"ИНН кассира: ИНН".
Есть несколько конфигураций под восьмерку, но, там я пока их на ФФД 1.05 не переводил, и соответственно с этим не заморачивался. Сами конфигурации подготовлены, работают, но с эмулятором ФН, в тестовом режиме, по этому, не знаю, что он там передает...
12 Aleksey
 
04.11.18
12:49
(8) Более того ИНН кассира - это тэг для электронного чека, его вообще в бумажном не должно быть. А значит ОФД и не обязана выводить и показывать его
13 pablo_escobar
 
04.11.18
13:01
(3) Кассы штрих online и ритейл 01, УТ 10.3. Используется DrvFR1C. Когда переводил кассы на ффд 1.05 была ситуация: кассу перерегистрировал на 1.05, в 1-ом ОФД в чеке написано Версия ФФД: 1.05. Но ИНН кассира не было, и не было в строках признака предмета расчета. Выяснилось, что использовал smDrvFR1CLib.dll, а уже нужно было smDrvFR1CLib20.dll. С последней все стало отображаться.
Но что и как с DrvFR.dll не подскажу.
14 MWWRuza
 
гуру
05.11.18
00:51
Почитайте внимательнее описание формата. Многие теги - не обязательны. Но, это не значит, что их передавать не надо. В данном случае - "не обязательные", значит только то, что данные без них будут валидны. Но, если захотят проверяющие органы дое***, то будет повод. Лучше, пока есть время до обязательного применения ФФД 1.05 - отладить передачу всех необходимых реквизитов. А вообще, ИНН у кассира может и не быть, поэтому и передавать будет нечего.

PS Как я понимаю, задумка этого - контроль, что сотры оформлены как положено, а не гастробайтеры с улицы... Хотя, конечно, контроль так-себе...

PSS В чеке бумажном, ИНН кассира по любому печататься не должен, но в ОФД должен передаваться. Это сам софт кассы должен контролировать, наше дело - передать правильно тэг, а дальше касса+драйвер сами разберутся, что передавать и что печатать. Естественно, прошивка и драйвер должны актуальные быть.
15 NorthWind
 
05.11.18
09:11
(14) да никто никому ничего не должен. Еще раз - тег не обязательный и даже не относится к рекомендуемым, передается исключительно по желанию владельца кассы. Ссылка в (1). Там несколько градаций нужности тегов есть, у этого 7 - самая низкая.
16 kobayoshi
 
05.11.18
10:53
(11) Спасибо за ответ. У меня Атоллы сейчас под драйвером 8.16.1. Может поэтому не отправляет? Но с другой стороны, какая разница? Теги то этот драйвер передёт. А не поделитесь обработкой для Атол? Под какой драйвер он у Вас работает?
Странно, что в Штрихе тоже не передаёт, там то драйвер последний. И прошивки все старше 20.12.17
Я конечно понимаю, что этот реквизит может и необязательный, но лучше позаботиться заранее о его передаче. Так что давайте не уходить в обсуждения надо-не надо... Хотелось бы понять, что я могу делать не так.
17 MWWRuza
 
гуру
05.11.18
14:36
(16) Да нет у меня никакой отдельной обработки. Все в составе конфигурации, в бухгалтерии 7.7. Вот фрагмент кода, который передает Имя кассира и ИНН:
    ECR.AttrNumber = 1021;
    ECR.AttrValue = СокрЛП(глПользователь.Наименование);
    ECR.WriteAttribute();
    
    Если СокрЛП(глПользователь.ИНН) <> "" Тогда
        ECR.AttrNumber = 1203;
        ECR.AttrValue = СокрЛП(глПользователь.ИНН);
        ECR.WriteAttribute();
    КонецЕсли;

Драйвер 8.16, последний, который на тот момент, когда ставил, был, кажется 8.16.3
Вчера, специально заглянул в ОФД именно этого клиента(1-ОФД), есть ИНН в каждом чеке. Естественно, касса печатает на бумагу только ФИО кассира.
18 MWWRuza
 
гуру
05.11.18
14:42
Вот, если нужно, целиком процедура печати чека:

Процедура ПечатьЧека()
    Ошибка = 0;
    
    ТЧ             = Форма.Параметр.ПолучитьЗначение(3);
    Пар            = Форма.Параметр.ПолучитьЗначение(4);
    СуммаОтПок    = Форма.Параметр.ПолучитьЗначение(5);
    EmailPhone    = Форма.Параметр.ПолучитьЗначение(6);
    // занимаем порт
    ECR.DeviceEnabled = 1;
    Если ECR.ResultCode <> 0 Тогда
        Сообщить("Не удается занятьпорт!");
        Ошибка = 1;
        Возврат;
    КонецЕсли;
    // получаем состояние ККМ
    Если ECR.GetStatus() <> 0 Тогда
        Сообщить("Не удается получить состояние ККТ!");
        Ошибка = 1;
        Возврат;
    КонецЕсли;
    
    // если есть открытый чек, то отменяем его
    Если ECR.CheckState <> 0 Тогда
        Если ECR.CancelCheck() <> 0 Тогда
            Сообщить("Не удается отменить предыдущий чек!");
            Ошибка = 1;
            Возврат;
        КонецЕсли;
    КонецЕсли;

      // входим в режим регистрации
    // устанавливаем пароль кассира
    ECR.Password     = "1";
    // входим в режим регистрации
    ECR.Mode         = 1;
    Если ECR.SetMode() <> 0 Тогда
        Сообщить("Не удается установить режим регистрации!");
        Ошибка = 1;
        Возврат;
    КонецЕсли;
    
    ECR.AttrNumber     = 1055;
    // Применяемая система налогооблажения в чеке:
    //     ОСН - 1
    //     УСН доход - 2
    //     УСН доход-расход - 4
    //     ЕНВД - 8
    //     ЕСН - 16
    //     ПСН - 32
    ECR.AttrValue     = 8;
    ECR.WriteAttribute();

    ECR.AttrNumber = 1021;
    ECR.AttrValue = СокрЛП(глПользователь.Наименование);
    ECR.WriteAttribute();
    
    Если СокрЛП(глПользователь.ИНН) <> "" Тогда
        ECR.AttrNumber = 1203;
        ECR.AttrValue = СокрЛП(глПользователь.ИНН);
        ECR.WriteAttribute();
    КонецЕсли;

    Если СокрЛП(EmailPhone) <> "" Тогда
        ECR.AttrNumber    = 1008;
        ECR.AttrValue     = СокрЛП(EmailPhone);
        ECR.WriteAttribute();
    Конецесли;    
    
    ТЧ.ВыбратьСтроки();
    Пока ТЧ.ПолучитьСтроку() = 1 Цикл
        ECR.Name        = Строка(СокрЛП(ТЧ.Номенклатура.Наименование));
        ECR.Price         = ТЧ.Цена;
        ECR.Quantity     = ТЧ.Количество;
        ECR.Department = 1;
        // TaxTypeNumber - Номер налога:
        //     0 - Налог из секции
        //     1 - НДС 0%
        //     2 - НДС 10%
        //     3 - НДС 18%
        //     4 - НДС не облагается
        //     5 - НДС с расчётной ставкой 10%
        //     6 - НДС с расчётной ставкой 18%
        ECR.TaxTypeNumber = 4;

        Если ECR.Registration() <> 0 тогда
             Сообщить("Ошибка продажи по накладной ");
                  Если ECR.OutOfPaper = 0 Тогда
                      Предупреждение("В ККМ закончилась бумага!");
                      Ошибка = 1;
                  КонецЕсли;
                  Если ECR.GetCurrentMode() <> 0 Тогда
                      Ошибка = 1;
                     Возврат;
                КонецЕсли;    
            Возврат;
        КонецЕсли;        
    КонецЦикла;
    ИтогЧека    = ТЧ.Итог("Сумма");
    Если Пар = 1 Тогда
        Если СуммаОтПок > ИтогЧека Тогда
            ECR.TypeClose         = 0;
            ECR.Summ             = СуммаОтПок;
            Если ECR.Delivery() <> 0 Тогда
                Ошибка = 1;
                Возврат;
            КонецЕсли;             
        Иначе
            ECR.TypeClose = 0;
              Если ECR.CloseCheck() <> 0 тогда
                  Сообщить("Ошибка продажи по накладной ");
                  Ошибка = 1;
                Если ECR.OutOfPaper = 0 Тогда
                      Предупреждение("В ККМ закончилась бумага!");
                  КонецЕсли;
                  Если ECR.GetCurrentMode() <> 0 Тогда
                     Возврат;
                КонецЕсли;
                Возврат;
              КонецЕсли;        
        КонецЕсли;
    Иначе
        ECR.TypeClose = 5; // В новых прошивках соответствует платежной карте
          Если ECR.CloseCheck() <> 0 тогда
              Сообщить("Ошибка продажи по накладной ");
              Ошибка = 1;
            Если ECR.OutOfPaper = 0 Тогда
                  Предупреждение("В ККМ закончилась бумага!");
              КонецЕсли;
              Если ECR.GetCurrentMode() <> 0 Тогда
                Возврат;
            КонецЕсли;
            Возврат;
          КонецЕсли;        
    КонецЕсли;
КонецПроцедуры
19 d4rkmesa
 
05.11.18
16:53
(18) Интересно, на 8.1 взлетит?
20 MWWRuza
 
гуру
05.11.18
17:16
(19) А какая разница? Если напишете правильно, то взлетит на чем угодно... Но, только надо понимать, что в (18) одна только процедура печати чека... Надо еще загрузить драйвер, создать из ВК объект ECR для ее работы, ну и нужны еще несколько процедур - Z-отчет, X-отчет, внесение, выплата и т.п. В моем случае - это совершенно с нуля самописка, без применения чего-то типового. Если Вы имеете в виду под 8.1 что-то из типовых конфигураций, то скорее всего нет... Я думаю, 1С вряд-ли поддержала в конфах для 8.1 работу с ККТ. А сами можете сделать чего угодно, если драйвер работает с 7.7, то уж под 8.1 он взлетит по любому...
21 MWWRuza
 
гуру
05.11.18
17:24
Если уж зашла речь за работу драйвера в "старых" системах, то вот еще фрагменты кода:
В глобальном модуле, при начале работы системы -
    // установка текущего пользователя
    Спр=СоздатьОбъект("Справочник.Пользователи");
    Если ПустоеЗначение(ИмяПользователя())=0 Тогда
        Если Спр.НайтиПоКоду(ИмяПользователя())=0  Тогда
            Спр.Новый();
            Спр.Код=ИмяПользователя();
            Спр.Наименование=ИмяПользователя();
            Спр.Записать();
            Сообщить("Пользователь зарегистрирован в справочнике пользователей.", ".");
        КонецЕсли;
    Иначе
        // При неизвестном пользователе позволяем работать только с интерфейсом Администратора
        Если НазваниеИнтерфейса() = "Администратор" Тогда
            Предупреждение("Пользователь системы не определен!", 60);
            Сообщить("Пользователь системы не определен!", "!");
            Если Спр.НайтиПоКоду("НеАвторизован")=0  Тогда
                Спр.Новый();
                Спр.Код          = "НеАвторизован";
                Спр.Наименование = "Не авторизован";
                Спр.Записать();
            КонецЕсли;
        Иначе
            Предупреждение("Пользователь системы не определен!
            |Обратитесь к администратору системы.");
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
    КонецЕсли;
    глПользователь=Спр.ТекущийЭлемент();    
    
    Если Константа.РаботаСФР = Перечисление.Булево.Да Тогда
        Сз = СоздатьОбъект("СписокЗначений");
        Сз.ДобавитьЗначение("Подключить");
        Сз.ДобавитьЗначение(0);
        Спр = СоздатьОбъект("Справочник.ККМ");
        Спр.ВыбратьЭлементы();
        Пока Спр.Получитьэлемент() = 1 Цикл
            Если (Спр.Активна = 1) И (СокрЛП(Спр.ИмяКомпа) = ИмяКомпьютера()) Тогда
                ОткрытьФормуМодально("Обработка.ОбслуживаниеККМ",Сз);
                Прервать;
            КонецЕсли;    
        КонецЦикла;    
    КонецЕсли;    

В обработке обслуживания ККТ:

Процедура Подключить()
    Ошибка = 0;
    Попытка
        ECR = СоздатьОбъект("AddIn.FprnM45");
    Исключение
        Предупреждение("Ошибка при создании объекта AddIn.FprnM45");
        ЗавершитьРаботуСистемы();
    Конецпопытки;
    // занимаем порт
    ECR.DeviceEnabled = 1;
    Если ECR.ResultCode <> 0 Тогда
        Сообщить("Не удалось подключить ККМ!");
        Ошибка = 1;
        Возврат;
    КонецЕсли;
    // получаем состояние ККМ
    Если ECR.GetStatus() <> 0 Тогда
        Сообщить("Не удалось подключить ККМ!");
        Ошибка = 1;
        Возврат;
    КонецЕсли;
    //    Сообщить("ККМ подключена!");
КонецПроцедуры

В документе, откуда вызывается печать чека:

Процедура НапечататьЧекККМ()
    Если Выбран() = 0 Тогда
        Предупреждение("Перед печатью кассового чека, документ необходимо записать!",3);
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    Если КоличествоСтрок() = 0 Тогда
        Предупреждение("Таблица документа пустая, печать чека не возможна!",3);
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;    
    Тз = СоздатьОбъект("ТаблицаЗначений");
    Сз = СоздатьОбъект("СписокЗначений");
    ВыгрузитьТабличнуюЧасть(Тз);
    Сз.ДобавитьЗначение("ПечатьЧека");
    Сз.ДобавитьЗначение(0); // Результат операции печати чека
    Сз.ДобавитьЗначение(Тз);
    ИтогоСумма     = Тз.Итог("Сумма");
    СзОпл        = СоздатьОбъект("СписокЗначений");
    СзОпл.ДобавитьЗначение(ИтогоСумма);
    ОткрытьФормуМодально("Обработка.Оплата",СзОпл);
    Если СзОпл.РазмерСписка() < 4 Тогда
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    ТипОплаты     = СзОпл.ПолучитьЗначение(2);    
    Сз.ДобавитьЗначение(ТипОплаты);
    Сз.ДобавитьЗначение(СзОпл.ПолучитьЗначение(3));
    Сз.ДобавитьЗначение(СзОпл.ПолучитьЗначение(4));
    ОткрытьФормуМодально("Обработка.ОбслуживаниеККМ",Сз);
    Результат     = Сз.ПолучитьЗначение(2);
    Если Результат = 0 Тогда
        ЧекНапечатан = 1;
        Попытка
            Записать();
        Исключение
            
        КонецПопытки;    
    КонецЕсли;    
КонецПроцедуры

Я думаю, этого достаточно, что-бы написать самим под что-угодно...
22 MWWRuza
 
гуру
05.11.18
17:28
А... Ну, еще, в глобальном модуле не забудьте объявить глобальные переменные:

Перем ECR Экспорт;
// Глобальная переменная текущего пользователя
Перем глПользователь    Экспорт;

Ну, и справочник "Пользователи", с одним единственным реквизитом "ИНН" строка, 12 символов, не забудьте создать.

И все взлетит :-)
23 Сияющий в темноте
 
05.11.18
18:28
У штрих м полезно посмотреть таблицу региональных настроек,там есть флаги для управления реквизитами.

суть оптимизации в том,что тег переданный один раз считается действующим на последующие чеки,пока не будет передано другое значение,но,видимо,ОФД показывают только то,что явно передано в чеке.

опять же,по логике функционирования,инн и фио кассира должны передаваться вместе,чтобы не было ситуации,когда фио поменялось,а инн остался старый-у штрих именно так и бывает.
24 MWWRuza
 
гуру
05.11.18
18:35
(23) А... Понятно, может по этому у ТС и не передается. Я в каждый чек передаю.
25 kobayoshi
 
06.11.18
15:10
(18) У меня всё аналогично...
Значит всё таки что-то не так с прошивкой или драйвером. А так как ставлю я везде одно и то же, поэтому наверное и не взлетает. Пора наверное перестать мучить 1С и поиграться с драйверами. По результатам отпишусь...
Спасибо за советы!
26 kobayoshi
 
07.11.18
09:47
Умные люди подсказали посмотреть, есть ли информация о ИНН в тесте драйвера (раздел ФН, запросить данные по номеру документа). И он там есть! По крайней мере у Штриха, в Атоле я не знаю, как получить эту информацию... Значит дело точно не в ПО.
27 kobayoshi
 
08.11.18
17:48
Я получил официальный ответ от ОФД Такском, если вкратце, то ИНН кассира передаётся в налоговую, если присутствует в структуре чека.
Для Штриха я знаю как это посмотреть. Может для Атола кто-нибудь подскажет, как увидеть структуру пробитого чека?
28 Сияющий в темноте
 
08.11.18
19:44
(27) как вариант,распечатать документ по номеру ФД через драйвер.
29 MWWRuza
 
гуру
09.11.18
19:14
Ха... Перехвастался я похоже...
Сегодня у того клиента, где все нормально работало и ИНН кассира вместе с ФИО передавался, перестало работать...
Что поменялось:
Клиент продает компьютерные железки, и попутно оказывает услуги, ну, та ксерокопия, ремонты компов и т.д. После перевода го на ФФД 1.05, ничего с предметом расчета не делал - соответственно он передавал всегда "Товар".
НЕПОРЯДОК!!! Решил доработать. Просто передача параметра "ItemType" ничего не дала... Стал разбираться... Оказывается, для формирования строк чека я использовал по старинке метод "Registration". А вот фиг там, он не передает новые реквизиты 1.05, в частности "Предмет расчета"-!
Надо теперь использовать два метода:
Сначала, начинаем позицию: "BeginItem",
потом передаем все параметры,
и завершаем позицию: "EndItem".
Дальше, все как и ранее.
Все заработало, предмет расчета стал попадать нормально - когда надо - "Товар", когда надо - "Услуга".
Вот только после этой доработки вместо ФИО кассира, стал передавать "Кассир 01", и ИНН кассира пропал!!!
Вот такая фигня... Надо разбираться, как это взаимосвязано. Ничего больше не менял точно, данные кассира как передавались, так и передаются :(
30 Garykom
 
гуру
09.11.18
19:18
(29) Попробуй порядок поменять, ИНН кассира в конец или наоборот в начало относительно BeginItem..EndItem
31 MWWRuza
 
гуру
09.11.18
19:23
(30)Сейчас в начале, перед циклом по строкам... Завтра(ну, или в понедельник, если завтра не получится), попробую после цикла поставить, перед оплатой и закрытием чека. Тогда отпишусь о результате...

PS Прикольно... Зашел в ОФД и там прямо видно, когда пол дня работал кассир с ФИО, а с пол дня стал "Кассир 01". Смена одна и та-же.
32 MWWRuza
 
гуру
09.11.18
19:42
В общем, проанализировал еще раз пример от АТОЛ, и кажется понял, в чем дело... Вот их код:
// ---------- Чек прихода без отправки электронного чека покупателю ---------- //
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // //

// Mode - Режим:
//     0 - Выбора
//     1 - Регистрации
//     2 - Отчётов без гашения
//     3 - Отчётов с гашением
driver.Mode = 1;
driver.SetMode();

driver.NewDocument();

// Записать должность и ФИО кассира
driver.AttrNumber = 1021;
driver.AttrValue = "Старший кассир Иванов И.И.";
driver.WriteAttribute();

// CheckType - Тип чека:
//     1 - Приход
//     2 - Возврат прихода
//     4 - Расход
//     5 - Возврат расхода
//     7 - Коррекция прихода
//     9 - Коррекция расхода
driver.CheckType = 1;
// CheckMode - Режим формирования чека:
//     0 - только в электронном виде без печати на чековой ленте
//     1 - печатать на чековой ленте
driver.CheckMode = 1;
driver.OpenCheck();

driver.AttrNumber = 1055;
// Применяемая система налогооблажения в чеке:
//     ОСН - 1
//     УСН доход - 2
//     УСН доход-расход - 4
//     ЕНВД - 8
//     ЕСН - 16
//     ПСН - 32
driver.AttrValue = 8;
driver.WriteAttribute();

// Регистрация товара или услуги
driver.Name = "Молоко 3.2%";
driver.Price = 50.33;
driver.Quantity = 2;
driver.Department = 0;
// TaxTypeNumber - Номер налога:
//     0 - Налог из секции
//     1 - НДС 0%
//     2 - НДС 10%
//     3 - НДС 18%
//     4 - НДС не облагается
//     5 - НДС с расчётной ставкой 10%
//     6 - НДС с расчётной ставкой 18%
driver.TaxTypeNumber = 4;
// рекомендуется рассчитывать в кассовом ПО цену со скидкой, а информацию по начисленным скидкам печатать нефискальной печатью и не передавать скидку в ККМ, поэтому код для начисления скидки закомментирован
// driver.DiscountValue = 10;
// // DiscountType - Тип скидки:
// //     0 - суммовая
// //     1 - процентная
// driver.DiscountType = 0;
driver.Registration();
driver.Caption = "В том числе скидка: 4.67\nЦена без скидки: 55.00";
driver.PrintString();

// Отброс копеек (округление чека без распределения по позициям). Скидка на чек доступна только для его округления до рубля. Таким образом недоступны: надбавки, назначение "на позицию", процентные значения.  SummCharge(), PercentsCharge(), PercentsDiscount () и ResetChargeDiscount () более недоступны
// Destination - Назначение скидки:
//     0 - на чек
//     1 - на позицию (недоступно)
driver.Destination = 0;
driver.Summ = 0.66;
driver.SummDiscount();

// Нефискальная печать с информацией по скидкам чека
driver.Caption = "--Скидки по чеку--";
driver.PrintString();
driver.Caption = "Сумма чека без скидок 110.00";
driver.PrintString();
driver.Caption = "Скидки по карте: 9.34";
driver.PrintString();
driver.Caption = "Округление: 0.66";
driver.PrintString();

// Оплата и закрытие чека
// TypeClose - Тип оплаты:
//     0 - Наличными
//     1 - Электронными средствами платежа
driver.TypeClose = 0;
driver.Summ = 500.00;
driver.Payment();
driver.CloseCheck();

А вот мой:

        Сообщить("Не удается занятьпорт!");
        Ошибка = 1;
        Возврат;
    КонецЕсли;
    // получаем состояние ККМ
    Если ECR.GetStatus() <> 0 Тогда
        Сообщить("Не удается получить состояние ККТ!");
        Ошибка = 1;
        Возврат;
    КонецЕсли;
    
    // если есть открытый чек, то отменяем его
    Если ECR.CheckState <> 0 Тогда
        Если ECR.CancelCheck() <> 0 Тогда
            Сообщить("Не удается отменить предыдущий чек!");
            Ошибка = 1;
            Возврат;
        КонецЕсли;
    КонецЕсли;

      // входим в режим регистрации
    // устанавливаем пароль кассира
    ECR.Password     = "1";
    // входим в режим регистрации
    ECR.Mode         = 1;
    Если ECR.SetMode() <> 0 Тогда
        Сообщить("Не удается установить режим регистрации!");
        Ошибка = 1;
        Возврат;
    КонецЕсли;
    
    ECR.AttrNumber     = 1055;
    // Применяемая система налогооблажения в чеке:
    //     ОСН - 1
    //     УСН доход - 2
    //     УСН доход-расход - 4
    //     ЕНВД - 8
    //     ЕСН - 16
    //     ПСН - 32
    ECR.AttrValue     = 8;
    ECR.WriteAttribute();

    ECR.AttrNumber = 1021;
    ECR.AttrValue = СокрЛП(глПользователь.Наименование);
    ECR.WriteAttribute();
    
    Если СокрЛП(глПользователь.ИНН) <> "" Тогда
        ECR.AttrNumber = 1203;
        ECR.AttrValue = СокрЛП(глПользователь.ИНН);
        ECR.WriteAttribute();
    КонецЕсли;

    Если СокрЛП(EmailPhone) <> "" Тогда
        ECR.AttrNumber    = 1008;
        ECR.AttrValue     = СокрЛП(EmailPhone);
        ECR.WriteAttribute();
    Конецесли;    
    
    ТЧ.ВыбратьСтроки();
    Пока ТЧ.ПолучитьСтроку() = 1 Цикл
        
        ECR.BeginItem();
        
        ECR.Name        = Строка(СокрЛП(ТЧ.Номенклатура.Наименование));
        
        ECR.ItemType    = ВернПризПредмРасч(ТЧ.Номенклатура.ТипНоменклатуры); // 08.11.2018
        
        ECR.Price         = ТЧ.Цена;
        ECR.Quantity     = ТЧ.Количество;
        
        ECR.Summ         = ТЧ.Сумма;
        
        ECR.Department = 1;


Ну, и так далее...
У меня нет оператора "NewDocument" в самом начале! Но, все работало и без него прекрасно, пока сегодня не вмешался и не поменял способ формирования строк чека...
Думаю, дело в этом. Попробую - отпишусь.

PS Но, вообще, мне больше по душе новый способ работы с дровами по технологии 1С, через XML. Сформировал "правильную" XMLку, пихнул в драйвер,. и пусть он сам с ней разбирается... Если что не так - это уже не наши проблемы, пусть производители дров разбираются :-))))
33 Aleksey
 
09.11.18
21:04
(32) ТОлько 1С в этом случе кивает на писателей драйверов, типа у нас все правильно, это драйвера неправильно обрабатывают. А писатели кивают на 1С, типа у нас все хорошо это не наши драйвера а спец заказ от 1С, все вопросы к ним.
Крайних нет
34 MWWRuza
 
гуру
10.11.18
01:25
(33)Крайних нет
Да так то оно так... Но, тут хотя-бы есть вот это: https://its.1c.ru/db/metod8dev#content:4829:hdoc:chapter270
Соответствует ХМЛка требованием, должно работать. Не работает - косяк драйвера, идите в ж.... А в случае прямого, "старого" способа работы с драйвером, тут нюансов куча, как в моем случае...
35 Aleksey
 
10.11.18
01:57
(34) Так то оно так, на ври на форуме Атол все сводиться к тому что производитель не хочет признавать проблемы если используется компонента от 1С.
36 MWWRuza
 
гуру
12.11.18
14:13
Победил... Отчитываюсь:
добавление "NewDocument" - ничего не поменяло. Стал смотреть внимательнее...
Оказывается еще есть команда "OpenCheck" уже после записи атрибутов кассира... Ее у меня тоже не было(пережиток старого драйвера, писалось все это когда еще об онлайне речи не было)... Добавил, и все взлетело! В чеке печатается ФИО кассира, в ОФД так-же передается ФИО и ИНН!

Непонятно, как раньше, до изменения способа печати строк, оно работало... Но, тем не менее - "факт на лицо" :-)
37 MWWRuza
 
гуру
12.11.18
14:51
+(36) В закрытие чека, даже если он "по карточке", надо принудительно сумму передавать - иначе все работает, но опять "Кассир 01" и без ИНН передается. Раньше, когда строки печатались методом "регистрация", работало и без суммы...
38 kobayoshi
 
18.11.18
23:10
Я давно заметил, что неожиданно от перестановки мест могут передаваться или вдруг не передаваться некоторые реквизиты. Я вроде бы потихоньку везде победил проблему ИНН. На Атоле, для проверки передачи нужно подать команду AB 00 01 11, где 111 - это номер чека. Тогда из кассы вылезет копия этого чека, где прописан ИНН, если передался.
Пока правда не знаю как узнать состав чека Вики Принт 57Ф. Когда через тест драйвера печатаешь копию чека, там огрызок выходит, где даже товары не перечислены...
39 kobayoshi
 
24.11.18
22:21
С каждым днём всё интереснее...
Был у меня штрих с прошивкой древней. И никаких тегов я на нём не отправлял. На днях его обновили до прошивки от сентября 2018 вроде. Подключил я свою обработку, которую уже обкатал в других местах, и что вы думаете? Не отправляется имя кассира?! Даже ИНН отправляется, а имя нет! Хотя уже с десяток других касс делают это на раз-два. В чём тут то проблема? Или к каждой кассе свой бубен нужен?
40 Гость из Мариуполя
 
гуру
25.11.18
08:15
(38) Некоторые тэги должны передаваться в определенные моменты. В частности, тэг "ИНН кассира" штрихом воспринимается только при открытом чеке. Перед открытием чека передавать бесполезно.

Поэтому "от перестановки мест" - хм.. да, влияет, и сильно. :)))
41 kobayoshi
 
26.11.18
19:46
(40) Я в курсе. К сожалению документации на этот счёт нет, приходиться опытным путём всё узнавать...
42 Сияющий в темноте
 
29.11.18
12:35
У Штрихов имкакассира может браться из таблицы Фискал Сторадже,где оно передается в отчет о регистрации,а может из имени оператора в таблицы пароли операторов,также работает тег имени кассира,но только,если в таблице операторов-пустая строка
43 Масянька
 
29.11.18
12:41
(39) Внимательно см. (42). А потом в драйвере Таблицы - 2. Пароли кассиров ...
Ну, и из эски передавать нужный пароль.
44 NorthWind
 
03.12.18
11:12
(43) Кстати, а в 8.16 это работает, кто-нибудь проверял? Т.е. если корректно заполнить эту таблицу, то начиная с какой версии драйвер 8.Х нормально передает ИНН?
45 NorthWind
 
03.12.18
11:18
имеется в виду - только с заполненной таблицей, без программной записи атрибута 1203.
46 rozer76
 
03.12.18
11:20
(44) какой смысл обсуждать это древнее @#%$& мамонта ? DTO 10 Атол web-service. Когда будет поддержка в типовых ?
47 NorthWind
 
03.12.18
13:38
по существу вопроса ответа нет?
48 Tonik992
 
03.12.18
13:44
Посмотрите в примечаниях по поводу "ИНН Кассира" (п. 18):
http://www.consultant.ru/document/cons_doc_LAW_214339/2f816c9e733702f1405ae9cd34e1d7d472e138ca/

В описаниях к реквизиту ИНН Кассира (тег 1203), столбец "Примечание".
http://www.consultant.ru/document/cons_doc_LAW_214339/f3b87e8f98ff78a4c457fe46ca49d700eb364edc/

Передавать это поле надо.
49 hhhh
 
03.12.18
13:49
(48) написано, может не включаться
50 Tonik992
 
03.12.18
13:50
(49) "....в случае применения ККТ в автоматическом режиме".
51 hhhh
 
03.12.18
13:53
(50) у всех в автоматическом режиме. У вас да, может вручную кассир на кассовом аппарате что-то пытается забить.
52 Tonik992
 
03.12.18
14:29
(51)
Вы неверно трактуете понятие "автоматический режим".

http://www.consultant.ru/document/cons_doc_LAW_214339/0ca1f4a1abc08962fede832bd65a2c3f5b0141ca/
Здесь указано значение "автоматического режима".

В добавок к этому, вы когда кассу фискализируете, в одном из пунктов меню есть выбор "В автоматическом режиме".
Если вы во всех своих кассах, которые стоят в магазине, указываете "В автоматическом режиме", то у меня для вас плохие новости.
53 NorthWind
 
03.12.18
14:35
(49) я тоже так полагал, но нужно обращать внимание на дату. Если он необязателен на 2018 год, это не значит, что в 2019 все так и останется.
54 Tonik992
 
03.12.18
15:13
(53) Однако, есть письмо от ФМС с методическими рекомендациями описания чека при ФФД 1.1:
http://www.consultant.ru/document/cons_doc_LAW_302551/25d926a9828d5d14e4b41a8250b5b6e7e9e4a5ee/

Тег 1203 (ИНН Кассира) при формировании электронного чека РЕКОМЕНДУЕТСЯ.
55 Tonik992
 
03.12.18
15:13
(54) ФНС -)
56 Kigo_Kigo
 
06.12.18
15:28
(32) смотрю у тебя
Если СокрЛП(глПользователь.ИНН) <> "" Тогда
        ECR.AttrNumber = 1203;
        ECR.AttrValue = СокрЛП(глПользователь.ИНН);
        ECR.WriteAttribute();
    КонецЕсли;

смотрю пример атола
// ИНН пользователя
driver.AttrNumber = 1018;
driver.ReadAttribute();
textForPrint += "ИНН пользователя: " + driver.AttrValue + "\n";
так какой поле то писать 1023 или 1018 ?
57 NorthWind
 
06.12.18
16:36
(56) 1018 это ИНН налогоплательщика, т.е. хозяина ККТ.
1203 это ИНН работника-кассира.
58 Kigo_Kigo
 
06.12.18
18:38
(57) понял, сделал 1203, нигде инн кассира не отобразилось, ни в чеке, не в ОФД
59 Garykom
 
гуру
06.12.18
18:49
(58) Возможно старая прошивка ККТ которая еще не поддерживает ИНН кассира, только ФИО кассира.
Причем ошибок не выдает типа зачем?
60 Kigo_Kigo
 
06.12.18
18:56
(59) нет, ошибок нет, все пробивает, версия 1.05
61 Garykom
 
гуру
06.12.18
19:06
(60) ФИО кассира тег 1021 нормально передается?
62 Kigo_Kigo
 
06.12.18
19:19
(61) Да, и печатается на чеках, и приходит в офд
63 Garykom
 
гуру
06.12.18
19:22
(62) Пробуй пробить чек с ИНН кассира через нативный драйвер, далее делай выводы.
64 Garykom
 
гуру
06.12.18
19:23
(63)+ В смысле нативный последний драйвер 8-й, 9-й и 10-й протестить через тест встроенный.
65 Kigo_Kigo
 
06.12.18
19:30
(64) А причом тут драйвер, мы же тупо пишем в таблицу в ККТ инн кассира, далее ККТ сама уже должна все делать(печатать и передавать в ОФД), драйвер тут не приделах
66 Garykom
 
гуру
06.12.18
19:33
(65) Эээ.
Как бы ИНН кассира как и ФИО можно передавать и через драйвер. Может там пустой передается и затирает.
67 spectre1978
 
06.12.18
19:42
(66) в 8.16.3 через таблицу в драйвере не работает. 16.4 попробую.
68 Garykom
 
гуру
06.12.18
19:49
(67) Там еще есть прикол с открытием смены и первым чеком (который автоматом смену открывает)
69 Kigo_Kigo
 
06.12.18
19:52
(66) Затра попробую записать артрибут и тут же его считать, и считать после закрытия чека, посмотрим что там остается в 1203 ячейке
70 NorthWind
 
06.12.18
19:57
(68) о чем именно речь?
71 Garykom
 
гуру
06.12.18
19:59
(70) "не нужно открывать смену регистрацией чека

отдельно открытие смены
отдельно регистрации чеков

поэтому у вас кассир и передался только на первый документ - документ открытия смены "
http://forum.atol.ru/index.php?showtopic=35572&pid=257101&st=0&#entry257101
72 NorthWind
 
06.12.18
20:05
(71) полезно, но здесь не тот случай. Не уходит ни с отчетом об открытии смены, ни с первым чеком, ни со вторым, в общем, ни с каким.
73 Garykom
 
гуру
06.12.18
20:07
Если не печатается на чеке - значит что то с прошивкой ККТ или формой (реквизитами) чека.
Если не уходит в ОФД - значит что то или с прошивкой ККТ или с обменом между ККТ и ОФД или с системой у ОФД.

Короче логи драйвера в студию для начала.
74 NorthWind
 
06.12.18
20:11
(73) Прошивка крайняя, буквально пять дней назад обновился. Атол 11ф. Что до логов - я их еще сам не смотрел, руки не дошли, также как и обновить дрова до 8.16.4. Вероятно, буду заниматься завтра или на след. неделе. На данный момент собираю дополнительную информацию на предмет того, не ступил ли я где-то в очевидном месте.
75 NorthWind
 
06.12.18
20:13
(54) а вот по ссылке в (71) выжимка из атрибутов ФФД разных версий, там - написано что обязателен. На всякий случай прямая ссылка https://online.atol.ru/files/Uproschennaya_versiya_FFD_ot_ATOL.pdf
76 NorthWind
 
06.12.18
20:17
+ на самом деле спорить - занятие в данном случае неблагодарное, потому что как обычно в таких ситуациях есть невнятица. Но если есть вероятность санкций, лучше попытаться хоть что-то сделать, чем не делать ничего.
77 Garykom
 
гуру
06.12.18
20:21
Насчет долбаных санкций:

Вот у нас есть эта хренова комиссионная торговля.
Сами мы не мест.. без НДС на ЕНВД сидим (как комиссионер) но комитент на ОСН с НДС.

И вот тут полнейшие непонятки как пробивать.

Какую (чью) СНО указывать? Ставку НДС все пишут надо как в накладных от комитента.

А про СНО кто пишет что надо нашу ЕНВД (комиссионера) кто что надо ставку комитента (ОСН).

Если укажем нашу - то будет редкостный изврат когда СНО =  ЕНВД и Ставка НДС 18% (с суммой) клиент/ИФНС не будут в шоке?
78 Garykom
 
гуру
06.12.18
20:23
(77)+ По логике должна быть возможность обе СНО указывать и нашу и комитента но нету.
Чью же СНО указывать то? Товар не наш (комитента), но по договору "комиссионер продает от своего имени"
79 NorthWind
 
06.12.18
21:59
(78) посмотри http://mvf.klerk.ru/usn/s016.htm. Я не специалист в торговле, но как мне кажется, никакого изврата нет - действительно должно быть СНО=ЕНВД и да, выделять НДС и счет-фактуры выписывать если опт. А потом комиссионер будет этот НДС уже у себя отражать в книге продаж полноценно.
80 NorthWind
 
06.12.18
22:00
* комитент, сорьки
81 NorthWind
 
06.12.18
22:03
там речь про УСН, но мне кажется, в данном контексте разницы нет, т.е. при спецрежиме в случае комиссионной торговли комиссионер выделяет НДС так, как нужно комитенту, а свою СНО показывает такой, какая она у него есть фактически
82 Aleksey
 
06.12.18
22:12
(77) Мы на УСН торгуем товаром комитента который на ОСН

В шапке нужно указывать СНО владельца кассы, т.е. ваш, и в ТЧ не забыть указать реквизиты комитента (наименование и ИНН)
83 Garykom
 
гуру
06.12.18
22:47
(82) Вот про шапку и речь и почему именно наш СНО если находил мнения что надо не наш ибо товар то не наш?

В п. 1 ст. 4.7 Закона N 54-ФЗ
http://www.consultant.ru/document/cons_doc_LAW_42359/7a607e9ee7058b0c3bcb22e564e88190964aee72/

написано:
"1. Кассовый чек и бланк строгой отчетности содержат, за исключением случаев, установленных настоящим Федеральным законом, следующие обязательные реквизиты:"

"применяемая при расчете система налогообложения;"

По сути мы налога с продажи не платим (за услуги - вознаграждение по договору комиссии оно отдельно идет).
Налоги по ОСН (причем с НДС) платит комитент уже после по данным отчетов от нас.

Так какую же СНО указывать?
84 Garykom
 
гуру
06.12.18
22:50
(83)+ Смысл в том что мы "агент" который передает денежку от покупателя к комитенту, эти денежки (при расчете согласно 54-ФЗ) не наши.
Наша СНО (ЕНВД) тут ни пришей кобыле хвост.
85 Сияющий в темноте
 
07.12.18
07:25
Ндс из стоимости товара можно на любой системн налогообложения выделить,только нужно не забывать,что после этого его нужно заплатить,в случае агента-деньги передаются принципалу,и он уже платит ндс,как положено.
агент же,при передаче,может выделить ндс,который он указал в чеке.
чужую же систему налогообложения мы в чеке не имеем права указывать.
86 NorthWind
 
07.12.18
19:30
(84) https://www.audit-it.ru/articles/account/contracts/a70/939411.html

Применяемая система налогообложения

В Законе N 54-ФЗ не указано, чья система налогообложения указывается в кассовом чеке - комиссионера или комитента. Однако исходя из текста Приказа можно прийти к выводу, что в кассовом чеке, который покупателю выдает комиссионер (пользователь ККТ) при расчете за реализованный товар комитента, указывается система налогообложения комиссионера.

Так, в п. 7 Примечаний к таблице 7 указано, что реквизит "системы налогообложения" должен содержать сведения о системах налогообложения, которые могут применяться пользователем при применении регистрируемого экземпляра ККТ, в соответствии правилами, указанными в таблице 9.

В кассовом чеке, БСО, кассовом чеке коррекции и БСО коррекции может быть указана только одна из применяемых пользователем систем налогообложения (таблица 5).

Под пользователем для целей Закона N 54-ФЗ понимается организация или индивидуальный предприниматель, применяющие ККТ при осуществлении расчетов (ст. 1.1 Закона N 54-ФЗ). В рассматриваемой ситуации пользователем признается комиссионер.
87 Garykom
 
гуру
07.12.18
19:44
(86) Это я понимаю, но ситуация де факто (реализация товара между комитентом и покупателем, с движением денежных средств за оплату фактически в пользу комитента а не комиссионера) где ФНС логично видеть СНО по сделке (по которой и будет уплачен налог) вместе со Ставкой НДС.

Вступает в противоречие с де юре, где банально разработчики закона не продумали подобные случаи.
88 Garykom
 
гуру
07.12.18
19:45
(87)+ Скорее всего добавят еще реквизит чека (тег) чека - "СНО комитента" аналогично с его ИНН и наименованием.
Вопрос только когда?
89 Aleksey
 
07.12.18
23:44
(87) А еще в рамках одного чека у тебя может быть 8 комитентов на разных СН (ОСН, УСН, Патент) и + в чеке твой товар.
Если писать в шапку, то что же получается бить на 9 чеков? Указывать через запятую?

Логичнее СНО писать не в шапку (там как раз логично СНО владельца), а как свойство товара.

Но меня больше волнует то, кто круче Приказ налоговой или ФЗ?

В ФЗ в качестве реквизитов чека нет указания на выделения комиссионного товара и указания комитента. Эти требования введены приказом ФНС, по сути расширив требования ФЗ. И насколько я понимаю по закону так делать нельзя. В законе нет разрешения ФНС расширять тэги и область применения их
90 NorthWind
 
13.12.18
08:30
(73) В итоге выяснилось следующее. Хотя в таблицу ККТ ИНН кассиров записываются, в реальности текущая прошивка не забирает их оттуда при формировании посылки в ОФД. Нужно явно записывать тег, тогда все работает. Как я понял, дрова тут ни при чем, так работает встроенное ПО кассы.
91 oskarsan
 
24.12.18
11:04
(90) Подскажите пример тега для открытия смены.
Пробую:

Если глФР.РежимККМ = 4 Тогда
     глФР.Password = глФРПарольПользователя;
     глФР.НомерТега = 1203;    //TagNumber
     глФР.ТипТега = 7;            //TagType    
     глФР.ЗначениеТегаСтрока = СокрЛП(ИННКассира);      
     глФР.FNSendTag(); // отправка тега
     глФР.ОткрытьСмену();
КонецЕсли;  

выдает ошибку: "Неверное состояние ФН"

при пробитии чека и закрытии смены все нормально
Объект.Password = Пар;
Объект.НомерТега = 1203;    //TagNumber
Объект.ТипТега = 7;            //TagType    
Объект.ЗначениеТегаСтрока = СокрЛП(ИННКассира);    
Объект.FNSendTag(); // отправка тега
Объект.Summ1 = Получено;
Объект.Summ2 = Терминал;
Объект.Summ3 = Сертификат;
Объект.CloseCheck();

Объект.Password = Пар;
Объект.НомерТега = 1203;    //TagNumber
Объект.ТипТега = 7;            //TagType    
Объект.ЗначениеТегаСтрока = СокрЛП(ИННКассира);    
Объект.FNSendTag(); // отправка тега
Объект.PrintReportWithCleaning();
92 MWWRuza
 
гуру
10.01.19
23:22
Функция ОткрытьСмену()
    ECR.NewDocument();
    ECR.Mode = 1;
    ECR.SetMode();
    ECR.AttrNumber = 1021;
    ECR.AttrValue = СокрЛП(глПользователь.Наименование);
    ECR.WriteAttribute();
    // Записать ИНН кассира
    Если СокрЛП(глПользователь.ИНН) <> "" Тогда
        ECR.AttrNumber = 1203;
        ECR.AttrValue = СокрЛП(глПользователь.ИНН);
        ECR.WriteAttribute();
    КонецЕсли;    
    Если ECR.OpenSession() <> 0 Тогда
        Возврат 0;
    Иначе
        Возврат 1;
    КонецЕсли;    
КонецФункции
93 Масянька
 
11.01.19
08:47
(91) Открытие и закрытие смены делается под админом (пароль 30).
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший