1. benzol45 24.10.18 10:52 Сейчас в теме

Синхронизация времени на ККМ

Добрый день.

Заметил что часы на онлайнККМ Атол далеки от идеальных и убегать/отставать в день на 20 секунд это практически норма и за месяц время на ККМ уже весьма значительно отличается от реального. На компьютере без проблем настроить синхронизацию времени с ntp и забыть про рассинхрон, но возникает вопрос как это же время установить на ККМ. В возможностях Розницы 2.2 я подобного не нашёл и среди методов NativeAPI от Атола, через которую идёт работа с ККТ, что бы устанавливать самому программно тоже не увидел.
Неужели единственный вариант установить время это только через тест драйвера ?

С уважением, Михаил
Ответы
Избранное Подписка Сортировка: Древо
2. mcgoblin 1 24.10.18 11:02 Сейчас в теме
(1) Молодой человек, юзайте драйвер ККМ и курите мануал от него, там есть настройки.
Подключаетесь к ККМ через стандартный драйвер и нажимаете так же Синхронизировать время

Так же можете поизучать Апи драйвера ККМ, там, если не ошибаюсь, была такая функция, которая отвечает за установку времени
4. mcgoblin 1 24.10.18 11:13 Сейчас в теме
(2)
(1) А тут ссылка на руководство к атолу, где описаны все функции, в том числе и функции установки даты и времени
http://partner.atol.ru/files/dc/79/Drivers8_FprnM_PM.pdf
5. benzol45 24.10.18 12:36 Сейчас в теме
(2)
Тест драйвера у Атола и есть надстройка над драйвером ККМ и конечно настройки времени там есть. И вот именно туда продавцов пускать не то что не хочется а прямо категорически не рассматривается.Пара нажатий мимо нужной кнопки и продавец вместо торговли получает перекур на пару часов.

Вот про "Апи дравйвера" по сути и был вопрос. Но работает Розница через доп. прослойку между драйвером Атола и 1с - интеграционную компоненту NativeApi и там такой функционал я не нашёл, хотя возможно как раз что и плохо или не там искал.

По (4) да, ссылку эту и аналогичную для Атол ДрайвераККТ 9 изучил. но это из компоненты под NativeApi недоступно.
По (3) аналогично - читал и пробовал, тема очень старая и так не получается. на ДТО 9 ни один из типов AddIn.DrvFR, AddIn.FPrnM8, AddIn.FPrnM9 не определён. Подключается AddIn.ATOL_KKT_1C83_V9.ATOL_KKT_1C83_V9 но это как раз и есть компонента через NativeAPI - подключение настраиваю, тест проходит но вот время менять механизма не вижу.
3. mcgoblin 1 24.10.18 11:09 Сейчас в теме
(1) достал дописывать свой основной пост)))

Вот ссылка по твоей проблеме
https://forum.infostart.ru/forum9/topic50174/
6. benzol45 24.10.18 13:17 Сейчас в теме
(3)

Вообще я бы с радостью сработал напрямую с драйвером но даже на этапе загрузки ВК получаю ошибку
ЗагрузитьВнешнююКомпоненту("C:\Program Files\ATOL\Drivers9\KKT\bin\fptr.dll") то ли уже ДТО напрямую не собирается работать, что конечно вряд ли, то ли 1с желает работать только через компоненты NativeAPI. Если есть опыт подключения ДТО 9 к 1с УФ буду благодарен если поделишься.
7. mcgoblin 1 24.10.18 15:45 Сейчас в теме
(6) Когда еще не прогал, а только админил на позапрошлой работе, мы нанимали прогера. Он распиливал официальную обработку по работе с устройством и на основе ее дописывал функционал дополнительных настроек ккм.

Если программируешь, то попробуй так же.
8. benzol45 26.10.18 10:22 Сейчас в теме
(7)
Так не стоит так вопрос даже "писать или не писать". конечно готов писать. Но то что у ДТО 9 идёт для интеграции в 1с это компонента с NativeApi которвая подцепляется как AddIn.ATOL_KKT_1C83_V9 и на ИТСе есть список всех доступных от неё методов https://its.1c.ru/db/metod8dev#content:4829:hdoc . Там куча всего с печатью чеков, нефискализованых документов, открытий/закрытий смены но нет методов для изменения времени. Насколько я сейчас понимаю то через неё в принципе невозможно управлять временем на КММ. Поэтому и спрашиваю у сообщества может кто то подобную задачу решал и это я вупор не вижу нужного метода а он есть или есть какой-то другой вариант.
9. dima_gsv 9 09.01.19 23:57 Сейчас в теме
Для 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, "COM12");
    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 Тогда
        Возврат -ИсходноеЧисло
    Иначе
        Возврат ИсходноеЧисло
    КонецЕсли;

КонецФункции
Показать

Документация по com объекту есть в составе атоловских драйверов.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Москва
зарплата до 120 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 170 000 руб.
Полный день

Программист 1С
Москва
Полный день

Программист 1С
Видное
Полный день