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 . Там куча всего с печатью чеков, нефискализованых документов, открытий/закрытий смены но нет методов для изменения времени. Насколько я сейчас понимаю то через неё в принципе невозможно управлять временем на КММ. Поэтому и спрашиваю у сообщества может кто то подобную задачу решал и это я вупор не вижу нужного метода а он есть или есть какой-то другой вариант.
11. lefthander 25.01.19 13:44 Сейчас в теме
(1)Вы должны помнить, что время можно изменить ТОЛЬКО при закрытой смене. Если смена открыта, то поменять не получится.
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 объекту есть в составе атоловских драйверов.
10. user1084383 25.01.19 13:40 Сейчас в теме
Добрый день, а есть пример кода для драйверов ATOL 9?
или хотя как com объект создать для версии 9
12. dima_gsv 9 26.01.19 00:28 Сейчас в теме
(10) Для 9 версии примеров на 1с у меня нет. В комплекте с драйверами должна быть инструкция на com-объект. Посмотрите там. Думаю, что будет что то типа Новый COMОбъект("AddIn.Fptr9"). Но работать с ним надо по другому, не так как с 10 версией.
С 9 версией даже не смотрел, как там время подстраивать, т.к. её поддержку скоро прекратят, всё равно переходить на 10 версию надо будет.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

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

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