Как программно установить время и дату на фискальном регистраторе?

1. kondrat1C 55 11.01.12 13:41 Сейчас в теме
Хочу программно установить дату и время на фискальном регистраторе (ККМ). Никакой документации не имеется :(
Для обращения к фискальнику использую:
ПрогИД = "AddIn.DrvFR";
ПодключитьВнешнююКомпоненту(ПрогИД);
Драйвер = Новый (ПрогИД);


Вот тут как раз вопрос: установка даты и времени производится с помощью методов или просто достаточно проиннициализировать соответствующие свойства объекта "Драйве"?

подскажите, если кто сталкивался.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. S.V.Y 17 11.01.12 13:46 Сейчас в теме
Ну по модели регистратора можно найти документацию без проблем. А вообще, мне кажется, что программно устанавливать дату и время низзя, она в памяти принтера хранится, хотя могу ошибаться :)
3. kondrat1C 55 11.01.12 14:35 Сейчас в теме
имеются Штрих и Феликс
А вообще, мне кажется, что программно устанавливать дату и время низзя, она в памяти принтера хранится, хотя могу ошибаться

ты не ошибаешься :)
почему ты считаешь что нельзя? "религия" не позволяет? ))
4. S.V.Y 17 11.01.12 14:59 Сейчас в теме
(3) kondrat1C, она, она :) И еще один орган ...
5. kondrat1C 55 11.01.12 15:12 Сейчас в теме
Вообщем методом научного тыка было найдено решение:
	ПрогИД = "AddIn.DrvFR";
	ПодключитьВнешнююКомпоненту(ПрогИД);
	Драйвер = Новый (ПрогИД);

	Час = Формат(Час(ТекущаяДата()),"ЧЦ=2; ЧВН=");
	Минута = Формат(Минута(ТекущаяДата()),"ЧЦ=2; ЧВН=");
	Секунда = Формат(Секунда(ТекущаяДата()),"ЧЦ=2; ЧВН=");
	Драйвер.Время = Дата("18991230"+Час+Минута+Секунда);
	Драйвер.Дата = НачалоДня(ТекущаяДата());
	Драйвер.SetTime();
Показать


Драйвер.Время имеет формат ГГГГММДД Час:Мин:сек
и почему то дата в нём имеет значение 1899.12.30
6. kondrat1C 55 11.01.12 15:14 Сейчас в теме
на Штрихе всё работает, осталось только найти списанный Феликс и проверить на нём
7. S.V.Y 17 11.01.12 20:10 Сейчас в теме
(6) kondrat1C, в чем необходимость то, я так и не понял? :) Или, понял, но не хочу озвучивать :)
9. kondrat1C 55 12.01.12 08:56 Сейчас в теме
(7) valerka78, налоговая требует, чтобы время в чеках отличалось от текущего максимум на 5-10 минут.
а т.к. у нас 73 торговых точки (и во многих по несколько фискальников), то как то тоскливо становится ручками лазить в каждый фискальник для поправки времени. Вот и хотелось бы засунуть проверку и корректировку времени на фискальнике в ПриНачалеРаботыСистемы()
8. ipyu 11.01.12 21:20 Сейчас в теме
Документация на драйвер ККМ АТОЛовских фискальников, включая Феликс Р-К:http://atol.ru/download/documents/dto/FprnM_Pm.pdf
10. kondrat1C 55 12.01.12 08:56 Сейчас в теме
11. qwed557 30 22.01.14 18:37 Сейчас в теме
(10) kondrat1C, Добрый день. тема Вами поднималась уже очень давно, но скажите Вы решили проблему с установкой времени на ФР? Если решили о не могли бы Вы поделиться кодом как реализовали это?
12. kondrat1C 55 29.01.14 16:52 Сейчас в теме
Решил эту проблему организационно: заставил продавцов в начале рабочего дня снимать Z-отчет и если там время отличается от текущего, то исправлять её через тест-драйвер (написал им инструкцию) 8)
13. 1carbon 62 14.04.14 06:17 Сейчас в теме
в обработке обслуживания:
в Функция ZОтчет(
ОбновитьДатуВремя(Объект);

добавить 2 процедуры:

Процедура ОбновитьДатуВремя(Объект)

	Отключить(Объект);

	Попытка
		ПрогИД = "AddIn.DrvFR";
		ПодключитьВнешнююКомпоненту(ПрогИД);
		Драйвер = Новый (ПрогИД);
	Исключение
		Подключить(Объект);
		Возврат
	КонецПопытки;

	Скорость = Объект.Параметры.Скорость;

	Если Скорость = 2400 Тогда
		Драйвер.СкоростьОбменаЛУ = 0;
	ИначеЕсли Скорость = 4800 Тогда
		Драйвер.СкоростьОбменаЛУ = 1;
	ИначеЕсли Скорость = 9600 Тогда
		Драйвер.СкоростьОбменаЛУ = 2;
	ИначеЕсли Скорость = 19200 Тогда
		Драйвер.СкоростьОбменаЛУ = 3;
	ИначеЕсли Скорость = 38400 Тогда
		Драйвер.СкоростьОбменаЛУ = 4;
	ИначеЕсли Скорость = 57600 Тогда
		Драйвер.СкоростьОбменаЛУ = 5;
	ИначеЕсли Скорость = 115200 Тогда
		Драйвер.СкоростьОбменаЛУ = 6;
	КонецЕсли;

	Драйвер.COMпортЛУ        = Объект.Параметры.Порт;
	Драйвер.ТаймаутЛУ        = Объект.Параметры.Таймаут;
	Драйвер.ТипПодключенияЛУ = Объект.Параметры.ТипПодключения;
	Драйвер.УстановитьПараметрыЛУ();
	Драйвер.УстановитьАктивноеЛУ();
	Драйвер.Пароль           = Объект.Параметры.ПарольАдминистратора;

	Драйвер.УстановитьСвязь();

	Если Драйвер.Результат <> 0 Тогда
		Предупреждение(Драйвер.ОписаниеРезультата);
		Подключить(Объект);
		Возврат
	КонецЕсли;

	Драйвер.ПолучитьСостояниеККМ();

	Если (Драйвер.РежимККМ = 4 ИЛИ Драйвер.РежимККМ = 7 ИЛИ Драйвер.РежимККМ = 9) И НачалоДня(Дата(Драйвер.Дата)) <> НачалоДня(ТекущаяДата()) Тогда
		Драйвер.Дата = Формат(ТекущаяДата(), "ДФ=dd.MM.yy");
		Драйвер.УстановитьДату();
		Драйвер.ПодтвердитьДату();
	КонецЕсли;

	Драйвер.ПолучитьСостояниеККМ();

	Если (Драйвер.РежимККМ = 4 ИЛИ Драйвер.РежимККМ = 7 ИЛИ Драйвер.РежимККМ = 9) И МодульЧисла(Дата(Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy") + " " + Драйвер.ВремяСтрока) - ТекущаяДата()) > 30 Тогда
		Драйвер.Время = Формат(ТекущаяДата(), "ДФ=HH:mm:ss");
		Драйвер.УстановитьВремя();
	КонецЕсли;

	Драйвер.РазорватьСвязь();
	Драйвер.УдалитьЛУ();

	Подключить(Объект);

КонецПроцедуры
Показать

И

Функция МодульЧисла(ИсходноеЧисло)

	Если ИсходноеЧисло < 0 Тогда
		Возврат -ИсходноеЧисло
	Иначе
		Возврат ИсходноеЧисло
	КонецЕсли;

КонецФункции
Показать
xoxmaister; +1 Ответить
14. sevod 11.08.17 15:48 Сейчас в теме
Тестировал на Атол 55ф. Все работает. Думаю на других атолах тоже все будет хорошо. Компонента которая используется в коде, стандартный атоловский драйвер.
Код почистил от лишнего, может где есть ошибки, но кому надо разберется.
Кассовая смена должна быть закрыта. В рознице прикрепил к процедуре по закрытию кассовой смены.

Процедура  ДанныДляОтправкиПоКассе()  
	
		//Синхронизируем время
		Попытка
			// Загрузка внешней компоненты
			ВнешняяКомпонента = "AddIn.FPrnM8";
			ПодключитьВнешнююКомпоненту(ВнешняяКомпонента);   		  
			
			//ПодключитьВнешнююКомпоненту("AddIn.ATOL_KKM_1C");			
			Попытка
				// Создание объекта  	
				Драйвер = Новый (ВнешняяКомпонента);   				
			Исключение
				
			КонецПопытки;
		Исключение
			Возврат;
		КонецПопытки;  	
		
		
			Попытка
				//Подключаемся к кассе
				//Параметры можно посмотреть в логгах кассы
				Драйвер.AddDevice();   
				Драйвер.PortNumber = Касса.Порт;//порт кассы;
				//Драйвер.BaudRate = Касса.Скорость;//Объект.Параметры.Скорость;
				// параметры выше (порт, скорость) можно вычитать в файле логов
				// FprnM1C.log или FprnM1C82.log, в папке C:\Users\user\AppData\Roaming\ATOL\DRIVERS
				// например - сначала сделав тест устройства из 1С (появятся записи в логах, вы увидите все значения полей
				// в последних строках файла логов )
				Драйвер.DeviceEnabled = 1;
				Драйвер.Password = Касса.Пароль; //Пароль Пользователя кассы
				
				//Устанавливаем время
				Драйвер.Режим = 0;	
				Драйвер.SetMode();
				Драйвер.Hour = Строка(Час(ТекущаяДата()));
				Драйвер.Minute = Строка(Минута(ТекущаяДата()));     
				Драйвер.Second = Строка(Секунда(ТекущаяДата()));
				РезультатУстановкиВремени = Драйвер.SetTime(); 				
						
				Если   РезультатУстановкиВремени = 0 Тогда
					//Все нормально, время установленно
					
				Иначе
					//Время не установленно				
				КонецЕсли;
				//Отключаемся
				Драйвер.DeviceEnabled = 0; //на последние строки драйвер атола ругался на
				Драйвер.DeleteDevice();    //последовательность команд (но только в логах, юзер этого не видит) 
			Исключение
				
			КонецПопытки;   		
		   		
		
		Драйвер.DeviceEnabled = 0; //на последние строки драйвер атола ругался на
		Драйвер.DeleteDevice();    //последовательность команд (но только в логах, юзер этого не видит) 
		
		Драйвер = 0;	//Незнаю зачем, нашел в чужом коде      
		
			
КонецПроцедуры
Показать
xoxmaister; +1 Ответить
15. user701497_i.filippov 09.01.18 11:48 Сейчас в теме
(14) Здравствуйте, какие параметры подключения должны быть использованы если касса подключена по TCP/IP ? То есть что нужно написать вместо строки "Драйвер.PortNumber = Касса.Порт;" ?
16. sevod 09.01.18 15:54 Сейчас в теме
17. user701497_i.filippov 09.01.18 17:23 Сейчас в теме
(16) то есть кассы у вас подключены по com портам?
18. Kigo 09.01.18 23:40 Сейчас в теме
(17) Бывает сложно добиться к кассе через TCP/IP, если база работает не локально, а к примеру через RDP по этому имеет смысл продублировать ее ком портом, то есть данный в ОФД она будет лить через мост по TCP/IP, а команды на исполнение будете давать через ком порт, в этом нет ничего страшного, работает на ура
19. user701497_i.filippov 10.01.18 09:15 Сейчас в теме
20. sevod 11.01.18 17:37 Сейчас в теме
Ну в общем то так и сделано. Кассы через ком, точнее через юсб. А данные в офд обычно через обычную сеть, но бывает и через драйвер настраиваем, но это исключение.
Оставьте свое сообщение

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