Штрих-М, ФФД 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();

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

Плюсую.
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день