Штрих-М, ФФД 1.2 не передаются теги 1227, 1228 . 1с 7.7

1. Iriha_ko 11.01.22 15:18 Сейчас в теме
Здравствуйте. Кассовый аппарат Штрих-лайт подключен к 1с 7.7 через DrvFr.dll
отправляем теги 1227(наименование клиента), 1228 (ИНН клиента)
ЭККА = СоздатьОбъекет("AddIn.DrvFR");
...
ЭККА .TagNumber = 1227:
ЭККА .TagType = 7;
ЭККА .TagValueStr = СокрЛП(Клиент.ПолноеНаименование);
ЭККА .FNSendTag();

для прошивки ФФД 1.05 все работает.
для ФФД 1.2 выдает ошибку 94-некорректная операция
пробовала отправить через FNSendTagOperation(),та же ошибка.

Кто сталкивался, подскажите как исправить?
Найденные решения
8. Iriha_ko 14.01.22 15:49 Сейчас в теме
В итоге печать Покупателя в чеке вывожу строкой. Оставлю рабочий вариант, вдруг кому пригодится

Если СокрЛП(Клиент)<>"" тогда

врЭККА.TagNumber=1256; //составной тег - данные клиента
врЭККА.Password = ЭККА.Пароль;
TagID = врЭККА.FNBeginSTLVTag();

врЭККА.TagID = TagID;
врЭККА.TagNumber=1227;
врЭККА.TagType =7;
врЭККА.TagValueStr = СокрЛП(Клиент.ПолноеНаименование);
врЭККА.FNAddTag();

врЭККА.StringForPrinting ="Покупатель "+ СокрЛП(Клиент.ПолноеНаименование);
врЭККА.PrintString();

врЭККА.StringForPrinting="";

Если СокрЛП(Клиент.ИНН)<>"" тогда

врЭККА.TagID = TagID;
врЭККА.TagNumber=1228;
врЭККА.TagType =7;
врЭККА.TagValueStr = СокрЛП(Клиент.ИНН);
врЭККА.FNAddTag();
врЭККА.StringForPrinting = "ИНН покупателя "+СокрЛП(Клиент.ИНН);
врЭККА.PrintString();

врЭККА.StringForPrinting="";
КонецЕсли;

Если ПустоеЗначение(Адрес)<>1 тогда
врЭККА.TagID = TagID;
врЭККА.TagNumber=1254;
врЭККА.TagType =7;
врЭККА.TagValueStr = СокрЛП(Адрес.НаименованиеДляДокументов);
врЭККА.FNAddTag();
КонецЕсли;

КонецЕсли;
DimanZ; Иваныч; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nike-arz 11.01.22 15:49 Сейчас в теме
(1) Там делается по другому через составной тег 1256.

Могу сбросить рабочие примеры но для 8-ки. На 7-ку надо переработать.
3. nike-arz 11.01.22 15:57 Сейчас в теме
(1)
мТЗЗначенийВнутреннихТегов  = Новый ТаблицаЗначений;
	мТЗЗначенийВнутреннихТегов.Колонки.Добавить("НомерТега");
	мТЗЗначенийВнутреннихТегов.Колонки.Добавить("ТипТега");
	мТЗЗначенийВнутреннихТегов.Колонки.Добавить("ЗначениеТега");


//*******************************************************

мНомерСоставногоТега = 1256; //Реквизиты покупателя
мТЗЗначенийВнутреннихТегов.Очистить();
				
Если ЗначениеЗаполнено(СокрЛП(ПараметрыККТ.ИННПокупателя)) Тогда
	мСтрокаТЗТега = мТЗЗначенийВнутреннихТегов.Добавить();
	мСтрокаТЗТега.НомерТега 	= 1228;// ИНН покупателя
	мСтрокаТЗТега.ТипТега 		= 7; //тип строка
	мСтрокаТЗТега.ЗначениеТега 	= СокрЛП(ПараметрыККТ.ИННПокупателя);
КонецЕсли;
				            
Если ЗначениеЗаполнено(СокрЛП(ПараметрыККТ.НаименованиеПокупателя)) Тогда
					мСтрокаТЗТега = мТЗЗначенийВнутреннихТегов.Добавить();
					мСтрокаТЗТега.НомерТега 	= 1227;// Наименование покупателя
					мСтрокаТЗТега.ТипТега 		= 7; //тип строка
					мСтрокаТЗТега.ЗначениеТега 	= СокрЛП(ПараметрыККТ.НаименованиеПокупателя);
КонецЕсли;
				
Если ЗначениеЗаполнено(СокрЛП(ПараметрыККТ.АдресПокупателя)) Тогда
	мСтрокаТЗТега = мТЗЗначенийВнутреннихТегов.Добавить();
	мСтрокаТЗТега.НомерТега 	= 1254;// адрес покупателя
	мСтрокаТЗТега.ТипТега 		= 7; //тип строка
	мСтрокаТЗТега.ЗначениеТега 	= СокрЛП(ПараметрыККТ.АдресПокупателя);
КонецЕсли;
				
Если мТЗЗначенийВнутреннихТегов.Количество() > 0 Тогда
	ЗаписатьSTLVТег(Объект, Пароль, мНомерСоставногоТега, мТЗЗначенийВнутреннихТегов, Ложь, Результат);			
КонецЕсли;




//*************************************
Процедура ЗаписатьSTLVТег(Объект, Пароль, мНомерСоставногоТега, мТЗЗначенийВнутреннихТегов, мЭтоОперация, Результат)
	
	Результат = "";
	
	Объект.Password = Пароль;
    Объект.TagNumber = мНомерСоставногоТега;
    TagID = Объект.FNBeginSTLVTag();//начало ввода составного тега

    
    Для Каждого СтрокаТЗ Из мТЗЗначенийВнутреннихТегов Цикл
		
		Объект.TagID 	 = TagID;
        Объект.TagNumber = СтрокаТЗ.НомерТега;
        Объект.TagType 	 = СтрокаТЗ.ТипТега;
		
		Если СтрокаТЗ.ТипТега = 0 Тогда// ttByte
			
			Объект.TagValueInt = СтрокаТЗ.ЗначениеТега;
			
		ИначеЕсли СтрокаТЗ.ТипТега = 1 Тогда// ttUint16
			
			Объект.TagValueInt = СтрокаТЗ.ЗначениеТега;
			
		ИначеЕсли СтрокаТЗ.ТипТега = 2 Тогда// ttUint32
			
			Объект.TagValueInt = СтрокаТЗ.ЗначениеТега;
			
		ИначеЕсли СтрокаТЗ.ТипТега = 3 Тогда// ttVLN
			
			Объект.TagValueBin = СтрокаТЗ.ЗначениеТега; 
			
		ИначеЕсли СтрокаТЗ.ТипТега = 4 Тогда// ttFVLN
			
			Объект.TagValueFVLN = СтрокаТЗ.ЗначениеТега;
			
		ИначеЕсли СтрокаТЗ.ТипТега = 5 Тогда// ttBitMask
			
			Объект.TagValueBin = СтрокаТЗ.ЗначениеТега;
			
		ИначеЕсли СтрокаТЗ.ТипТега = 6 Тогда// ttUnixTime 
			
			Объект.TagValueDateTime = СтрокаТЗ.ЗначениеТега;
			
		ИначеЕсли СтрокаТЗ.ТипТега = 7 Тогда// ttString
			
			Объект.TagValueStr = СтрокаТЗ.ЗначениеТега;
			
		КонецЕсли;
		
		Объект.FNAddTag();
		
		Если Объект.ResultCode <> 0 Тогда
			Результат = Объект.ResultCodeDescription;
	   	 	Сообщить("Ошибка добавления тега: " + СокрЛП(СтрокаТЗ.НомерТега) + " - " + Результат);
		КонецЕсли;
		
    КонецЦикла;
    //если это составной тег строки чека то ЭтоОперация = Истина, если В общие реквизиты ЭтоОперация = Ложь 

    Если мЭтоОперация Тогда
        Объект.FNSendSTLVTagOperation();
    Иначе
        Объект.FNSendSTLVTag();
    КонецЕсли;    
    
	Если Объект.ResultCode <> 0 Тогда
		Результат = Объект.ResultCodeDescription;
	    Сообщить("Ошибка записи STLV тега: " + СокрЛП(мНомерСоставногоТега) + " - " + Результат);
	КонецЕсли;
    
КонецПроцедуры
Показать
Iriha_ko; +1 Ответить
4. Iriha_ko 11.01.22 16:46 Сейчас в теме
(3) Большое спасибо. Буду адаптировать под 7.7
5. Iriha_ko 12.01.22 12:36 Сейчас в теме
Получилось передавать данные о клиенте в электронном виде в ОФД. А вот в печатной форме чека их нет. Так и должно быть?
6. nike-arz 12.01.22 12:47 Сейчас в теме
7. Иваныч 23 14.01.22 10:30 Сейчас в теме
(5)Вот нашел на просторах интернета: https://kassaofd.ru/blog/format-kassovogo-cheka-2021
Там есть информация, что в электронной версии чека эти теги обязательны, а в бумажном носителе - на усмотрение продавца. Но все нужно перечитывать, т.к иной раз даже налоговики сами бывают "не в теме"
Iriha_ko; +1 Ответить
8. Iriha_ko 14.01.22 15:49 Сейчас в теме
В итоге печать Покупателя в чеке вывожу строкой. Оставлю рабочий вариант, вдруг кому пригодится

Если СокрЛП(Клиент)<>"" тогда

врЭККА.TagNumber=1256; //составной тег - данные клиента
врЭККА.Password = ЭККА.Пароль;
TagID = врЭККА.FNBeginSTLVTag();

врЭККА.TagID = TagID;
врЭККА.TagNumber=1227;
врЭККА.TagType =7;
врЭККА.TagValueStr = СокрЛП(Клиент.ПолноеНаименование);
врЭККА.FNAddTag();

врЭККА.StringForPrinting ="Покупатель "+ СокрЛП(Клиент.ПолноеНаименование);
врЭККА.PrintString();

врЭККА.StringForPrinting="";

Если СокрЛП(Клиент.ИНН)<>"" тогда

врЭККА.TagID = TagID;
врЭККА.TagNumber=1228;
врЭККА.TagType =7;
врЭККА.TagValueStr = СокрЛП(Клиент.ИНН);
врЭККА.FNAddTag();
врЭККА.StringForPrinting = "ИНН покупателя "+СокрЛП(Клиент.ИНН);
врЭККА.PrintString();

врЭККА.StringForPrinting="";
КонецЕсли;

Если ПустоеЗначение(Адрес)<>1 тогда
врЭККА.TagID = TagID;
врЭККА.TagNumber=1254;
врЭККА.TagType =7;
врЭККА.TagValueStr = СокрЛП(Адрес.НаименованиеДляДокументов);
врЭККА.FNAddTag();
КонецЕсли;

КонецЕсли;
DimanZ; Иваныч; +2 Ответить
9. Иваныч 23 14.01.22 17:26 Сейчас в теме
Это хорошо, что получилось. Ставлю плюсик.
10. DimanZ 27 17.03.22 15:34 Сейчас в теме
К приведенному коду дописать строчку отправки тега

врЭККА.FNSendSTLVTag();

а то как то не законченно получается.

Плюсую.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот