Получение даты ККМ и ее изменение
Приветствую шаманы!
Суть задачи проверить время на ККМ, если оно не сходиться с текущем временем, тогда меняем дату и время на ККМ.
Возникла такая проблема:
Но время не изменилось( Пожалуйста дорогие коллеги, читатели, да просто люди добрые помогите! Как решить проблему и записать на ККМ нужное время? Всем откликнувшимся "+" в карму.
Суть задачи проверить время на ККМ, если оно не сходиться с текущем временем, тогда меняем дату и время на ККМ.
Возникла такая проблема:
//Подключаюсь к драйверу
Компонента = "AddIn.DrvFR";
ПодключитьВнешнююКомпоненту(Компонента);
ДрайверККТ = Новый (Компонента);
//Получаю состояние, что бы в ДрайверККТ появилось время, иначе дата 31.12.1899, время 00:00:00
ДрайверККТ.ПолучитьСостояниеККМ();
//Получаю время
Час = Формат(Час( ТекущаяДата() ) ,"ЧЦ=2; ЧВН=");
Минута = Формат(Минута( ТекущаяДата() ) ,"ЧЦ=2; ЧВН=");
Секунда = Формат(Секунда( ТекущаяДата() ),"ЧЦ=2; ЧВН=");
//Из драйвера получаю время
ВремяККМ = Дата(Формат(ДрайверККТ.Дата,"ДФ=dd.MM.yyyy") + " " + Формат(ДрайверККТ.Время,"ДЛФ=T"));
//Вывожу время для проверки
Сообщить(Формат(ДрайверККТ.Дата,"ДФ=dd.MM.yyyy") + " " + Формат(ДрайверККТ.Время,"ДЛФ=T"));
//Если время в драйвере отличается от текущего, тогда меняю
Если ВремяККМ <> ТекущаяДата() Тогда
ДрайверККТ.Время = Дата("18991230" + Час + Минута + Секунда);
ДрайверККТ.Дата = НачалоДня(ТекущаяДата());
//Устанавливаем время
ДрайверККТ.SetTime();
КонецЕсли;
//Для проверки измененного времени выводим сообщение
Сообщить(Формат(ДрайверККТ.Дата,"ДФ=dd.MM.yyyy") + " " + Формат(ДрайверККТ.Время,"ДЛФ=T"));
ПоказатьНо время не изменилось( Пожалуйста дорогие коллеги, читатели, да просто люди добрые помогите! Как решить проблему и записать на ККМ нужное время? Всем откликнувшимся "+" в карму.
По теме из базы знаний
- 54-ФЗ и Разрешительный режим. Обработки для подключения онлайн-касс к 1С (поддержка Маркировки) + Эмулятор + ФФД 1.2
- 1С:Хлебобулочное и кондитерское производство. Модуль для 1С:ERP и 1С:КА
- 1С:Управление строительной организацией. 1С:ERP Управление строительной организацией 2
- Разные хм... неожиданности при работе с УТ 11 и платформой
- Учет и сверка Z-Отчетов ККМ в 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)Может быть проблема в том, что касса онлайн и синхронизирует время с интернетом? какая разница во времени между кассой и компьютером (в смысле ровно часы или минуты)? Попробуйте ради интереса отключить кассу от интернета и проверить, меняется время или нет.
(4)
на сколько я знаю касса, хоть и называется ОНЛАЙН, но она ничего не получает из интернета, она только передает туда информацию)))
(3)А попробуйте в "Сообщить" вывести не функцию получения времени, а "Время ККМ", может быть там собака зарыта?
Если он в эту переменную не верные значения передает, то именно поэтому у вас и не меняется время.
на сколько я знаю касса, хоть и называется ОНЛАЙН, но она ничего не получает из интернета, она только передает туда информацию)))
(3)А попробуйте в "Сообщить" вывести не функцию получения времени, а "Время ККМ", может быть там собака зарыта?
Если он в эту переменную не верные значения передает, то именно поэтому у вас и не меняется время.
(4)Вчера на тестах уже было около 30 мин, по идее эта довольно частая проблема, увы я так и не нашел решения, изначально вообще не мог получить дату и время, всегда было 31.12.1899 00:00:00, после получения состояния ккм вроде появились даты, может я вообще не правильно их получаю и есть рабочий способ
(6)
Прямо тут же на форуме нашел вот такое решение:
На Атол 55Ф работает:
Прямо тут же на форуме нашел вот такое решение:
На Атол 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; //Незнаю зачем, нашел в чужом коде
КонецПроцедуры
Показать
(6)
Думаю ошибку можно сразу увидеть.
АТОЛы требуют установить флаг. что устройство включено, и на этапе:
" Драйвер.DeviceEnabled = 1;"
Исполняется этой действие, у вас этот момент упущен, вероятно именно тут и проблема, ведь в таком случае, данные передаются, но касса не принимает эти данные....
Извечная проблема с Атолом)
Думаю ошибку можно сразу увидеть.
АТОЛы требуют установить флаг. что устройство включено, и на этапе:
" Драйвер.DeviceEnabled = 1;"
Исполняется этой действие, у вас этот момент упущен, вероятно именно тут и проблема, ведь в таком случае, данные передаются, но касса не принимает эти данные....
Извечная проблема с Атолом)
(8)Спасибо, протестирую отвечу, у меня Штрих, но думаю, вполне может быть такая же проблема. По поводу теста сейчас какая картина у меня вырисовывается:
Подключаю драйвер на нем дата и время 31.12.1899 00:00:00
Далее получаю состояние получаю 31.07.2020 11:19:31
Устанавливаю текущую дату 31.07.2020 10:47:31
Далее снова делаю проверку, также подключаюсь к драйверу, но на нем время которое я установил 31.07.2020 10:47:31, а при получении состояния меняется на 31.07.2020 11:19:31 (ну плюс время выполнения).
Буду пробовать делать по вашему способу с Атолом, а то вариантов уже перепробовал массу, но результата особого нет(
Подключаю драйвер на нем дата и время 31.12.1899 00:00:00
Компонента = "AddIn.DrvFR";
ПодключитьВнешнююКомпоненту(Компонента);
ДрайверККТ = Новый (Компонента);
Далее получаю состояние получаю 31.07.2020 11:19:31
ДрайверККТ.ПолучитьСостояниеККМ();
Устанавливаю текущую дату 31.07.2020 10:47:31
ДрайверККТ.SetTime();
Далее снова делаю проверку, также подключаюсь к драйверу, но на нем время которое я установил 31.07.2020 10:47:31, а при получении состояния меняется на 31.07.2020 11:19:31 (ну плюс время выполнения).
Буду пробовать делать по вашему способу с Атолом, а то вариантов уже перепробовал массу, но результата особого нет(
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот