Синхронизация времени на ККМ для 10 версии драйвера Атол
Posted On 2019-06-11
Синхронизация времени на ККМ для 10 версии драйвера Атол
&НаКлиенте Процедура Синхронизировать(Команда) fptr = Новый COMОбъект("AddIn.Fptr10"); fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, Строка(fptr.LIBFPTR_MODEL_ATOL_22F)); fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, Строка(fptr.LIBFPTR_PORT_COM)); fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, "COM5"); fptr.applySingleSettings(); Если fptr.open() < 0 Тогда Сообщить("Ошибка соединения с ККТ: " + fptr.errorCode() + " [" + fptr.errorDescription() + "]"); Возврат; КонецЕсли; fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SHIFT_STATE); Если fptr.queryData() < 0 Тогда Сообщить("Ошибка запроса состояния смены ККТ: " + fptr.errorCode() + " [" + fptr.errorDescription() + "]"); Возврат; КонецЕсли; СостояниеСмены = fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_STATE); Сообщить("Cмена ККТ закрыта: " + ?(СостояниеСмены = fptr.LIBFPTR_SS_CLOSED, "Да", "Нет")); fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_DATE_TIME); Если fptr.queryData() < 0 Тогда Сообщить("Ошибка запроса текущей даты и времени ККТ: " + fptr.errorCode() + " [" + fptr.errorDescription() + "]"); Возврат; КонецЕсли; ДатаВремяВККТ = Дата(fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME)); Сообщить("Дата и время в ККТ: " + ДатаВремяВККТ); ТекДата = ТекущаяДата(); Сообщить("Системные дата и время: " + ТекДата); ОтклонениеВСекундах = МодульЧисла(ДатаВремяВККТ - ТекДата); Сообщить("Отклонение от системного времени, сек: " + Формат(ДатаВремяВККТ - ТекДата, "ЧН=")); Если ОтклонениеВСекундах < 10 Тогда Сообщить("Отклонение времени ККТ от системного не большое (менее 10 сек). Корректировка времени в ККТ не требуется"); ИначеЕсли ОтклонениеВСекундах > 300 Тогда Сообщить("Отклонение времени ККТ от системного слишком большое (более 300 сек). Корректировка времени в ККТ должна быть выполнена вручную"); ИначеЕсли СостояниеСмены <> fptr.LIBFPTR_SS_CLOSED Тогда Сообщить("Корректировка времени в ККТ не выполнена, т.к. смена не закрыта."); Иначе fptr.setParam(fptr.LIBFPTR_PARAM_DATE_TIME, ТекДата); Если fptr.writeDateTime() < 0 Тогда Сообщить("Ошибка установки даты и времени в ККТ: " + fptr.errorCode() + " [" + fptr.errorDescription() + "]"); Возврат; КонецЕсли; Сообщить("Системные дата и время записаны в ККТ"); КонецЕсли; Если fptr.close() < 0 Тогда Сообщить("Ошибка закрытия соединения с ККТ: " + fptr.errorCode() + " [" + fptr.errorDescription() + "]"); Возврат; КонецЕсли; КонецПроцедуры &НаКлиенте Функция МодульЧисла(ИсходноеЧисло) Если ИсходноеЧисло < 0 Тогда Возврат -ИсходноеЧисло Иначе Возврат ИсходноеЧисло КонецЕсли; КонецФункции