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) Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

Подключение фискального регистратора к 1С 7.7 в режиме онлайн-кассы (в соответствии с 54-ФЗ). Поддержка крайних версий драйверов ККТ: ДТО 10 и ДТО 8 для Атол, 4.15, 5.16 для Штрих-М. Поддержка протоколов ФФД 1.0, 1.05, 1.1 и 1.2, развитые настройки для применения частичных оплат и авансов в оптовой и розничной торговле. Поддержка чеков коррекции всех версий. Поддержка розничной продажи маркированной продукции (ЕГАИС, табак, обувь, лекарства, шины, одежда, белье, парфюмерия, молочная продукция, вода и пр.). Вывод электронного чека (на е-майл, телефон) по требованию покупателя, поддерживаются комбинированные типы оплаты, режим эмуляции печати чека на ФР. Полный цикл работы из 1С 7.7 с маркировкой Честный ЗНАК (ГИСМТ, ЦРПТ) из 1С 7.7. ЭДО (табак, обувь, шины, одежда, молочная продукция, вода и прочие группы товаров) для розницы и опта (приемка и оптовая отгрузка маркированной продукции). Поддерживается как объемно-сортовой учет (ОСУ) так и поштучный (поэкземплярный) учет.

2000 руб.

28.03.2017    478227    4443    3488    

2457

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

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

4800 руб.

31.07.2017    170852    589    605    

204

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

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

2000 руб.

20.08.2020    27733    61    79    

60

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

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

1200 руб.

31.03.2017    53624    39    36    

42

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

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

1 стартмани

18.02.2021    9363    4    Drfreeman    10    

1

Файловый обмен (TXT, XML, DBF), FTP ККМ Бухгалтер Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Управленческий учет Абонемент ($m)

Данная обработка предназначена для выгрузки файла из программы 1С: Предприятие 7.7 Конфигурации «Торговля и Склад 9.2» в файл CSV для загрузки в кассу МТС. Тестирование проводилось на релизах 937 и 998. В теории должна работать на всех типовых релизах конфигурации «Торговля и Склад 9.2».

1 стартмани

07.02.2021    10331    5    Kuzya_brаtsk    1    

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