Обработка обслуживания торгового оборудования. 1С: 7.7 ТиС



Обработка обслуживания для 1с 7.7 ТиС.
Версия драйвера ККТ Атол 8.16.5.9221
Обработка предназначена для корректной передачи СНО при пробитии чека.

Для 1с 7.7 ТиС 7.70.999 пришлось написать обработку подключаемого оборудования для новых драйверов Атол версии 8.16.5.9221, которая может работать с разными СНО и ставкой НДС 20 % (если ККТ прошит до последней прошивки 7733 и получена лицензия).

Для работы необходимо скопировать файлы из каталога драйвера "C:Program FilesATOLDrivers8Bin"с расширением *.dll в каталога ИБ или платформы и зарегистрировать "FprnM1C.dll" с помощью regsvr32.exe.

Скопировать обработку обслуживания "frATOL54_comm_105.efd" в [каталог ИБ]ExtFormsEquip

Если необходимо, то измененяем файл описания оборудования с расширением *.efd.

Например: 

Модель оборудования АТОЛ 55Ф, то изменяем содержимое файла "fr_Atol55F_105.efd" на следующее:

Вид=фр
Модель=АТОЛ 55Ф 1.05
Компонента=FprnM1C.dll
ПрогИд=FprnM8
Обработка=frATOL54_comm_105.ert

В 1с 7.7 Сервис-Настройки торгового оборудования-Фискальный регистратор необходимо выбрать модель ККТ, в настройках подключения выбрать ВК "FprnM1C.dll", обработку обслуживания "frATOL54_comm_105.ert", программный идентификатор "FprnM8"

Для печати скидок в таблицу значений товаров необходимо добавить колонки и заполнить "ЦенаСоСкидками" и "СуммаСкидок".

Пример функции ПробитьЧекНаККМ() в форме документа ЧекККМ:

Функция ПробитьЧекНаККМ()
Перем НомерЧека;

СписокТоваров = СоздатьОбъект("ТаблицаЗначений");
СписокТоваров.НоваяКолонка("ТовНаим"   , "Строка");
СписокТоваров.НоваяКолонка("Цена"      , "Число");
СписокТоваров.НоваяКолонка("Количество", "Число");
СписокТоваров.НоваяКолонка("Сумма"    , "Число");
СписокТоваров.НоваяКолонка("СтавкаНДС" , "Строка");

//Изменения нового формата
СписокТоваров.НоваяКолонка("СуммаСкидок"  , "Число");
СписокТоваров.НоваяКолонка("ЦенаСоСкидками" , "Число");
СписокТоваров.НоваяКолонка("НомерСекции"  , "Число");
СписокТоваров.НоваяКолонка("СуммаНДС"   , "Число");
//Изменения нового формата

ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл

СписокТоваров.НоваяСтрока();
СписокТоваров.ТовНаим    = Номенклатура.Наименование;
СписокТоваров.Цена       = Цена;
СписокТоваров.Количество = Количество;
СписокТоваров.Сумма   = Сумма;

//Изменения нового формата
Если Скидка.Процент <> 0 Тогда
СписокТоваров.ЦенаСоСкидками  = Сумма / Количество;
СписокТоваров.СуммаСкидок   = Окр(Цена * Количество, 2, 1) - Сумма;
Иначе
СписокТоваров.ЦенаСоСкидками  = Цена;
СписокТоваров.СуммаСкидок   = 0;
КонецЕсли;
//Изменения нового формата

//Тип системы налогообложения
//0 Общая ОСН
//1 Упрощенная Доход УСН доход
//2 Упрощенная Доход минус Расход УСН доход - расход
//3 Единый налог на вмененный доход ЕНВД
//4 Единый сельскохозяйственный налог ЕСН
//5 Патентная система налогообложения Патент

Если Номенклатура.СтавкаНДС = Перечисление.СтавкиНДС.БезНДС Тогда

СписокТоваров.СтавкаНДС  = "none";

//Изменения нового формата
ПУП = 3;
СписокТоваров.НомерСекции  = 1;
СписокТоваров.СуммаНДС   = 0;
//Изменения нового формата

Иначе



////Изменения нового формата
//СписокТоваров.СтавкаНДС  = 100 * глНачисляемыйНДС(Номенклатура.СтавкаНДС);
ПроцентНДС = глНачисляемыйНДС(Номенклатура.СтавкаНДС);

СписокТоваров.СтавкаНДС  = 100 * ПроцентНДС ;

ПУП = 0;
СписокТоваров.НомерСекции   = 8;
СписокТоваров.СуммаНДС   = Окр(Сумма * ПроцентНДС / (ПроцентНДС + 1), 2, 1);
//Изменения нового формата

КонецЕсли;

КонецЦикла;

ПризнВозврата = ?(ВидОперации = Перечисление.ВидыОперацийЧекККМ.Чек, 0, 1);

ВыбКасса = глЗначениеПоУмолчанию("ОсновнаяКасса");
ВыбКассир = "";

Если ПустоеЗначение(ВыбКасса) = 0 Тогда
ВыбКассир = ВыбКасса.КассирККМ.Получить(ДатаДок);
Если ПустоеЗначение(ВыбКассир) = 1 Тогда
ВыбКассир = Фирма.ЮрЛицо.Кассир.Получить(ДатаДок);
КонецЕсли;
КонецЕсли;

Кассир   = глФамилияИмяОтчество(ВыбКассир);

ЧекПробитККМ  = глФРПечататьЧек(СписокТоваров, Итог("Сумма"), ?(Получено=0,Итог("Сумма"),Получено), Скидка.Процент, ПризнВозврата, Склад.НомерСекции, НомерЧека, ПУП, Кассир);

Если ЧекПробитККМ = 1 Тогда
ПриЗаписиПерепроводить(0);
НомерЧекаККМ = НомерЧека;
Записать();
ПриЗаписиПерепроводить(1);

// Откроем денежный ящик, если он подключен
глДПОткрытьДенежныйЯщик();
КонецЕсли;

Возврат ЧекПробитККМ;

КонецФункции // ПробитьЧекНаККМ()

 

47 Comments

  1. semenov_a_n

    Обработку frATOL54_comm_105.ert надо допилить на НДС20%

    ИначеЕсли СписокТоваров.СтавкаНДС = «18» Тогда

    Объект.TaxTypeNumber = 3;

    ИначеЕсли СписокТоваров.СтавкаНДС = «20» Тогда

    Объект.TaxTypeNumber = 3; // добавляем для НДС20%;

    И настоить ФР по картинке, будет работать, печатать в чеке услугу а не товар….

    Reply
  2. artmaks1988

    (1) условие на 20 % и так есть в обработке

    Reply
  3. semenov_a_n

    Это в типовой из последнего релиза R770999, чтобы не писать конфу, как вариант….

    Reply
  4. artmaks1988

    (3) для этой обработки тоже конфу пилить не нужно. Если нужны скидки, то нужно. Новый драйвер сам не рассчитывает скидку по проценту

    Reply
  5. semenov_a_n

    Да я не претендую, возможно у меня релиз ТиС староват…. Вы исправляете в чеке ККМ Функцию ПробитьЧекНаККМ(), а в глобальном модуле функци. глФРПечататьЧек () наверняка придется исправлять (у меня)?

    Reply
  6. artmaks1988

    (5) изменяется таблица значений с товарами и присваивается нужное значение ПУП. Эти значения и в типовой передаются, а в тз проверяются новые колонки, если нет, то подставляется просто сумма и цена

    Reply
  7. semenov_a_n

    Проблема была в том, что ФР после предновогодней прошивке перестал работать при ОСН, товар и НДС 20%…после этих манипуляций работает ….только печатает в чеке не товар а услуга…

    Reply
  8. Ilchenko

    попробовал подключить сыпет кучу ошибок.

    Если ПустоеЗначение(глФРPortNumber<<?>>) = 0 Тогда
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(122)}: Переменная не определена (глФРPortNumber)
    PortNumber = 1000 + Число(глФРPortNumber<<?>>);
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(123)}: Переменная не определена (глФРPortNumber)
    Если глФРBaudRate <<?>>= 1200 Тогда BaudRate = 3
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(139)}: Переменная не определена (глФРBaudRate)
    ИначеЕсли глФРBaudRate <<?>>= 2400 Тогда BaudRate = 4
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(140)}: Переменная не определена (глФРBaudRate)
    ИначеЕсли глФРBaudRate <<?>>= 4800 Тогда BaudRate = 5
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(141)}: Переменная не определена (глФРBaudRate)
    ИначеЕсли глФРBaudRate <<?>>= 9600 Тогда BaudRate = 7
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(142)}: Переменная не определена (глФРBaudRate)
    ИначеЕсли глФРBaudRate <<?>>= 14400 Тогда BaudRate = 9
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(143)}: Переменная не определена (глФРBaudRate)
    ИначеЕсли глФРBaudRate <<?>>= 19200 Тогда BaudRate = 10
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(144)}: Переменная не определена (глФРBaudRate)
    ИначеЕсли глФРBaudRate <<?>>= 38400 Тогда BaudRate = 12
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(145)}: Переменная не определена (глФРBaudRate)
    ИначеЕсли глФРBaudRate <<?>>= 57600 Тогда BaudRate = 14
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(146)}: Переменная не определена (глФРBaudRate)
    ИначеЕсли глФРBaudRate <<?>>= 115200 Тогда BaudRate = 18
    {\SERVER1C_BASEМАГАЗИНEXTFORMSEQUIPFRATOL54_COMM_105.ERT(147)}: Переменная не определена (глФРBaudRate)
    Фискальный регистратор: ошибка при подключении
    
    

    Показать

    Reply
  9. artmaks1988

    (8)Торговля+Склад, редакция 9.2 (7.70.999) — есть все глобальные переменные.

    У Вас какая версия?

    Reply
  10. artmaks1988

    Торговля+Склад, редакция 9.2 (7.70.999) — есть все глобальные переменные.

    У Вас какая версия?

    Reply
  11. grafit

    В типовой, в документе «ЧекККМ» только одна форма оплаты (наличная). Пришлось ещё добавить выбор формы оплаты ( нал/безнал).

    Reply
  12. Tarlich

    А при печати из ПКО ИНН печатается, передается ?

    Reply
  13. artmaks1988

    (12) Если речь идет про ИНН кассира, то возможность передать в обработку обслуживания есть, но необходима доработка в документе ПКО.

    Reply
  14. Tarlich

    клиент говорит что если оплата не от физ лица то должен быть параметр инн организации

    Reply
  15. artmaks1988

    (14) Если в ПКО не будет заполнен реквизит «Документ основания», то можно в реквизите «Принято от» вписать ИНН покупателя и в строках выведется все, что написано в реквизитах ПКО: «Принято от» и «Основание» . При заполненном реквизите «Документ основания» данные будут заполнены из его табличной части.

    Reply
  16. artmaks1988

    (14) Еще конечно можно выводить не фискальные строки с этой информацией

    Reply
  17. Tarlich

    (16) Летом 2019 г. будут введены новые реквизиты в чеках, которые оформляются между организациями и ИП при наличном или безналичном расчете (пп. «д» п. 15 ст. 1 Закона № 192-ФЗ). Эти реквизиты предназначены для детального определения покупателя. Необходимо будет указывать наименование организации или ФИО предпринимателя, ИНН клиента. Если для расчетов выставляется счет-фактура, в кассовый чек должны входить реквизиты, относящиеся к предмету расчета (сумма акциза, код страны, рег. номер таможенной декларации).

    Reply
  18. Tarlich

    Также, с 1 июля 2019 в чеке будет обязательно указывать:

    сведения о стране происхождения товара

    сумму акциза и регистрационный номер таможенной декларации (если применимо)

    Reply
  19. artmaks1988

    (17) Проверю документацию к библиотеке. Если такая возможность появилась, то обновлю обработку.

    Конфигурацию типовую используете?

    Reply
  20. Tarlich

    (19) да …

    Reply
  21. Tarlich

    Подробнее с назначением новых тегов можно ознакомиться по ссылке https://its.1c.ru/db/newscomm#content:458995:hdoc

    Reply
  22. artmaks1988
    Reply
  23. artmaks1988

    (21) Новую обработку нет возможности проверить. Пока уберу из публикации

    Reply
  24. artmaks1988

    (21)

    И значения брать из партии, если авто, то получить из движения документов

    Список.КодСтраныПроисхожденияТовара = ДокумОснование.Партия.СтранаПроисхождения.Код;
    Список.НомерТаможеннойДекларации  = ДокумОснование.Партия.ГТД.Код;
    

    Акциз тоже можно добавить в свойство партии

    Список.Акциз = Партия.Свойство;
    
    Reply
  25. Tarlich

    (23) а можно прислать tarlich@mail.ru -))

    Reply
  26. Tarlich

    (Я так думаю)

    Акциз нужен только если маркируемая продукция (сигареты обувь аптеки и т.д) (где посмотреть какой у каого код ?)

    а в поле АКЦИЗ сканируем 2Д сканером ШК . так ?

    Reply
  27. artmaks1988

    (25) Отправлю

    Проверьте устанавливаются атрибуты для ст строк товара.

    Reply
  28. pm52.ru

    Есть версия с печатью ИНН покупателя?

    Reply
  29. artmaks1988

    (28) Есть доработанная, но проверить пока не на чем. И для передачи ИНН покупателя нужна доработка конфигурации. В начале месяца в последнем релизе этого не было.

    Reply
  30. pm52.ru

    //Покупатель

    Объект.AttrNumber = 1227;

    Объект.AttrValue = Покупатель; //281218

    Объект.AttrPrint = 1;

    Объект.WriteAttribute();

    //ИНН

    Объект.AttrNumber = 1228;

    Объект.AttrValue = ПокупательИНН; //281218

    Объект.AttrPrint = 1;

    Объект.WriteAttribute();

    Reply
  31. pm52.ru

    (30) проверил этот код, на последнем 8 драйвере работает

    Reply
  32. artmaks1988

    Тогда сейчас обновлю обработку

    Reply
  33. bds22

    (30) последняя версия это 8.16.4? на сайте атола он спрятан или я как-то неправильно открываю. почему-то захожу у них там в «архив», а там пусто

    Reply
  34. bds22

    (33)все же нашел последнюю 8.16.6. почему-то передаю ИНН покупателя и наименование, но на печать они не выходят (все делаю так же). у меня АТОЛ FPrint-22ПТК, прошивка (ID серии) 10-7733

    может быть в кассовом аппарате (т.е. его софте) есть какая-то настройка

    Reply
  35. dmarenin

    (34)

    8.16.6

    добрый день. Есть возможность выложить драйвер 8.16.6 или ссылку на драйвер на фс.атол?

    Reply
  36. bds22

    (35)добрый день! написал сообщение, где я брал обработку, но у меня в 8-й версии не работает печать ИНН (чтобы не бросать тень на обсуждаемую обработку, может быть я где-то что-то сделал неправильно, к данной обработке это отношения не имеет, я просто использовал изложенные здесь идеи, за что спасибо Автору)

    поставил 10-ю версию, там у меня выходит ИНН и наименование…

    Reply
  37. dmarenin

    (36) мне нужен был просто дккм 8.16.6. к обработке отношения не имею ни какого. сорян за оффтоп.

    Reply
  38. r_eist

    Подскажите, пожалуйста, получилось реализовать на 8-м драйвере печать ИНН и название покупателя?

    Reply
  39. artmaks1988

    (38) Да получилось. Нужна доработка в конфигурации. Есть описание в комментарии выше

    Reply
  40. vvv71

    Какая нужна версия ДТО 8 чтобы печатался ИНН покупателя?

    Reply
  41. belyavsky

    Повисает при загрузке внешней компоненты

    Если ЗагрузитьВнешнююКомпоненту(Компонента) = 0 Тогда

    ОписаниеРезультата = «не удалось загрузить внешнюю компоненту «»» + Компонента + «»»»;

    вот здесь наглухо и всё

    Reply
  42. artmaks1988

    (40) Точно не скажу. В комментариях пишут, что используют 8.16.6

    Reply
  43. artmaks1988

    (41) Это пункт проделывали из описания: Для работы необходимо скопировать файлы из каталога драйвера «C:Program FilesATOLDrivers8Bin»с расширением *.dll в каталога ИБ или платформы и зарегистрировать «FprnM1C.dll» с помощью regsvr32.exe.

    Reply
  44. belyavsky

    (43)да, конечно

    Reply
  45. artmaks1988

    (44)установите 8 драйвер последней версии и повтори все действия из описания

    Reply
  46. dima-2828

    У меня АТОЛ 11 Ф драйвер 8.16.6 и тоже не печатает ИНН и покупателя хотя обработке пишу :

    Покупатель = «ИП Немирова Татьяна Владиславовна»; //для отладки

    Объект.AttrNumber = 1227;

    Объект.AttrValue = Покупатель;

    Объект.WriteAttribute();

    ПокупательИНН = «781415113282»; //для отладки

    Объект.AttrNumber = 1228;

    Объект.AttrValue = ПокупательИНН;

    Объект.WriteAttribute();

    Вот думаю 10-ый драйвер поставить.

    т.к. в логе читаю следующее:

    14.08.2019 16:32:16.777 0000002637 Driver.Set_AttrNumber 1227

    14.08.2019 16:32:23.736 0000006957 Driver.Set_AttrValue ИП Немирова Татьяна Владиславовна

    14.08.2019 16:33:11.616 0000047877 Driver.WriteAttribute

    14.08.2019 16:33:11.616 0000057471 TCustomTechThread.SetResult -1:

    14.08.2019 16:33:11.616 0000000000 Посылка пакета: C1 01 2F 00 00 E8 01 01 00 CB 04 0C 00 90 E3 E1 AA A5 A0 AB A0 20 8E 8E 8E

    14.08.2019 16:33:11.672 0000000062 TCustomTechThread.SetResult -1: (InProgress)

    14.08.2019 16:33:11.680 0000000000 TCustomTechThread.SetResult 0:

    14.08.2019 16:33:11.680 0000000000 AsyncResult: STATUS_AsyncError

    14.08.2019 16:33:11.680 0000000000 Посылка пакета: C4

    14.08.2019 16:33:11.681 0000000000 Received async err answer: 55 9A 00

    14.08.2019 16:33:11.681 0000000000 Посылка пакета: C4

    14.08.2019 16:33:11.682 0000000000 TCustomTechThread.SetResult 0:

    14.08.2019 16:33:11.682 0000000062 Ошибка! ResultCode = -3801 ResultDescription = «Чек закрыт — операция невозможна» BadParam = 0 BadParamDescription = «Ошибок в параметрах нет»

    14.08.2019 16:33:22.268 0000010593 Driver.Set_AttrNumber 1228

    14.08.2019 16:33:23.016 0000000749 Driver.Set_AttrValue 781415113282

    14.08.2019 16:33:31.444 0000008424 Driver.WriteAttribute

    14.08.2019 16:33:31.444 0000019766 TCustomTechThread.SetResult -1:

    14.08.2019 16:33:31.444 0000000000 Посылка пакета: C1 01 30 00 00 E8 01 01 00 CC 04 0C 00 37 38 31 36 35 31 31 39 36 35 20 20

    14.08.2019 16:33:31.501 0000000062 TCustomTechThread.SetResult -1: (InProgress)

    14.08.2019 16:33:31.510 0000000000 TCustomTechThread.SetResult 0:

    14.08.2019 16:33:31.510 0000000000 AsyncResult: STATUS_AsyncError

    14.08.2019 16:33:31.510 0000000000 Посылка пакета: C4

    14.08.2019 16:33:31.510 0000000000 Received async err answer: 55 9A 00

    14.08.2019 16:33:31.510 0000000000 Посылка пакета: C4

    14.08.2019 16:33:31.511 0000000000 TCustomTechThread.SetResult 0:

    14.08.2019 16:33:31.511 0000000062 Ошибка! ResultCode = -3801 ResultDescription = «Чек закрыт — операция невозможна» BadParam = 0 BadParamDescription = «Ошибок в параметрах нет»

    Reply
  47. dima-2828

    ЗАРАБОТАЛО !!!

    Надо это писать после списка товаров.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *