Каким методом посылается чек в ККМ Штрих?

1. pavel06 2 25.04.18 00:52 Сейчас в теме
Насколько я понял, для пробития фискального чека в ФР Штрих надо создать xml-структуру по
https://its.1c.ru/db/metod8dev#content:4829:hdoc
типа по примеру там
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
	<Parameters PaymentType="1" SenderEmail="info@1c.ru" CustomerEmail="alex2000@mail.ru" CustomerPhone="" AgentCompensation="" AgentPhone=""/>
	<Positions>
		<FiscalString Name="Макароны" Quantity="1" Price="16.75" Amount="16.75" Tax="10"/>
		<FiscalString Name="Томатный сок" Quantity="1" Price="200" Amount="200" Tax="18"/>
		<FiscalString Name="Алкоголь Шампрео 0.7" Quantity="1" Price="455" Amount="455" Tax="18"/>
		<TextString Text="Дисконтная карта: 00002345"/>
		<Barcode BarcodeType="EAN13" Barcode="2000021262157"/>
	</Positions>
	<Payments Cash="471.75" CashLessType1="0" CashLessType2="0" CashLessType3="200"/>
</CheckPackage>
Показать

и послать в теге ProcessCheck в ККМ в качестве длинной строки каким-то методом драйвера.
Но, переискав методы в Руководстве программиста от фирмы Штрих, не могу найти такого метода посылки.
В типовых конфигурациях все скрывается в общих процедурах, где конкретных имен методов не найти.

Не может ли кто "на пальцах" объяснить, чем происходит такая посылка?
Там есть FNSendTag, но не думаю, что посылка производится потегово.
У меня нетиповая самописная конфигурация 8.1 и ничем типовым я воспользоваться не могу.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. karpik666 3778 25.04.18 01:50 Сейчас в теме
(1) скачайте эту обработку https://infostart.ru/public/590993/ , подключите, из списка компонент удалите этот файл EmulatorKKT_COM_2002_32_EmulatorKKT1C2.dll, затем при настройке выберите "Эмулятор", сможете печатать чеки в виде XML структуры, которые будут сразу отображаться. Так сможете изучить какие данные передаются в ОФД, если что данная обработку можно прикрутить даже не к типовой конфигурации, достаточно реализовать заполнение таблицы строк и оплаты. а остальное сделает сама обработка.
4. nike-arz 25.04.18 09:17 Сейчас в теме
(1) Пришлите E-mail: вышлю обработку для работы с драйвером DrvFR.dll или качай обработку у Карпова Андрея. Там тоже не плохо реализован функционал.
5. pavel06 2 25.04.18 09:56 Сейчас в теме
(4)
Пришлите E-mail: вышлю обработку для работы с драйвером DrvFR.dll


Спасибо, что ответили. Я вам уже писал в личке e-mail aeae2474@gmail.com в октябре.
Пришлите, пожалуйста, обработку для DrvFR.
6. pavel06 2 25.04.18 12:03 Сейчас в теме
(4)
Там тоже не плохо реализован функционал.


1)У вас обработка для 8.2, а мне нужно 8.1.

2)Насколько я увидел, у вас все скрыто в секретной двоичной Интеграционной компоненте, которая в макетах. Она, по-видимому, ретранслирует все из 1С в команды работы с драйвером? Даже просто FR.PrintReportWithoutCleaning(); который железно выполняется из 1С, не увидеть.
В каком конкретно вашем модуле можно увидеть ответ на мой вопрос, что за метод драйвера Штриха используется для посылки на фискализацию чеков в xml-виде?

Неужели надо писать FR.OpenSession(); потом FR.OpenCheck(); и потом FNGetDocumentAsString или что-то подобное?

3)В списке фискальных регистраторов от Штрих-М у вас почему-то нет моего - Штрих-М-01Ф, хотя, я думаю, основные команды у них идентичны с другими моделями.
7. nike-arz 25.04.18 12:12 Сейчас в теме
(6) Поставь платформу 8.2 и все увидишь. Все сделано для 8.1. но работает на 8.2
14. pavel06 2 25.04.18 13:27 Сейчас в теме
(7)
Поставь платформу 8.2 и все увидишь. Все сделано для 8.1. но работает на 8.2


Но мне нужно, чтоб работала на 8.1. А даунгрейд вряд ли возможен.
После загрузки вашей обработки в УТ 10.3(8.2.19.130) выскакивает куча ошибок:
dropmefiles.com/upU5n
В конфигураторе, я, конечно, посмотрел, но где там обращение к бинарному макету Интеграционной компоненты я не понял в 26 формах. Я сам с такими макетами никогда дела не имел.
8. sssss_aaaaa_2011 25.04.18 12:17 Сейчас в теме
(6)
В каком конкретно вашем модуле можно увидеть ответ на мой вопрос, что за метод драйвера Штриха используется для посылки на фискализацию чеков в xml-виде?
Еще раз - нет такого метода. Драйвер вообще ничего про XML не знает.
17. pavel06 2 25.04.18 13:52 Сейчас в теме
(8)
Еще раз - нет такого метода. Драйвер вообще ничего про XML не знает

Тогда нужно, по-видимому, самому вручную открывать и закрывать теги методами драйвера с соответствующими значениями свойств?

Ведь, как я вижу, тут были несколько разработок, где данные чека кидаются из 1С просто в текстовый файл, а потом этот файл обрабатывается программой, написанной не на 1С, которая, по-видимому, те же обращения к методам драйвера использует.
9. nike-arz 25.04.18 12:20 Сейчас в теме
(6) Команды и методы для Штриха все идентичны.
3. Sapiens_bru 4 25.04.18 06:28 Сейчас в теме
В описании команд от штриха вы этой функции не найдёте, потому что ее там нет.
1С в новых версиях не обращается к драйверу торгового оборудования напрямую (впрочем в старых типовых он тоже так не делал, разве что в 7.7). Вместо этого 1С обращается к некой "ИнтеграционнойКомпоненте", написанной штрихом специально для 1С. Эта компонента переводит 1Сную команду "СформироватьЧек()" в набор команд для фискального регистратора. Описания внутренней структуры работы интеграционной компоненты не существует, по карйней мере за пределами отдела разработки штриха.

Вывод - Наиболее простой метод интеграции это взять компоненту и обращаться к ней по описанному одинэской api, либо вообще взять чужую обработку интеграции, чтобы не собирать потроха по типовой базе самому.
10. pavel06 2 25.04.18 12:22 Сейчас в теме
(3)
впрочем в старых типовых он тоже так не делал, разве что в 7.7


Вот в том то и дело, что в старых 7.7 как-то обращаются к методам драйвера или опять скрытая документация для своих людей?

Есть здесь в продаже обработка для нетиповой 7.7, но покупать ее странно для 8.1, если тем более, вероятно, там тоже все упрется в некий скрытый двоичный блок-ретранслятор, написанный исключительно для 7.7 на каком-нибудь С#.
Описания внутренней структуры работы интеграционной компоненты не существует, по крайней мере за пределами отдела разработки штриха.


И вы думаете, те разработчики, которые что-то смогли сделать, смогли стащить документацию по работе с компонентой у Штриха?

(3)
это взять компоненту и обращаться к ней по описанному одинэской api

Где это описание от 1С? По моей ссылке в исх.вопросе - неполное.

(3)
либо вообще взять чужую обработку интеграции, чтобы не собирать потроха по типовой базе самому.


Это вообще тихий ужас: у меня в самописном РМК вся логика операций оплат и так
подробно описана со всеми проверками. А предлагаются какие-то недоделанные кассовые программы со множеством вложенных процедур, непонятно, работающие где-либо или нет, или просто это наброски кода.
11. karpik666 3778 25.04.18 12:32 Сейчас в теме
(10) вы сами привели ссылку на https://its.1c.ru/db/metod8dev#content:4829:hdoc:chapter270 , почему же вы там не увидели список методов, используемых в стандарте разработки?
современная 1с не работает напрямую с драйверами, а работает через шины, которые предоставляю производители оборудования, работают они по формату, который указан по вашей ссылке, есть более новый формат, но его компания 1С не предоставляет в общий доступ, только для производителей оборудования.
Все методы у производителей разного оборудования одинаковые. Хотите использовать современные драйвера, используйте эти компоненты, не хотите делайте что-то свое, предварительно скачайте инструкцию для разработчиков для оборудования ШтрихМ, и сидите в свое удовольствие разрабатывайте свою "недоделанную кассовую программу"
nike-arz; +1 Ответить
12. pavel06 2 25.04.18 13:14 Сейчас в теме
(11)
предварительно скачайте инструкцию для разработчиков для оборудования ШтрихМ


Инструкция для разработчиков - это то, что называется "Штрих-М:.Драйвер ККТ.Руководство программиста" или что-то более подробное есть?


современная 1с не работает напрямую с драйверами


У меня не современная 1С, поэтому никаких зашивок кода в платформу для 54-фз я не имею. Я купил уже у вас обработку год назад, но в ней ничего не нашел, кроме отсылок к стандартным новым платформам.

Про какие списки методов вы говорите? Если я напишу, например, FR.CheckPackage где-нибудь в программе, то драйвер это понять не должен, потому что нет CheckPackage в Руководстве программиста.
13. karpik666 3778 25.04.18 13:21 Сейчас в теме
(12)
Инструкция для разработчиков - это то, что называется "Штрих-М:.Драйвер ККТ.Руководство программиста

да, та которая прилагается вместе с драйверами ШтрихМ.

У меня не современная 1С, поэтому никаких зашивок кода в платформу для 54-фз я не имею.

Но хотите то вы печатать на ККТ


Я купил уже у вас обработку год назад, но в ней ничего не нашел, кроме отсылок к стандартным новым платформам.

и что этот функционал не работает? по-моему работает прекрасно и для 8.1 и для 8.2, сейчас даже появилась поддержка Linux систем.


Про какие списки методов вы говорите?
Про эти, что во вложении
Прикрепленные файлы:
15. pavel06 2 25.04.18 13:39 Сейчас в теме
(13)
Про эти, что во вложении

Эти вообще в драйвере не описаны.
Например, для открытия смены предлагается OpenShift(),
а в драйвере реально работает FR.OpenSession()

ProcessCheck - такого нет, а есть OpenCheck()

и т.п. что-то приблизительное.
16. karpik666 3778 25.04.18 13:41 Сейчас в теме
(15) а причем здесь драйвер? тут описана работа с компонентой. а 1С уже все равно, что в этой компоненте содержится, может openCheck(), а может еще что-то
18. pavel06 2 25.04.18 13:58 Сейчас в теме
(16)
тут описана работа с компонентой


С той самой интеграционной компонентой, которая в макеты включается?
(драйвер от Штриха, уж всяко, должен быть загружен, чтоб компонента работала)
Как, тогда, записать на языке 1С обращение к этой компоненте?
Вы где-то нашли документацию, как с ней работают?
19. karpik666 3778 25.04.18 14:00 Сейчас в теме
(18) да, все верно, обращение к драйверу штриха происходит через компаненту
Как, тогда, записать на языке 1С обращение к этой компоненте?

через методы, которые я привел выше, это и есть документация.
20. karpik666 3778 25.04.18 14:00 Сейчас в теме
(18) не могу понять, зачем вам напрямую подключаться к драйверам?
21. pavel06 2 25.04.18 14:07 Сейчас в теме
(20)
не могу понять, зачем вам напрямую подключаться к драйверам?

Потому что, если я пишу обращение через драйвер, то касса мне реально печатает чек выемки/внесения наличных , х- и z-отчет, открывает/закрывает смену, данные нормально отправляются в ОФД(и все без нагромождения вложенных процедур, в одной форме). А как обратиться к этой компоненте с ее не до конца описанными методами, я просто не знаю.
Например, сейчас надо передавать ИНН кассира, а в ссылке на сайте об этом ни слова. Может где-то есть другая документация, на диске ИТС, например?
22. karpik666 3778 25.04.18 14:13 Сейчас в теме
(21) инн передается в новой ревизии интерфейса, официально документации нет на сайте, пример реализации может взять из конфигурации "Розница 2.2.7", там это все есть, также это все есть и у меня в обработке.
23. pavel06 2 25.04.18 14:36 Сейчас в теме
(22)
пример реализации может взять из конфигурации "Розница 2.2.7", там это все есть, также это все есть и у меня в обработке.


Если вы про ИНН кассира, то в УТ10.3 последней редакции описано занесение этих параметров в общем модуле МенеджерОборудованияКлиентСервер
Функция ПараметрыОткрытияЗакрытияСмены() Экспорт
	
	ПараметрыОперации = Новый Структура();
	ПараметрыОперации.Вставить("Кассир"     , НСтр("ru='Администратор'")); // Должность и фамилия лица, осуществившего операцию.
	ПараметрыОперации.Вставить("КассирИНН"  , Неопределено); // Идентификационный номер налогоплательщика кассира, при наличии.
	Возврат ПараметрыОперации; 
	
КонецФункции
Показать

У вас как-нибудь так? Это вы называете примером реализации?
24. karpik666 3778 25.04.18 14:39 Сейчас в теме
(23) да, так сделано в типовой, у себя я это переделывал. Надо использовать то, что есть, упреками ничего не решишь.
27. pavel06 2 25.04.18 15:34 Сейчас в теме
(24)
у себя я это переделывал. Надо использовать то, что есть, упреками ничего не решишь.


У вас я понял будет работать только за 3000/год/1касса, (подключаются какие-то непонятные dll и еще защита, про совместимость с существуюшими драйверами вообще неизвестно). Если у меня 7 касс, то 21000/год.
28. karpik666 3778 25.04.18 15:42 Сейчас в теме
(27) будет работать бессрочно, дополнительно покупать обновления не нужно, (то что на сайте указано ГОД, на инфостарте больше дату нельзя поставить.) действительно есть ограничение на одно рабочее место, т.е. на компьютер, но вы можете к одному компьютеру подключить сколько угодно касс. И по сути это разовое вложение без необходимости задумываться будет ли моя касса поддерживать ФФД 1.1, подумайте сколько времени вы уже потратили, и потратите в будущем на отладку и поддержку будущего кода.
30. karpik666 3778 25.04.18 15:51 Сейчас в теме
(27)
подключаются какие-то непонятные dll и еще защита, про совместимость с существуюшими драйверами вообще неизвестно
- обработка универсальная, если понадобится обновить компоненту для работы с оборудованием, достаточно ее просто заменить в списке компонент или даже расширить функционал добавив свою. Также ее можно доработать в плане печати, для этого я предусмотрел дополнительную подключаемую обработку, то что код модуля закрыт - это защита от перепродаж обработки, а также чтобы я был точно уверен, что функционал соответствует тому, что я реализовал, так как сейчас в обработке очень много дополнительных функций.
25. nike-arz 25.04.18 14:54 Сейчас в теме
(21) Отправить ИНН Кассира через драйвер

 Объект.Пароль = Пароль;  
			Объект.НомерТега = 1203;	//TagNumber
			Объект.ТипТега = 7;	        //TagType
			Объект.ЗначениеТегаСтрока = ИННКассира;  //TagValueStr	
			Объект.FNSendTag(); // отправка тега
			Объект.СтрокаДляПечати = "";
			Если Объект.Результат <> 0 Тогда
				Результат = Объект.ОписаниеРезультата;
				Объект.АннулироватьЧек();
				Объект.РазорватьСвязь();
				Возврат Результат;
			КонецЕсли;
Показать
29. pavel06 2 25.04.18 15:50 Сейчас в теме
(25)
Объект.Пароль = Пароль;
Объект.НомерТега = 1203; //TagNumber


Спасибо. Это я уже где-то на форуме видел.
Номер тега соответствует таблице в приложении 2 к приказу ММВ-7-20/229@
Можно все без имен слать по номерам, по-видимому.
Только не совсем понятна последовательность посылаемых тегов.

Вы Интеграционную компоненту - макет сами писали или где-то позаимствовали?
31. nike-arz 25.04.18 17:04 Сейчас в теме
(29) Как токовой интеграционной компоненты нет. Я работаю напрямую с драйвером. Открыл документацию на описание драйвера и написал обработку.
32. pavel06 2 25.04.18 18:38 Сейчас в теме
(31)
Как токовой интеграционной компоненты нет. Я работаю напрямую с драйвером.


Ну как же, есть интеграционная компонента какая-то в макетах.
Или она вообще к делу не относится и от чего-то другого осталась?
В том, что вы прислали, я не могу найти, например,......Объект.НомерТега = 1203; .....
Вы раньше писали, что к драйверу надо обращаться по-английски, а у вас везде по-русски в основном.
Вы используете FNOpenSession, а не OpenSession. Чем они отличаются?
34. nike-arz 26.04.18 10:51 Сейчас в теме
(32) К драйверу можете обращаться ка на русском так и английском, так же можете обращаться в смешаном виде. Объект.НомерТега вы можете представить как Объект.TagNumber. Это одно и тоже. Или Объект.ЗначениеТегаСтрока = ИННКассира; соответствует Объект.TagValueStr
35. oskarsan 25.12.18 09:23 Сейчас в теме
(25) Подскажите пример тега для открытия смены.
Пробую:

Если глФР.РежимККМ = 4 Тогда 
     глФР.Password = глФРПарольПользователя;
     глФР.НомерТега = 1203;    //TagNumber
     глФР.ТипТега = 7;            //TagType     
     глФР.ЗначениеТегаСтрока = СокрЛП(ИННКассира);      
     глФР.FNSendTag();// отправка тега
     глФР.ОткрытьСмену();
КонецЕсли;  


выдает ошибку: "Неверное состояние ФН"

при пробитии чека и закрытии смены все нормально

Объект.Password = Пар;
Объект.НомерТега = 1203;    //TagNumber
Объект.ТипТега = 7;            //TagType     
Объект.ЗначениеТегаСтрока = СокрЛП(ИННКассира);     
Объект.FNSendTag();// отправка тега
Объект.Summ1 = Получено;
Объект.Summ2 = Терминал;
Объект.Summ3 = Сертификат;
Объект.CloseCheck();

Объект.Password = Пар;
Объект.НомерТега = 1203;    //TagNumber
Объект.ТипТега = 7;            //TagType     
Объект.ЗначениеТегаСтрока = СокрЛП(ИННКассира);     
Объект.FNSendTag();// отправка тега
Объект.PrintReportWithCleaning();
Показать
36. nike-arz 25.12.18 09:56 Сейчас в теме
(35)Все дело в том, что вы пытаете передать ИНН кассира до открытия смены. Сначала надо начать открытие смены, затем передать ИНН кассира, затем открыть смену. Пример:

Функция ОперацияОткрытьСмену(Объект, НомерЛУ, Пароль, ПараметрыККТ)
	
	Результат = "";
	
	Если Объект = Неопределено Тогда
		Результат = "Торговое оборудование не подключено.";
		Возврат Результат;
	КонецЕсли;
	
	Объект.НомерЛУ = НомерЛУ;
	Объект.УстановитьАктивноеЛУ();
	Если Объект.Результат <> 0 Тогда
		Результат = Объект.ОписаниеРезультата;
		Возврат Результат;
	КонецЕсли;
	
	Объект.Пароль = Пароль;
	Объект.УстановитьСвязь();
	Если Объект.Результат <> 0 Тогда
		Результат = Объект.ОписаниеРезультата;
		Возврат Результат;
	КонецЕсли;
	
	Объект.Пароль = Пароль;
	Объект.FNBeginOpenSession(); //Начинаем открывать смену
	Если Объект.Результат <> 0 Тогда
		Результат = Объект.ОписаниеРезультата;
	КонецЕсли;
	
	Если ПараметрыККТ.ККМФз54ОнЛайн Тогда
		
		//Пишем Налоги
		Объект.Пароль = Пароль;
		Объект.TableNumber = 6;
		Объект.RowNumber = 1;
		Объект.FieldNumber = 1;
		Объект.ValueofFieldInteger = ПараметрыККТ.Налог1;
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		//Пишем название налога 1
		Объект.Пароль = Пароль;
		Объект.TableNumber = 6;
		Объект.RowNumber = 1;
		Объект.FieldNumber = 2;
		Если ПараметрыККТ.Налог1 = 1800 Тогда
			Объект.ValueofFieldString = "НДС 18%";
		ИначеЕсли ПараметрыККТ.Налог1 = 2000 Тогда	
			Объект.ValueofFieldString = "НДС 20%";
		Иначе	
			Объект.ValueofFieldString = "НДС 18%";
		КонецЕсли;	
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		Объект.Пароль = Пароль;
		Объект.TableNumber = 6;
		Объект.RowNumber = 2;
		Объект.FieldNumber = 1;
		Объект.ValueofFieldInteger = ПараметрыККТ.Налог2;
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		Объект.Пароль = Пароль;
		Объект.TableNumber = 6;
		Объект.RowNumber = 3;
		Объект.FieldNumber = 1;
		Объект.ValueofFieldInteger = ПараметрыККТ.Налог3;
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		Объект.Пароль = Пароль;
		Объект.TableNumber = 6;
		Объект.RowNumber = 4;
		Объект.FieldNumber = 1;
		Объект.ValueofFieldInteger = ПараметрыККТ.Налог4;
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		Объект.Пароль = Пароль;
		Объект.TableNumber = 6;
		Объект.RowNumber = 5;
		Объект.FieldNumber = 1;
		Объект.ValueofFieldInteger = ПараметрыККТ.Налог5;
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		//Пишем название налога 5
		Объект.Пароль = Пароль;
		Объект.TableNumber = 6;
		Объект.RowNumber = 5;
		Объект.FieldNumber = 2;
		Если ПараметрыККТ.Налог1 = 1800 Тогда
			Объект.ValueofFieldString = "НДС 18/118";
		ИначеЕсли ПараметрыККТ.Налог1 = 2000 Тогда	
			Объект.ValueofFieldString = "НДС 20/120";
		Иначе	
			Объект.ValueofFieldString = "НДС 18/118";
		КонецЕсли;	
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		Объект.Пароль = Пароль;
		Объект.TableNumber = 6;
		Объект.RowNumber = 6;
		Объект.FieldNumber = 1;
		Объект.ValueofFieldInteger = ПараметрыККТ.Налог6;
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		//Пишем режим исчисления скидок
		Объект.Пароль = Пароль;
		Объект.TableNumber = 17;
		Объект.RowNumber = 1;
		Объект.FieldNumber = 3;
		Объект.ValueofFieldInteger = 2;
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		//Печатать чеки или нет 0- печатать 2- нет
		Объект.Пароль = Пароль;
		Объект.TableNumber = 17;
		Объект.RowNumber = 1;
		Объект.FieldNumber = 7;
		Если ПараметрыККТ.ОтправлятьТолькоЭлектронно Тогда
			Объект.ValueofFieldInteger = 2;
		Иначе
			Объект.ValueofFieldInteger = 0;
		КонецЕсли;	
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		//Пишем Налогооблажение
		Объект.Пароль = Пароль;
		Объект.TableNumber = 18;
		Объект.RowNumber = 1;
		Объект.FieldNumber = 5;
		Объект.ValueofFieldInteger = ПараметрыККТ.КодНалогооблажения;
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		//Пишет Оператора
		Объект.Пароль = Пароль;
		Объект.TableNumber = 18;
		Объект.RowNumber = 1;
		Объект.FieldNumber = 8;
		Объект.ValueofFieldString = "";
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		//Отправка ИНН Кассира ФФД 1.05 и 1.1
		Если НЕ ЗначениеНеЗаполнено(ПараметрыККТ.ИННКассира) Тогда //Отправка произвольных тегов
			Объект.Пароль = Пароль;  
			Объект.НомерТега = 1203;	//TagNumber
			Объект.ТипТега = 7;	        //TagType
			Объект.ЗначениеТегаСтрока = СокрЛП(ПараметрыККТ.ИННКассира);  //TagValueStr	
			Объект.FNSendTag(); // отправка тега
			Объект.СтрокаДляПечати = "";
			Если Объект.Результат <> 0 Тогда
				Результат = Объект.ОписаниеРезультата;
				Объект.РазорватьСвязь();
				Возврат Результат;
			КонецЕсли;
		КонецЕсли;
		
		//Пишем не включать аванс в выручку
		Объект.Пароль = Пароль;
		Объект.TableNumber = 17;
		Объект.RowNumber = 1;
		Объект.FieldNumber = 26;
		Объект.ValueofFieldInteger = ?(ПараметрыККТ.НеВключатьАвансВВыручку,1,0);
		Объект.GetFieldStruct();
		Объект.WriteTable();
		Если Объект.Результат <> 0 Тогда
			Результат = Объект.ОписаниеРезультата;
			Возврат Результат;
		КонецЕсли;
		
		//Пишем новый заголовок безналичной оплаты
		Если ПараметрыККТ.НовыйЗаголовокБезналичнойОплаты Тогда
			Объект.Пароль = Пароль;
			Объект.TableNumber = 17;
			Объект.RowNumber = 1;
			Объект.FieldNumber = 39;
			Объект.ValueofFieldInteger = 1;
			Объект.GetFieldStruct();
			Объект.WriteTable();
			Если Объект.Результат <> 0 Тогда
				Результат = Объект.ОписаниеРезультата;
				Возврат Результат;
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;
	
	//Объект.ОткрытьСмену();
	Объект.Пароль = Пароль;
	Объект.FNOpenSession();
	Если Объект.Результат <> 0 Тогда
		Результат = Объект.ОписаниеРезультата;
	КонецЕсли;
	
	Объект.РазорватьСвязь();
	Возврат Результат;
	
КонецФункции // ОперацияОткрытьСмену()
Показать
oskarsan; +1 Ответить
37. oskarsan 29.12.18 10:13 Сейчас в теме
(36)Спасибо добрый человек, дело сдвинулось с мертвой точки.
1с 77 963 стандартная обработка fr_comm.ert

В Атол 30Ф вообще ничего дописывать не пришлось, кроме Объект.ОткрытьСмену(). Прописал инн кассиров в драйвере и все работает, Налоги поставил на закладке секции. Работает на версии 6.8.

А вот Штрих-01ФР и Штрих онлайн танцы с бубном:
в чеке добавлена кнопка Xотчет
ИначеЕсли глФРОбработка = "shtrihfr_comm.ert" Тогда //Штрих
		Если глФР.РежимККМ = 4 Тогда 
			//глФР.ОткрытьСмену();
			глФР.FNBeginOpenSession(); //Начинаем открывать смену
			Если глФР.Результат <> 0 Тогда
				Результат = глФР.ОписаниеРезультата;
				глФР.РазорватьСвязь();
				Возврат;
			КонецЕсли;
			глФР.Password = глФРПарольПользователя;
			глФР.НомерТега = 1203;    //TagNumber
			глФР.ТипТега = 7;            //TagType     
			глФР.ЗначениеТегаСтрока = СокрЛП(ИННКассира);  //
			глФР.FNSendTag(); // отправка тега
			глФР.СтрокаДляПечати = "";
			Результат = ОбработкаОшибокПриПечати(глФР);
			Если Результат = "Отмена" Тогда 
				глФР.РазорватьСвязь();
				Возврат;
			КонецЕсли;
			глФР.Пароль = глФРПарольПользователя;
			глФР.FNOpenSession();
		Иначе
			глФР.PrintReportWithoutCleaning();
		КонецЕсли;  
		Если глФР.ResultCode <> 0 Тогда
			Возврат;
		КонецЕсли;
	КонецЕсли;
Показать


То ошибка "неверный пароль", то "неверные параметры команды" или без ошибок. Но инн кассира в драйвере ккт не передаются.

Функция ЗакрытиеЧека(СуммаЧека,Получено,Объект,Сертификат,Терминал)
	Объект.Password = Пароль;
	Объект.НомерТега = 1203;    //TagNumber
	Объект.ТипТега = 7;            //TagType     
	Объект.ЗначениеТегаСтрока = СокрЛП(ИННКассира);  //TagValueStr    
	Объект.FNSendTag(); // отправка тега
	Объект.СтрокаДляПечати = "";
	Результат = ОбработкаОшибокПриПечати(Объект);
	Если Результат = "Отмена" Тогда 
		Объект.РазорватьСвязь();
		Возврат 0;
	КонецЕсли;    
	
	Пока "на экране окно вопроса" = "на экране окно вопроса" Цикл 
		Объект.Summ1 = Получено;
		Объект.Summ2 = Терминал;
		Объект.Summ3 = Сертификат;
		Объект.CloseCheck();
		Результат = ОбработкаОшибокПриПечати(Объект);
		Если Результат = "Отмена" Тогда 
			Объект.CancelCheck();
			Возврат 0;
		ИначеЕсли Результат = 0 Тогда
			Возврат 1;
		КонецЕсли;
	КонецЦикла;
КонецФункции
Показать


тут все замечательно работает, в 1ОФД все показывает, в СбисОФД и КонтурОФД инн не показывается. Ответ СП 28.12.18 "Задача по выводу тега "ИНН кассира" в модель чека в личном кабинете Контур.ОФД находится в работе. Сроков пока нет."

Функция ЗакрытьСмену(Объект, ПарольАдмин, ПарольПольз, НомерЛенты)
	Рез = 0;
	
	Если ПустоеЗначение(Объект) = 1 Тогда
		ОписаниеРезультата = "устройство не подключено";
	Иначе
		// переключение в режим снятия отчета (нужен пароль администратора)
		Пока "на экране окно вопроса" = "на экране окно вопроса" Цикл
			Пароль = ПарольАдмин;
			Объект.Password = Строка(Пароль);
			Объект.Connect();
			
			Результат = ОбработкаОшибокПриПечати(Объект);
			Если Результат = "Отмена" Тогда 
				Объект.Disconnect();
				Возврат 0;
			ИначеЕсли Результат = 0 Тогда
				Прервать;
			КонецЕсли;
		КонецЦикла;
		
		Объект.GetECRStatus();
		Если ОбработкаОшибок(Объект) = 1 Тогда
			Объект.Disconnect();
			Возврат 0;
		КонецЕсли;
		Если Объект.ECRAdvancedMode = 3 Тогда
			Объект.ContinuePrint();
			Объект.Password = Строка(Пароль);
			Объект.GetECRStatus();
			Если ОбработкаОшибок(Объект) = 1 Тогда
				Объект.Disconnect();
				Возврат 0;
			КонецЕсли;
		КонецЕсли;
		Объект.Password = Пароль; 
		Объект.FNBeginCloseSession();
		Пока "на экране окно вопроса" = "на экране окно вопроса" Цикл
			
			Объект.Password = Пароль;
			Объект.НомерТега = 1203;    //TagNumber
			Объект.ТипТега = 7;            //TagType     
			Объект.ЗначениеТегаСтрока = СокрЛП(ИННКассира);  
			Объект.FNSendTag(); // отправка тега
			Объект.СтрокаДляПечати = "";
			Результат = ОбработкаОшибокПриПечати(Объект);
			Если Результат = "Отмена" Тогда 
				Объект.РазорватьСвязь();
				Возврат 0;
			ИначеЕсли Результат = 0 Тогда
				Прервать;
			КонецЕсли;    
		КонецЦикла;
		Объект.Password = Пароль; 
		Объект.FNCloseSession();
		//Объект.PrintReportWithCleaning(); 
		ОбработкаОшибок(Объект);
		НомерЛенты = глДополнитьСтрокуЛ(Строка(Объект.SessionNumber), "0", 4);
		Объект.Disconnect();
		Рез = 1;
	КонецЕсли;
	
	Возврат Рез;
КонецФункции
Показать


тут опять: То ошибка "неверный пароль", то "неверные параметры команды" или без ошибок. Но инн кассира в драйвере ккт не передаются. Пошагово ошибка возникает на Объект.FNSendTag();. И не могу понять с чем связано, пароль=30, инн корректный, а вот в ОФД попадает, то кассир, то сис.админ.
38. nike-arz 29.12.18 11:02 Сейчас в теме
(37) Я везде использую пароль администратора. И все работает. В таблиц кассиров меняю ФИО кассира в поле администратора.
39. oskarsan 30.12.18 13:39 Сейчас в теме
(38) У меня тоже пароль администратора при открытии и закрытии, ток чет непонятное происходит:

закрытие смены
1041,НОМЕР ФН:
1037,РЕГ. НОМЕР ККТ:
1018,ИНН ПОЛЬЗ.:
1040,НОМЕР ФД:43396
1012,ДАТА, ВРЕМЯ:29.12.2018 18:53:00
1077,ФП ДОКУМЕНТА:3103173175
1038,НОМЕР СМЕНЫ:239
1118,КОЛ-ВО КАССОВЫХ ЧЕКОВ ЗА СМЕНУ(БСО):315
1111,ОБЩ. КЛ-ВО ФД ЗА СМЕНУ:317
1097,КОЛ-ВО НЕПЕРЕДАННЫХ ФД:0
1098,ДАТА И ВРЕМЯ ПЕРВОГО НЕПЕРЕДАНН. ФД:01.01.1970
1050,ПРИЗН. ИСЧЕРП. РЕСУРСА ФН:0
1051,ПРИЗН. НЕОБХ. СРОЧН. ЗАМЕНЫ ФН:0
1052,ПРИЗН. ПЕРЕПОЛН. ПАМЯТИ ФН:0
1053,ПРИЗН ПРЕВЫШ. ВРЕМЕНИ ОЖИД. ОТВ. ОФД:0
1021,КАССИР:СИСТ. АДМИН.
1209,ВЕРСИЯ ФФД:2

открытие смены
1041,НОМЕР ФН:
1037,РЕГ. НОМЕР ККТ:
1018,ИНН ПОЛЬЗ.:
1040,НОМЕР ФД:43397
1012,ДАТА, ВРЕМЯ:30.12.2018 9:11:00
1077,ФП ДОКУМЕНТА:1610482261
1038,НОМЕР СМЕНЫ:240
1021,КАССИР:КАССИР Шкатулина
1209,ВЕРСИЯ ФФД:2
1189,ВЕРСИЯ ФФД ККТ:2
1188,ВЕРСИЯ ККТ:001

ИНН вообще не передается. В логах вроде ошибок нет. После праздников буду пошагово отлаживать. С наступающим!
33. Sapiens_bru 4 25.04.18 20:43 Сейчас в теме
(10)
Вот в том то и дело, что в старых 7.7 как-то обращаются к методам драйвера или опять скрытая документация для своих людей?

Вы и на управляемых формах можете обращаться напрямую к драйверу. Документация от 1С вам в таком случае вообще не нужна.
1)Пихаем drvFR.dll в rar архив
2)Закидываем архив в общий макет
3) Пишем ПодключитьВнешнююКомпоненту(ПутьКМакету,"Component"). В тонком клиенте еще и УстановитьВнешнююКомпоненту
4) Пишем свою логику, вызывая родные методы от штрих-м. Там никаких xml файлов. Всё по старинке, строчка за сточкой. Только параметров стало больше
26. nike-arz 25.04.18 15:19 Сейчас в теме
Если есть необходимость конвертации обработок из 8.2 в 8.1 посмотрите здесь
https://github.com/volodkindv/epf_82_to_81
oskarsan; +1 Ответить
40. Trotter_NN 06.05.19 09:37 Сейчас в теме
(26)
ли есть необходимость конвертации обработок из 8.2 в 8.1 по

Здравствуйте!
Не как с Вами не получается связаться. Напишут тут ))
Подскажите пожалуйста. Иногда при печати рекламного нефискального чека неправильно отрезается, режит от 2 до 5 строк которые остаются на следующем документе.
Использую метод:

Вот таких строк до 100
FR.StringForPrinting="Привет мир";
FR.PrintString();

режу методом
FR.CutType=1;
FR.CutCheck();

Попробовал использовать:
FR.WaitForPrintingDelay = 100;
FR.WaitForPrinting();
Не помогла.

Что можете порекомендовать ?
41. nike-arz 06.05.19 12:53 Сейчас в теме
(40) Я решал эту проблему печатью 4-х строчек с точкой в начале. Убирал клише, сам делал необходимые заголовки. К сожалению у штриха есть такой косяк.
42. nike-arz 06.05.19 12:56 Сейчас в теме
(40) Для Сн = 0 ПО 3 Цикл
Объект.Пароль = Пароль;
Объект.СтрокаДляПечати = ".";
Объект.ПечатьСтроки();
Объект.СтрокаДляПечати = "";
Если Объект.Результат <> 0 Тогда
Результат = Объект.ОписаниеРезультата;
Объект.РазорватьСвязь();
Возврат Результат;
КонецЕсли;
КонецЦикла;
43. Trotter_NN 06.05.19 13:15 Сейчас в теме
(42) я решил это вот таким методом.
FR.StringQuantity = 5;
FR.FeedDocument();
Но! По каким - то, мне не объяснимым причинам, это иногда не работает.
44. nike-arz 06.05.19 13:17 Сейчас в теме
(43) Согласен можно так. Но у меня работает всегда.
45. nike-arz 06.05.19 13:19 Сейчас в теме
(43) Не много чек не красивый получается, но это как говорится издержки производства.
46. Trotter_NN 06.05.19 13:24 Сейчас в теме
(45) Так выводите тогда просто пробелы
Объект.СтрокаДляПечати = " ";
47. nike-arz 06.05.19 14:55 Сейчас в теме
(46) Пробовал. Не работает.
Оставьте свое сообщение

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