Примитивная синхронизация времени на ккм атол с помощью python
Вот скрипт на питоне для дто10. Пишу сюда, чтобы если что потом найти здесь когда ещё раз понадобится и локальные программисты 1с опять не осилят задачу по синхронизации времени касс с помощью 1с ))
# -*- coding: utf-8 -*-
# Инициализация драйвера
import sys
import os
from libfptr10 import IFptr
from datetime import datetime
LIBRARY_PATH = os.path.dirname(os.path.abspath(__file__))
fptr = IFptr("")
# Подключение к устройству
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_PORT, str(IFptr.LIBFPTR_PORT_TCPIP))
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_IPADDRESS, "192.168.132.32")
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_IPPORT, "5555")
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_MODEL, "69")
fptr.applySingleSettings()
# Открытие соединения с устройством
fptr.open()
# Установка времени
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, datetime.now())
fptr.writeDateTime()
# Закрытие соединения с устройством
fptr.close()
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если кто 1С-программист до сих пор не осилил (по сверхъестественным причинам или за ненадобностью) синхронизацию времени 1С <-> фп/ККМ атолл то вот (ДТО 10):
//инициализация драйвера
глПринтер = Новый COMОбъект("AddIn.Fptr10");
Процедура глУстановитьДатуНаПринтере()
ВерсияДрайвера = ВерсияДрайвера();
ВерсияПрошивки = ВерсияПрошивки();
НеотправленоВОФД = НеотправленоВОФД();
СерийникФН = СерийникФН();
СерийникККМ = СерийникККМ();
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_TEXT, ""+ВерсияДрайвера + "; " + ВерсияПрошивки + "; " + НеотправленоВОФД);
глПринтер.printText();
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_TEXT, "ФН: "+ СерийникФН + "; ККМ: " + СерийникККМ);
глПринтер.printText();
//установка даты/времени
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_DATE_TIME, ТекущаяДата());
глПринтер.writeDateTime();
глПринтер.lineFeed();
глПринтер.lineFeed();
КонецПроцедуры
Функция ВерсияДрайвера()
Возврат СокрЛП(глПринтер.version());
КонецФункции
Функция ВерсияПрошивки()
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_DATA_TYPE, глПринтер.LIBFPTR_DT_UNIT_VERSION);
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_UNIT_TYPE, глПринтер.LIBFPTR_UT_CONFIGURATION);
глПринтер.queryData();
Возврат СокрЛП(глПринтер.getParamString(глПринтер.LIBFPTR_PARAM_UNIT_VERSION));
КонецФункции
Функция НеотправленоВОФД()
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_DATA_TYPE, глПринтер.LIBFPTR_DT_UNIT_VERSION);
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_UNIT_TYPE, глПринтер.LIBFPTR_UT_CONFIGURATION);
глПринтер.queryData();
Возврат СокрЛП(глПринтер.getParamString(глПринтер.LIBFPTR_PARAM_UNIT_VERSION));
КонецФункции
Функция СерийникФН()
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_FN_DATA_TYPE, глПринтер.LIBFPTR_FNDT_FN_INFO);
глПринтер.FNQueryData();
Возврат СокрЛП(глПринтер.getParamString(глПринтер.LIBFPTR_PARAM_SERIAL_NUMBER));
КонецФункции
Функция СерийникККМ()
глПринтер.setParam(глПринтер.LIBFPTR_PARAM_DATA_TYPE, глПринтер.LIBFPTR_DT_STATUS);
глПринтер.queryData();
Возврат СокрЛП(глПринтер.getParamString(глПринтер.LIBFPTR_PARAM_SERIAL_NUMBER));
КонецФункции
Показать
(2) у меня так получилось под ДТО10:
Драйвер = оккм;
Если ККМ.ЭтоДрайверАтол10() Тогда
Если НЕ ККМ.ПодключитьККМ(Драйвер) Тогда
Сообщить("Не подключено!");
КонецЕсли;
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_DATE_TIME, ТекущаяДата()) ;
Ответ = Драйвер.writeDateTime() ;
Сообщить(Ответ);
Если Ответ <> 0 тогда
Сообщить("Не удалось установить время: " + Драйвер.ErrorDescription());
КонецЕсли;
Иначе
Сообщить("НЕ Атолл 10");
КонецЕсли;
Показать
Если вдруг кто захотел геммора в связке 1с+линукс:
СисИнфо = Новый СистемнаяИнформация;
глТипПлатформы = СисИнфо.ТипПлатформы;
Если глТипПлатформы = ТипПлатформы.Linux_x86
или глТипПлатформы = ТипПлатформы.Linux_x86_64 Тогда
ПутьКФайлу3 = глКаталогИБ+"KKT_10_4_2/libfptr10_1c_lin32_10_4_2_0.so";
Файл3 = Новый Файл(ПутьКФайлу3);
Состояние(Файл3.ПолноеИмя);
Если Файл3.Существует() Тогда
ПодключеноПечать = ПодключитьВнешнююКомпоненту(ПутьКФайлу3, "Fp", ТипВнешнейКомпоненты.Native);
Попытка
глПринтер = Новый("AddIn.Fp.ATOL_KKT_1C83_V10");
Исключение
глФормаПредупреждение.Предупреждение = "глПринтер не создан AddIn.Fp.ATOL_KKT_1C83_V10 " + ОписаниеОшибки();
ОткрытьФормуМодально(глФормаПредупреждение);
Возврат 0;
КонецПопытки;
Иначе
глФормаПредупреждение.Предупреждение = ""+ Файл3.ПолноеИмя + " AddIn.Fp.ATOL_KKT_1C83_V10 не найден!";
ОткрытьФормуМодально(глФормаПредупреждение);
Возврат 0;
КонецЕсли;
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот