API Штрих-М чекопечати для конфигураций 1с7.7

02.07.20

Интеграция - ККМ

Подключение Штрих-М Чекопечати  к конфигурации 1с7.7 на примере Штрих-М Торговое Предприятие Prof 4.13.05.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
API Штрих-М Чекопечати  для конфигурации 1с7.7:
.txt 10,09Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.

 

  1. Установка ПО

Установим Штрих-М Чекопечать Х.ХХ, если Windows 7 или выше будем устанавливать от имени администратора, обязательно устанавливать драйвера Атол и Штрих-М(по мануалу). Затем сделать запрос на ключ для привязки по ПК или ККТ, либо можно прбовать работать в режиме ДЕМО, сумма позиции в чеке не должна превышать 10р, а количество быть не более 1.

    1. Настройка ПО

Скопировать лицензию в корень программы чекопечати(обычно C:\Program Files\ShtrihOFD\) если она есть.

-Флаг «Печатать чек по макету(ShablonCheck.xml)» -печать чека идет по шаблону который задан в одноименном файле

-Пересчет чека без скидки с учетом округления – система пересчитывает чек с учетом скидки на позиции и округляет на весь чек

 -Вести лог-в папку «C:\Program Files\ShtrihOFD\Log» пишутся логи: errorFRДД_ММ_гггг.log – лог операций и ошибок по ККТ, MessageFileДД_ММ_гггг.log- лог операций по службе.

-Автоматическое снятие Z-отчета – при очередной операции регистрации, если прошло 24 часа система автоматически снимет отчет с гашением

-Проверять каталог на возможность записи –идет проверка возможно ли записывать в каталог чеков, этонужно для обратной связи, ошибочных или обработанных чеков.

  1. Доработка конфигурации

 

    1. Параметры для работы с Чекопечатью

Работать будем в обработке «НастройкаТорговогоОборудования». Добавим тип налогообложения, каталог в который будут сохраняться данные:

 

Процедура Выполнить:

…
//
	Настройка.Установить("КаталогЧекопечати",СокрЛП(УстКаталогЧекопечати)); 
	//
	ВыбиратьТипНалогооблажения = УстВыбиратьТипНалогооблажения.ПолучитьЗначение(УстВыбиратьТипНалогооблажения.ТекущаяСтрока());
	Настройка.Установить("ВыбиратьТипНалогооблажения",ВыбиратьТипНалогооблажения); 
	//
…

Процедура ПриОткрытии:

…
//
	УстДрайверФР.ДобавитьЗначение(3,"Штрих-М: Чекопечать"); 
	УстКаталогЧекопечати = КаталогЧекопечати;  
	//
	УстВыбиратьТипНалогооблажения.ДобавитьЗначение(0,"ОСН");
	УстВыбиратьТипНалогооблажения.ДобавитьЗначение(1,"УСН");
	УстВыбиратьТипНалогооблажения.ДобавитьЗначение(2,"УСН доход - расход");
	УстВыбиратьТипНалогооблажения.ДобавитьЗначение(3,"ЕНВД");
	УстВыбиратьТипНалогооблажения.ДобавитьЗначение(4,"Единый сельхоз налог");
	УстВыбиратьТипНалогооблажения.ДобавитьЗначение(5,"ПСН"); 
	Поз = УстВыбиратьТипНалогооблажения.НайтиЗначение(ВыбиратьТипНалогооблажения);
	Если Поз>0 Тогда
		УстВыбиратьТипНалогооблажения.ТекущаяСтрока(Поз);
	КонецЕсли;
	//
…

Добавим процедуру выбора каталога чекопечати:

 

Процедура _ВыбКаталога(Пар)
	Если Пар=1 Тогда
		ВыбКат=УстКаталогЧекопечати;
	КонецЕсли;
	Если ФС.ВыбратьКаталог(ВыбКат,"Выберите каталог файлов-чеков")>0 Тогда
		Если Пар=1 Тогда
			УстКаталогЧекопечати=ВыбКат;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Процедура ВыборФР()

 

…
Если (ТекДрайверФР=2) ИЛИ (ТекДрайверФР=3) Тогда//
			РаботаСФР=1;МетодЧекопечати = Истина;
			УстШиринаЛенты.УдалитьВсе();
			УстШиринаЛенты.ДобавитьЗначение(0,"0");
			УстШиринаЛенты.ТекущаяСтрока(1);
…

Также изменим обработку «ПодключениеТорговогоОборудования». 

Процедура «Подкючить»:

 

…
//>>
	КаталогЧекопечати = Настройка.Получить("КаталогЧекопечати"); 
	ВыбиратьТипНалогооблажения = Настройка.Получить("ВыбиратьТипНалогооблажения"); 
	//<<
…
ИначеЕсли (ДрайверФР=2) ИЛИ (ДрайверФР=3) Тогда  //
			РаботаСФР=1; МетодЧекопечати =Истина;
…
    1. Изменения в глобальном модуле

В глобальный модуль добавим переменные:

 

//
Перем МетодЧекопечати Экспорт; 
Перем Истина Экспорт;
Перем Ложь Экспорт;  
Перем КаталогЧекопечати Экспорт;
Перем ВыбиратьТипНалогооблажения Экспорт;
//<< 

 

Процедура ПриНачалеРаботы, обнулим перменную МетодПечати

 

…
МетодЧекопечати =Ложь;//
…

 

    1. Обработка “ОбслуживаниеФр”

Для работы с чекопечатью нам нужно создавать файл чек  по протоколу для этого изменим процедуру “ПечататьЧек”:

 

…
//
	Если (ДрайверФР>0) И (МетодЧекопечати=Истина) Тогда//MI++>> 
		ИмяВременное = "checkTemp";
		Структура = ИнициализироватьСтруктуру("Заголовок");
		//---Заголовок чека--------------------------------// 
		Структура.ПризнакВозврата = Ложь;  
		Структура.Налогооблажение = ПолучитьТипНалогооблажения(ВыбиратьТипНалогооблажения);
		Если (Док.Вид()="Чек") Тогда
			Если (Док.ЧекНаВозврат=1) Тогда  
				Структура.ПризнакВозврата = Истина;
			КонецЕсли;
		КонецЕсли;             
		Если (Док.Вид()="РасходныйКассовый") Тогда
			Структура.ПризнакВозврата = Истина;
		КонецЕсли;  
		
		Если Док.Вид()="Чек" Тогда 
			Структура.НомерЧека = Док.НомерДок;
		Иначе
			Структура.НомерЧека = сокрлп(Док.НомерДок)
		КонецЕсли;  
		    
		Если ДобавитьВФайл(ИмяВременное,Структура,"head")=Ложь Тогда 
			Возврат;
		КонецЕсли;
		//-------------------------------------------------//
		Структура = ИнициализироватьСтруктуру("СтрокаЧека"); 
		//Если (Док.Вид()="РасходныйКассовый") Тогда 
		//Предупреждение("Тест пересчета");//Дебаг
		Если Док.Вид()="Чек" Тогда
			ПечататьСкидку = ПечататьЛиСкидку(Док);
			//			
			Док.ВыбратьСтроки();
			Пока (Док.ПолучитьСтроку()>0) Цикл
				Если Док.Товар.Выбран()=0 Тогда
					Продолжить;
				КонецЕсли;
				Если Док.Количество=0 Тогда
					Продолжить;
				КонецЕсли;
				Структура.Наименование	= СокрЛП(Док.Товар.НаимДляКассы); //СокрЛП(Док.Товар.Код)+":"+
				Структура.Количество	= Строка(Док.Количество*Док.Коэффициент);
				Структура.Цена			= Строка(Док.Цена);
				Структура.Секция		= Док.Товар.Секция;
				Структура.СуммаСоСкидкой= Строка(Док.СуммаБезСкидки);
				Структура.Налог 		= "4";//ПолучитьНалог(Док.Товар);//.СтавкаНДС-пока нет
				Если (Док.СкидкаНаПозицию<>0) Тогда
					Если Док.СкидкаНаПозицию>0 Тогда
						//Стр="Скидка "+строка(Док.СкидкаНаПозицию)+"%"; 
						Структура.СуммаСкидки = -(Док.СуммаБезСкидки-Док.Сумма);
					Иначе
						//Стр="Надбавка "+строка(-Док.СкидкаНаПозицию)+"%";
						Структура.СуммаСкидки = Док.СуммаБезСкидки-Док.Сумма;					
					КонецЕсли;					
				КонецЕсли; 
				Если (Док.Товар.ВидТовара=Перечисление.ВидыТоваров.Услуга) Тогда
					Структура.ПризнакПредметаРасчета = "4";//услуга
				Иначе
					Структура.ПризнакПредметаРасчета = "1";//товар
				КонецЕсли;
				//НДС? -пока нет
				Если ДобавитьВФайл(ИмяВременное,Структура,"str")=Ложь Тогда 
					Возврат;
				КонецЕсли;
			КонецЦикла;
			//------Подвал-------------------------------------//
			Если (Док.Скидка<>0) Тогда
				Если Док.Скидка>0 Тогда
					Стр="Скидка "+строка(Док.Скидка)+"%";
				Иначе
					Стр="Надбавка "+строка(-Док.Скидка)+"%";
				КонецЕсли; 
				СуммаСкидки = (Док.Итог("СуммаБезСкидки")-Док.Итог("Сумма"));
			КонецЕсли; 
			
			Структура = ИнициализироватьСтруктуру("ПодвалЧека"); 
			//Тут пишем название кредитной карты
			Если Док.ОплатаКредитом=1 Тогда 
				Если Док.КредКарта.Выбран()=1 Тогда   
					НазваниеКарты = СокрЛП(Док.КредКарта.Наименование);
					Структура.Сумма2 = Строка(Док.СуммаКредита);
				Иначе
					Структура.Сумма2 = Строка(Док.Итог("Сумма"));
				КонецЕсли;
			КонецЕсли;	 
			Если (Число(Структура.Сумма2)=0) Тогда  
				Если (Док.Получено=0) Тогда  
					Структура.Сумма1 = Строка(Док.Итог("Сумма"));
				Иначе
					Структура.Сумма1 = Строка(Док.Получено);
				КонецЕсли; 				
			КонецЕсли;
			Если ДобавитьВФайл(ИмяВременное,Структура,"end")=Ложь Тогда 
				Возврат;
			КонецЕсли;                           			
			//-------------------------------------------------//
			Док.ЧекПробитККМ=1;  
			//Запомним номер документа
			Док.НомерЧекаККМ=ВремНомерЧекаККМ; 
		ИначеЕсли ((Док.Вид()="ПриходныйКассовый") ИЛИ (Док.Вид()="РасходныйКассовый")) Тогда  
			ЕстьОснование = Ложь;  //Предупреждение("ТТТ");
			Док.ВыбратьСтроки();
			Пока Док.ПолучитьСтроку() = 1 Цикл
				Если ПустоеЗначение(Док.ДокументОснование1)=0 Тогда
					ЕстьОснование=Истина;
					ДокЧека = Док.ДокументОснование1;
					//
					ДокЧека.ВыбратьСтроки();
					Пока ДокЧека.ПолучитьСтроку() = 1 Цикл
						Если ДокЧека.Товар.Выбран()=0 Тогда
							Продолжить;
						КонецЕсли;
						Если ДокЧека.Количество=0 Тогда
							Продолжить;
						КонецЕсли;
						Структура.Наименование	= СокрЛП(ДокЧека.Товар.НаимДляКассы); //СокрЛП(Док.Товар.Код)+":"+
						Структура.Количество	= Строка(ДокЧека.Количество*ДокЧека.Коэффициент);
						Структура.Цена			= Строка(ДокЧека.РознЦена);
						Структура.Секция		= ДокЧека.Товар.Секция;
						//предупреждение("Дебаг");   
						Если (ДокЧека.Вид() = "ПриходнаяНакл") Тогда
							Структура.СуммаСоСкидкой= Строка(ДокЧека.СуммаРозн);
						Иначе	
							Структура.СуммаСоСкидкой= Строка(ДокЧека.СуммаРозн);
						КонецЕсли;	
						Структура.Налог 		= "4";//ПолучитьНалог(Док.Товар);//.СтавкаНДС-пока нет
						Если (ДокЧека.Вид() = "ПриходнаяНакл") Тогда 
							Структура.СуммаСкидки = 0;					
						Иначе	
							Если (ДокЧека.СкидкаНаПозицию<>0) Тогда
								Структура.СуммаСкидки = Строка(-ДокЧека.СуммаРозн+ДокЧека.СуммаРознСоСкидкой);//ДокЧека.СуммаСкидки;					
							КонецЕсли; 
						КонецЕсли;
						//
						Если (ДокЧека.Товар.ВидТовара=Перечисление.ВидыТоваров.Услуга) Тогда
							Структура.ПризнакПредметаРасчета = "4";//услуга
						Иначе
							Структура.ПризнакПредметаРасчета = "1";//товар
						КонецЕсли;  
						Если (ДокЧека.Вид() = "ПриходнаяНакл") Тогда
							Если (Док.Итог("Сумма")=0) Тогда
								СуммаДок = Док.СуммаДок;
							Иначе
								СуммаДок = Док.Итог("Сумма");
							КонецЕсли;
						КонецЕсли;
						
						//НДС? -пока нет
						Если ДобавитьВФайл(ИмяВременное,Структура,"str")=Ложь Тогда 
							Возврат;
						КонецЕсли;
					КонецЦикла;
				КонецЕсли;	
			КонецЦикла;   
			Если (ЕстьОснование=Ложь) Тогда 				
				//Распечатаем на чеке Основание и приложение   
				Если Док.Сотрудник.Выбран()=1 Тогда
					Стр=сокрлп(Док.ПриложениеСотрудника);
				Иначе
					Стр=сокрлп(Док.Приложение);
				КонецЕсли;  
				//-------------------------------------------------//  
				Если (Док.Итог("Сумма")=0) Тогда
					СуммаДок = Док.СуммаДок;
				Иначе
					СуммаДок = Док.Итог("Сумма");
				КонецЕсли;
				Структура = ИнициализироватьСтруктуру("СтрокаЧека");   
				Структура.Наименование	= СокрЛП(Стр); //СокрЛП(Док.Товар.Код)+":"+
				Структура.Количество	= Строка(1);
				Структура.Цена			= Строка(СуммаДок);
				Структура.Секция		= "1";
				Структура.СуммаСоСкидкой= Строка(СуммаДок);
				Структура.Налог 		= "4";//ПолучитьНалог(Док.Товар);//.СтавкаНДС-пока нет
				Структура.ПризнакПредметаРасчета = "4";//услуга
				Если ДобавитьВФайл(ИмяВременное,Структура,"str")=Ложь Тогда 
					Возврат;
				КонецЕсли;
			КонецЕсли; 
			//------Подвал-------------------------------------//
			Структура = ИнициализироватьСтруктуру("ПодвалЧека"); 
			Если ПустоеЗначение(СуммаДок)=0 Тогда
				Структура.Сумма1 = Строка(СуммаДок);
			Иначе     
				Если (Док.Итог("Сумма")=0) Тогда
					СуммаДок = Док.СуммаДок;
				Иначе
					СуммаДок = Док.Итог("Сумма");
				КонецЕсли;
				Структура.Сумма1 = Строка(СуммаДок);
			КонецЕсли;
			//
			Если ДобавитьВФайл(ИмяВременное,Структура,"end")=Ложь Тогда 
				Возврат;
			КонецЕсли;                           			
			//-------------------------------------------------//
			Док.ЧекПробитККМ=1;
			Док.НомерЧекаККМ=ВремНомерЧекаККМ;
		КонецЕсли;
		
		Возврат;
		//-------------------------------------------------//
…

 

Мы можем обрабатывать документы «Чек», «РасходноКассовый», «ПриходноКассовый», причем для ПКО и РКО будет учитывать документ основания если он есть для списка товаров/услуг.

    1. Обработка Отчеты

Для печати отчета с гашением изменим процедуру «Отчет»:

…
//>>
	Если (МетодЧекопечати=Истина) Тогда
		Пароль = 30;
		//Если ВвестиЧисло(Пароль,"Введите пароль",8,0) = 1 Тогда
		//КонецЕсли;  
		// вызов обработки обслуживания ККМ
		Расшифровка=СоздатьОбъект("СписокЗначений");		
		Расшифровка.ДобавитьЗначение(пароль,"пароль");
		Расшифровка.ДобавитьЗначение("ИмяОбработки","Отчет");
		
		Если Mode=3 Тогда//Z  
			Расшифровка.ДобавитьЗначение("ОтчетСГашением","Процесс");			
		ИначеЕсли Mode=2 Тогда	//X    
			Расшифровка.ДобавитьЗначение("ОтчетБезГашения","Процесс");	
		Иначе
			Возврат;
		КонецЕсли; 
		
		глРасшифровка = Расшифровка;
		глФлагРасшифровки = 1;
		ОткрытьФорму("Обработка.ОбслуживаниеФР#");
		глФлагРасшифровки = 0;
		глРасшифровка = 0;	
		Возврат;
	КонецЕсли;
	//<<
…

 

Примечание

Полное описание команд приложено в файле: «Полное описание команд.txt»

Последняя версия ссылка по Чекопечати:

3.2.01 –  Корректировка работы мультилицензии для ККТ Штрих-М.  Описание обратной связи для суммы в денежном ящике. Проверка ИНН при отправке на правильную длину. Корректировка мануала про тег в шаблоне “%AddT1%”. Флаг уникальности имени файл-чеков. Правка ошибок при работе с лицензией от предпоследней версии.

См. также

Оптовая торговля Розничная торговля ККМ ЭДО и ОФД Обмен с ГосИС Системный администратор Программист Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

Поддерживаются новые ставки НДС 5% и 7% для УСН при продаже через ККТ. Подключение фискального регистратора к 1С 7.7 в режиме онлайн-кассы в соответствии с 54-ФЗ. Поддержка актуальных версий драйверов ККТ: ДТО 10 и ДТО 8 для Атол, 4.15, 5.16 для Штрих-М. Поддержка розничной продажи маркированной продукции (алкоголь, табак, обувь, лекарства, шины, одежда, белье, парфюмерия, молочная продукция, вода и пр.). Поддержка онлайн и офлайн (через Локальный Модуль ЧЗ) проверки маркировки в разрешительном режиме (РР).

2000 руб.

28.03.2017    485494    4572    3519    

2481

ККМ Эквайринг/ридер магнитных карт Системный администратор Программист Оперативный учет 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Данная обработка предназначена для работы с ККТ АТОЛ на платформе 5.0 с драйверами АТОЛ версии 10.7.0.0 и выше для 1С:Торговля и Склад 9.2 и 1С: Комплексная 4.5 (в соответствии с 54-ФЗ). Проста в установке и настройке. Реализован учет маркируемой продукции по ФФД 1.2. В поставку включена поддержка эквайринга на уровне драйверов (в данный момент – Сбер), реализован учет частичных оплат, добавлены эмуляторы кассы и эквайрингового терминала, добавлена обработка генерации тестовых кодов маркировки. Поддерживаются ставки НДС 5% и 7%.

3000 руб.

20.08.2020    28568    73    81    

69

Кассовые операции ККМ Системный администратор Программист Бухгалтер Платформа 1С v7.7 Платформа 1С v8.3 1C:Бухгалтерия 1C77 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для управления ККМ Атол и Штрих нового поколения (он-лайн ККТ под 54-ФЗ) с помощью текстового файла (ini файла) с изменениями включена 1 лицензия Для любых программ, которые умеют работать с текстовыми файлами. Внутри комплекта есть готовые к использованию обработки

6000 руб.

31.07.2017    173851    600    609    

208

ККМ Кассовые операции Системный администратор Программист Платформа 1С v7.7 1C77 Россия Платные (руб)

Решение для тех, у кого остались не типовые конфигурации или сильно доработанные. Не все заказчики согласны платить за перенос конфигурации c V 1С 7.7 на V 1С 8 в связи с новым применением ККМ нового поколения (54-ФЗ). Код обработки полностью открыт, поэтому разработчику не составит труда использовать методы данной обработки для привязки фискального регистратора Атол любых моделей к конфигурации Заказчика.

2400 руб.

31.03.2017    54503    44    37    

45

Кассовые операции Розничная торговля ККМ Программист Платформа 1С v7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Управленческий учет Абонемент ($m)

Обработка позволяет печатать чеки для кассы Штрих Online из 1С 7.7 (Торговля и склад). Есть возможность печать чеков из разных касс. Также можно подставить функционал в любую конфигурацию.

1 стартмани

18.02.2021    9574    4    Drfreeman    10    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ЗС1 14.07.20 17:17 Сейчас в теме
Товар с маркировкой можно пробивать, чтобы в ОФД отразилась продажа либо возврат?
2. Ignatov_mu 42 15.07.20 10:20 Сейчас в теме
Да товар с маркировкой можно пробивать, просто не все ОФД показывают маркировку. Вам нужно уточнять у своего ОФД.
Оставьте свое сообщение