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

Публикация № 983346

Оборудование - ККМ

7.7 Тис АТОЛ ККТ СНО Ставка НДС НДС20 ЕНВД ОСН FprnM1C FprnM8 frATOL54_comm_105

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

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

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

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

Если необходимо, то измененяем файл описания оборудования с расширением *.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);
		
		// Откроем денежный ящик, если он подключен
		глДПОткрытьДенежныйЯщик();
	КонецЕсли;
	
	Возврат ЧекПробитККМ;
	
КонецФункции // ПробитьЧекНаККМ()

 

0

Скачать файлы

Наименование Файл Версия Размер
Обработка обслуживания торгового оборудования 1с 7.7 ТиС:
.ert 36,00Kb
04.06.19
10
.ert 36,00Kb 10 Скачать
Обработка обслуживания торгового оборудования. 1С: 7.7 ТиС с печатью Покупателя и ИНН Покупателя
.ert 36,00Kb
28.06.19
4
.ert 36,00Kb 4 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. semenov_a_n 30.01.19 20:45 Сейчас в теме
Обработку frATOL54_comm_105.ert надо допилить на НДС20%
ИначеЕсли СписокТоваров.СтавкаНДС = "18" Тогда
Объект.TaxTypeNumber = 3;
ИначеЕсли СписокТоваров.СтавкаНДС = "20" Тогда
Объект.TaxTypeNumber = 3; // добавляем для НДС20%;
И настоить ФР по картинке, будет работать, печатать в чеке услугу а не товар....
Прикрепленные файлы:
2. artmaks1988 16 30.01.19 21:10 Сейчас в теме
(1) условие на 20 % и так есть в обработке
3. semenov_a_n 30.01.19 21:22 Сейчас в теме
Это в типовой из последнего релиза R770999, чтобы не писать конфу, как вариант....
4. artmaks1988 16 30.01.19 21:26 Сейчас в теме
(3) для этой обработки тоже конфу пилить не нужно. Если нужны скидки, то нужно. Новый драйвер сам не рассчитывает скидку по проценту
5. semenov_a_n 30.01.19 21:38 Сейчас в теме
Да я не претендую, возможно у меня релиз ТиС староват.... Вы исправляете в чеке ККМ Функцию ПробитьЧекНаККМ(), а в глобальном модуле функци. глФРПечататьЧек () наверняка придется исправлять (у меня)?
6. artmaks1988 16 30.01.19 21:53 Сейчас в теме
(5) изменяется таблица значений с товарами и присваивается нужное значение ПУП. Эти значения и в типовой передаются, а в тз проверяются новые колонки, если нет, то подставляется просто сумма и цена
7. semenov_a_n 30.01.19 22:18 Сейчас в теме
Проблема была в том, что ФР после предновогодней прошивке перестал работать при ОСН, товар и НДС 20%...после этих манипуляций работает ....только печатает в чеке не товар а услуга...
8. Ilchenko 1 16.03.19 15:39 Сейчас в теме
попробовал подключить сыпет кучу ошибок.

Если ПустоеЗначение(глФРPortNumber<<?>>) = 0 Тогда 
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(122)}: Переменная не определена (глФРPortNumber)
PortNumber = 1000 + Число(глФРPortNumber<<?>>);	
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(123)}: Переменная не определена (глФРPortNumber)
Если глФРBaudRate <<?>>= 1200 Тогда BaudRate = 3
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(139)}: Переменная не определена (глФРBaudRate)
ИначеЕсли глФРBaudRate <<?>>= 2400 Тогда BaudRate = 4
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(140)}: Переменная не определена (глФРBaudRate)
ИначеЕсли глФРBaudRate <<?>>= 4800 Тогда BaudRate = 5
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(141)}: Переменная не определена (глФРBaudRate)
ИначеЕсли глФРBaudRate <<?>>= 9600 Тогда BaudRate = 7
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(142)}: Переменная не определена (глФРBaudRate)
ИначеЕсли глФРBaudRate <<?>>= 14400 Тогда BaudRate = 9
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(143)}: Переменная не определена (глФРBaudRate)
ИначеЕсли глФРBaudRate <<?>>= 19200 Тогда BaudRate = 10
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(144)}: Переменная не определена (глФРBaudRate)
ИначеЕсли глФРBaudRate <<?>>= 38400 Тогда BaudRate = 12
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(145)}: Переменная не определена (глФРBaudRate)
ИначеЕсли глФРBaudRate <<?>>= 57600 Тогда BaudRate = 14
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(146)}: Переменная не определена (глФРBaudRate)
ИначеЕсли глФРBaudRate <<?>>= 115200 Тогда BaudRate = 18
{\\SERVER\1C_BASE\МАГАЗИН\EXTFORMS\EQUIP\FRATOL54_COMM_105.ERT(147)}: Переменная не определена (глФРBaudRate)
Фискальный регистратор: ошибка при подключении
    
Показать
10. artmaks1988 16 18.03.19 17:31 Сейчас в теме
(8)Торговля+Склад, редакция 9.2 (7.70.999) - есть все глобальные переменные.
У Вас какая версия?
9. artmaks1988 16 18.03.19 17:31 Сейчас в теме
Торговля+Склад, редакция 9.2 (7.70.999) - есть все глобальные переменные.
У Вас какая версия?
11. grafit 8 09.04.19 15:23 Сейчас в теме
В типовой, в документе "ЧекККМ" только одна форма оплаты (наличная). Пришлось ещё добавить выбор формы оплаты ( нал/безнал).
Прикрепленные файлы:
12. Tarlich 75 03.06.19 14:22 Сейчас в теме
А при печати из ПКО ИНН печатается, передается ?
13. artmaks1988 16 03.06.19 18:02 Сейчас в теме
(12) Если речь идет про ИНН кассира, то возможность передать в обработку обслуживания есть, но необходима доработка в документе ПКО.
14. Tarlich 75 03.06.19 18:37 Сейчас в теме
клиент говорит что если оплата не от физ лица то должен быть параметр инн организации
15. artmaks1988 16 03.06.19 20:47 Сейчас в теме
(14) Если в ПКО не будет заполнен реквизит "Документ основания", то можно в реквизите "Принято от" вписать ИНН покупателя и в строках выведется все, что написано в реквизитах ПКО: "Принято от" и "Основание" . При заполненном реквизите "Документ основания" данные будут заполнены из его табличной части.
16. artmaks1988 16 03.06.19 20:55 Сейчас в теме
(14) Еще конечно можно выводить не фискальные строки с этой информацией
17. Tarlich 75 03.06.19 21:39 Сейчас в теме
(16) Летом 2019 г. будут введены новые реквизиты в чеках, которые оформляются между организациями и ИП при наличном или безналичном расчете (пп. «д» п. 15 ст. 1 Закона № 192-ФЗ). Эти реквизиты предназначены для детального определения покупателя. Необходимо будет указывать наименование организации или ФИО предпринимателя, ИНН клиента. Если для расчетов выставляется счет-фактура, в кассовый чек должны входить реквизиты, относящиеся к предмету расчета (сумма акциза, код страны, рег. номер таможенной декларации).
19. artmaks1988 16 03.06.19 23:25 Сейчас в теме
(17) Проверю документацию к библиотеке. Если такая возможность появилась, то обновлю обработку.
Конфигурацию типовую используете?
20. Tarlich 75 04.06.19 00:39 Сейчас в теме
18. Tarlich 75 03.06.19 21:41 Сейчас в теме
Также, с 1 июля 2019 в чеке будет обязательно указывать:
сведения о стране происхождения товара
сумму акциза и регистрационный номер таможенной декларации (если применимо)
21. Tarlich 75 04.06.19 11:15 Сейчас в теме
Подробнее с назначением новых тегов можно ознакомиться по ссылке https://its.1c.ru/db/newscomm#content:458995:hdoc
22. artmaks1988 16 04.06.19 11:55 Сейчас в теме
(21) В конфигурации без доработок не получится.

В процедуре ПечатьЧека() изменения:

Добавить колонки в Таблицу значений

	
	//Новые реквизиты чека  
	Список.НоваяКолонка("ПризнакПредметаРасчёта"       	, "Число");
	Список.НоваяКолонка("Акциз"       					, "Строка");
	Список.НоваяКолонка("КодСтраныПроисхожденияТовара"	, "Строка");
	Список.НоваяКолонка("НомерТаможеннойДекларации" 	, "Строка");
	//Новые реквизиты чека

Заполнить значения
			//Новые реквизиты чека 
			// Признак предмета расчёта. Свойство ItemType может принимать значения:
			// 	1 - товар, за исключением подакцизного товара
			// 	2 - подакцизный товар
			// 	3 - работа
			// 	4 - услуга
			// 	5 - приём ставок при деятельность по организации и проведению азартных игр
			// 	6 - выплата выигрышей в азартных играх
			// 	7 - реализация лотерейных билетов или ставок при деятельность по организации и проведению лотерей
			// 	8 - выплата выигрышей в лотереях
			// 	9 -  прав на использование результатов интеллектуальной деятельности или средств индивидуализации
			// 	10 -  аванс, задаток, предоплата, кредит, взносе в счет оплаты, пени, штраф, вознаграждение, бонус и иной аналогичный предмет расчета
			// 	11 -  предмет расчета, состоящий из предметов, каждому из которых может быть присвоено значение от 0 до 10 (набор)
			// 	12 -  предмет расчета, не относящийся к предметам расчета, которым может быть присвоено значение от 0 до 11
			Список.ПризнакПредметаРасчёта		= 1; //нужно условие для определения 
			
			Список.Акциз 						= ""; //где брать не понятно 
			Список.КодСтраныПроисхожденияТовара = ДокумОснование.Номенклатура.СтранаПроисхождения.Код;
			Список.НомерТаможеннойДекларации 	= ДокумОснование.Номенклатура.НомерГТД.Код;
			//Новые реквизиты чека

Показать


Определить данные покупателя

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


Передать в функцию глФРПечататьЧек()

глФРПечататьЧек(Список, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ПУП, Кассир, КассирИНН, Покупатель, ПокупательИНН) = 1


Изменить Глобальную функцию

Функция глФРПечататьЧек(СписокТоваров, СуммаЧека, Получено, Скидка, ПризнВозврата, НомерСекции, НомерЧека, ПУП, Кассир, КассирИНН, Покупатель = "", ПокупательИНН = "")  Экспорт
	
	Рез = 0;
	
	Если глФРВкл = 1 Тогда
		Параметры = СоздатьОбъект("СписокЗначений");
		Параметры.Установить("Процесс"           , "печатать_чек");
		Параметры.Установить("Объект"            , глФР);
		Параметры.Установить("ПарольПользователя", глФРПарольПользователя);
		Параметры.Установить("СписокТоваров"     , СписокТоваров);
		Параметры.Установить("СуммаЧека"         , СуммаЧека);
		Параметры.Установить("Получено"          , Получено);
		Параметры.Установить("Скидка"            , Скидка);
		Параметры.Установить("Возврат"           , ПризнВозврата);
		Параметры.Установить("ПУП"	 		     , ПУП);
		Параметры.Установить("Кассир" 		     , Кассир);
		Параметры.Установить("КассирИНН"	     , КассирИНН);
		Параметры.Установить("НомерСекции"       , НомерСекции);
		Параметры.Установить("ПриемНаличныхОтЮрЛиц", глФРДляПриемаНаличныхОтЮрЛиц);
		 
		//Новые реквизиты чека 
		Параметры.Установить("Покупатель"   , Покупатель);
		Параметры.Установить("ПокупательИНН", ПокупательИНН);
		//Новые реквизиты чека 
		
		РезТекст = глОборудованиеКоманда("ФР", глФРОбработка, Параметры);
		Если ПустоеЗначение(РезТекст) = 0 Тогда
			Сообщить(РезТекст);
		Иначе
			Если Параметры.Получить("Результат") = 0 Тогда
				Сообщить("Фискальный регистратор: ошибка при печати чека");
				Сообщить(Параметры.Получить("ОписаниеРезультата"));
			Иначе
				НомерЧека = Параметры.Получить("НомерЧека");
				Рез = 1;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Возврат Рез;
	
КонецФункции // глФРПечататьЧек()
Показать
23. artmaks1988 16 04.06.19 12:06 Сейчас в теме
(21) Новую обработку нет возможности проверить. Пока уберу из публикации
25. Tarlich 75 04.06.19 12:28 Сейчас в теме
(23) а можно прислать tarlich@mail.ru -))
27. artmaks1988 16 04.06.19 12:47 Сейчас в теме
(25) Отправлю
Проверьте устанавливаются атрибуты для ст строк товара.
24. artmaks1988 16 04.06.19 12:20 Сейчас в теме
(21)
И значения брать из партии, если авто, то получить из движения документов

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


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

	Список.Акциз = Партия.Свойство;
26. Tarlich 75 04.06.19 12:31 Сейчас в теме
(Я так думаю)
Акциз нужен только если маркируемая продукция (сигареты обувь аптеки и т.д) (где посмотреть какой у каого код ?)
а в поле АКЦИЗ сканируем 2Д сканером ШК . так ?
28. pm52.ru 27.06.19 15:39 Сейчас в теме
Есть версия с печатью ИНН покупателя?
29. artmaks1988 16 27.06.19 19:13 Сейчас в теме
(28) Есть доработанная, но проверить пока не на чем. И для передачи ИНН покупателя нужна доработка конфигурации. В начале месяца в последнем релизе этого не было.
30. pm52.ru 28.06.19 17:56 Сейчас в теме
//Покупатель
Объект.AttrNumber = 1227;
Объект.AttrValue = Покупатель; //281218
Объект.AttrPrint = 1;
Объект.WriteAttribute();

//ИНН
Объект.AttrNumber = 1228;
Объект.AttrValue = ПокупательИНН; //281218
Объект.AttrPrint = 1;
Объект.WriteAttribute();
31. pm52.ru 28.06.19 17:56 Сейчас в теме
(30) проверил этот код, на последнем 8 драйвере работает
33. bds22 14 01.07.19 07:59 Сейчас в теме
(30) последняя версия это 8.16.4? на сайте атола он спрятан или я как-то неправильно открываю. почему-то захожу у них там в "архив", а там пусто
34. bds22 14 01.07.19 09:06 Сейчас в теме
(33)все же нашел последнюю 8.16.6. почему-то передаю ИНН покупателя и наименование, но на печать они не выходят (все делаю так же). у меня АТОЛ FPrint-22ПТК, прошивка (ID серии) 10-7733
может быть в кассовом аппарате (т.е. его софте) есть какая-то настройка
35. dmarenin 228 01.07.19 14:28 Сейчас в теме
(34)
8.16.6
добрый день. Есть возможность выложить драйвер 8.16.6 или ссылку на драйвер на фс.атол?
36. bds22 14 02.07.19 07:07 Сейчас в теме
(35)добрый день! написал сообщение, где я брал обработку, но у меня в 8-й версии не работает печать ИНН (чтобы не бросать тень на обсуждаемую обработку, может быть я где-то что-то сделал неправильно, к данной обработке это отношения не имеет, я просто использовал изложенные здесь идеи, за что спасибо Автору)
поставил 10-ю версию, там у меня выходит ИНН и наименование...
37. dmarenin 228 02.07.19 08:16 Сейчас в теме
(36) мне нужен был просто дккм 8.16.6. к обработке отношения не имею ни какого. сорян за оффтоп.
32. artmaks1988 16 28.06.19 19:02 Сейчас в теме
Тогда сейчас обновлю обработку
38. r_eist 13.07.19 05:37 Сейчас в теме
Подскажите, пожалуйста, получилось реализовать на 8-м драйвере печать ИНН и название покупателя?
39. artmaks1988 16 13.07.19 18:24 Сейчас в теме
(38) Да получилось. Нужна доработка в конфигурации. Есть описание в комментарии выше
Оставьте свое сообщение