|
Получить номер смены ККМ | ☑ | ||
---|---|---|---|---|
0
Лиза777
31.07.19
✎
13:31
|
Мне нужно получить программно номер смены на ККМ. Нашла код типа
ФР.ПолучитьСостояниеККМ(); НомерСмены=ФР.НомерСмены; Но не могу разобраться как сам объект ФР получить? |
|||
1
unbred
31.07.19
✎
13:37
|
(0) подключить ФР?
|
|||
2
Лиза777
31.07.19
✎
13:40
|
он подключен. Мне нужно номер открытой смены узнать
|
|||
3
Масянька
31.07.19
✎
13:50
|
(2) ФР - это и есть экземпляр кассы.
|
|||
4
Лиза777
31.07.19
✎
13:51
|
ну так понятно, я вот и спрашиваю как получить?
|
|||
5
Garykom
гуру
31.07.19
✎
13:54
|
От ККТ зависит (что такое ККМ не в курсе)
|
|||
6
Лиза777
31.07.19
✎
13:56
|
Штрих-М
|
|||
7
Лиза777
31.07.19
✎
13:56
|
(5) ККМ - контрольно-кассовая машина ))
|
|||
8
Garykom
гуру
31.07.19
✎
13:59
|
(7) И где вы машину нашли? Когда были Фискальные Регистраторы а сейчас Контрольно Кассовая Техника ?
|
|||
9
unbred
31.07.19
✎
14:01
|
(2) тогда без отладчика никак
|
|||
10
piter3
31.07.19
✎
14:01
|
(2) бред.
|
|||
11
Масянька
31.07.19
✎
14:02
|
Ну, например, так:
Если глФРВкл = 1 Тогда глФР = Параметры.Получить("Объект"); Иначе Сообщить("Фискальный регистратор: ошибка при подключении", "!"); Сообщить(" " + Параметры.Получить("ОписаниеРезультата")); КонецЕсли; |
|||
12
unbred
31.07.19
✎
14:05
|
(11) + Если НЕ СменаОткрыта тогда
сообщить("ой"); конецЕсли |
|||
13
Масянька
31.07.19
✎
14:05
|
(12) Погоди...
До смены еще не дошли... Ой. |
|||
14
Garykom
гуру
31.07.19
✎
14:07
|
||||
15
Лиза777
01.08.19
✎
05:07
|
(8) ну да ))) по привычке пишу так
|
|||
16
Лиза777
01.08.19
✎
05:25
|
(11) а Параметры - это что?
|
|||
17
Лиза777
01.08.19
✎
05:42
|
(14) тут не понятно мне (((
Мне бы в обработке получить подключенный ФР и получить с него номер открытой смены. Попробую в отладчике покопаться при пробитии чека КкМ, может возьму там и запишу куда-нибудь в тот момент |
|||
18
Лиза777
05.08.19
✎
17:26
|
в обработке "ТОСервер" в процедуре "печать чека" есть номер смены, не знаю как мне его сохранять что ли, чтобы потом в отчёте моём самописном отразить какой номер смены был у чека?
|
|||
19
Максим Нижегородец
06.08.19
✎
09:35
|
Метод ПолучитьТекущееСостояние(ID_KKT) - возвращает НомерФД, НомерЧека, НомерСмены, СтатусСмены. Можно вызвать в любой момент. Не зависимо, закрыта смена или нет (ККТ должен быть включен в сеть и к ПК).
|
|||
20
Лиза777
15.08.19
✎
10:46
|
Я делала так
МассивФР = ПолучитьСерверТО().ПолучитьСписокУстройств( Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор, Справочники.КассыККМ.НайтиПоКоду("КСКС00001")); ФР = Неопределено; СписокФР = Новый СписокЗначений(); Вид = Неопределено; Представление = Неопределено; Для каждого ФР Из МассивФР Цикл ПолучитьСерверТО().ПолучитьПредставлениеУстройства(ФР, Вид, Представление); СписокФР.Добавить(ФР, Представление); ФР.ПолучитьСостояниеККМ(); НомерСмены=ФР.НомерСмены; КонецЦикла; на строке [ФР.ПолучитьСостояниеККМ()] ругается, что не такой объект ФР |
|||
21
unbred
15.08.19
✎
10:58
|
фр=неопределено
для каждого фр из я не претендую на то,что это неправильно ,но глаз режет |
|||
22
isa2net
15.08.19
✎
11:10
|
(20) а если создать объект компоненты и обратиться через него?
|
|||
23
Лиза777
15.08.19
✎
11:15
|
(22) не знаю как это
|
|||
24
isa2net
15.08.19
✎
11:27
|
из ут 11:
Функция ПолучитьОбъектДрайвера(ДанныеДрайвера, ТекстОшибки = Неопределено) ОбъектДрайвера = Неопределено; Для Каждого ДрайверПО Из глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования Цикл Если ДрайверПО.Ключ = ДанныеДрайвера.ДрайверОборудования Тогда ОбъектДрайвера = ДрайверПО.Значение; Прервать; КонецЕсли; КонецЦикла; Если ОбъектДрайвера = Неопределено Тогда Попытка ProgID = ДанныеДрайвера.ИдентификаторОбъекта; Если ПустаяСтрока(ProgID) Тогда ОбъектДрайвера = ""; // Драйвер не требуется Иначе ProgID1 = ?(Найти(ProgID, "|") > 0, Сред(ProgID, 1, Найти(ProgID, "|")-1), ProgID); ProgID2 = ?(Найти(ProgID, "|") > 0, Сред(ProgID, Найти(ProgID, "|")+1), ProgID); Если ДанныеДрайвера.ПоставляетсяДистрибутивом Тогда ПодключитьВнешнююКомпоненту(ProgID1); Иначе ИмяОбъекта = Сред(ProgID1, Найти(ProgID1, ".") + 1); Префикс = Сред(ProgID1, 1, Найти(ProgID1, ".")); ProgID2 = Префикс + СтрЗаменить(ИмяОбъекта, ".", "_") + "." + ИмяОбъекта; Если ДанныеДрайвера.ВСоставеКонфигурации Тогда Результат = ПодключитьВнешнююКомпоненту("ОбщийМакет." + ДанныеДрайвера.ИмяМакетаДрайвера, СтрЗаменить(ИмяОбъекта, ".", "_")); Иначе СсылкаНаДрайвер = ПолучитьНавигационнуюСсылку(ДанныеДрайвера.ДрайверОборудования, "ЗагруженныйДрайвер"); Результат = ПодключитьВнешнююКомпоненту(СсылкаНаДрайвер, СтрЗаменить(ИмяОбъекта, ".", "_")); КонецЕсли; КонецЕсли; ОбъектДрайвера = Новый (ProgID2); КонецЕсли; Исключение Инфо = ИнформацияОбОшибке(); ТекстОшибки = Инфо.Описание; КонецПопытки; Если ОбъектДрайвера <> Неопределено Тогда глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования.Вставить(ДанныеДрайвера.ДрайверОборудования, ОбъектДрайвера); ОбъектДрайвера = глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования[ДанныеДрайвера.ДрайверОборудования]; КонецЕсли; КонецЕсли; Возврат ОбъектДрайвера; КонецФункции |
|||
25
isa2net
15.08.19
✎
11:32
|
или Новый("AddIn.DrvFR1C")
|
|||
26
Лиза777
15.08.19
✎
18:46
|
(24) нашла у себя аналогичную функцию. Только в глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования - нет ничего почему-то
Хотя в торговом оборудовании галки на трёх ККМ стоят |
|||
27
Лиза777
15.08.19
✎
19:10
|
ну так и не получается никак ((((
|
|||
28
Kigo_Kigo
15.08.19
✎
22:44
|
(27) и не получится, потому чо Новый("AddIn.DrvFR1C") это прокладка между 1С и основным драйвером
вот тебе код &НаКлиенте Функция ПодключитьсяКФР(Пароль) Рез = 0; глФР.Password=Пароль; глФР.Connect(); Ответ = глФР.ResultCode; Если Ответ=0 Тогда Рез=1; Иначе Сообщить(глФР.ResultCodeDescription); КонецЕсли; глФР.Beep(); Возврат Рез; КонецФункции &НаКлиенте Функция ОтключитьсяОтФР(Пароль, ЗапоминатьОшибку = 1) Рез = 0; // пеключим ФР в нерабочий режим глФР.Password=Пароль; глФР.Disconnect(); Ответ = глФР.ResultCode; Если Ответ=0 Тогда Рез=1; ИначеЕсли ЗапоминатьОшибку = 1 Тогда Сообщить(глФР.ResultCodeDescription); КонецЕсли; Возврат Рез; КонецФункции &НаКлиенте Процедура ИнициализироватьФР() Экспорт Попытка ПодключитьВнешнююКомпоненту("AddIn.DrvFR"); // достаточно штатной установки драйвера на локальный ПК или сервер ком=Новый COMОбъект("AddIn.DrvFR"); // никакой более регистрации на современных ОС обычно не требуется глФР=ком; // экспортная переменная глФР переменная должна быть объявлена в глобальном модуле обычного приложения Исключение Сообщить("Ошибка инициализации фискального регистратора кассовых чеков: "+ОписаниеОшибки(),СтатусСообщения.Важное); КонецПопытки; Пароль = 30; ПодключитьсяКФР(Пароль); глФР.ПолучитьСостояниеККМ(); НомерСмены=глФР.НомерСмены; Сообщить(НомерСмены); ОтключитьсяОтФР(Пароль, ЗапоминатьОшибку = 1) КонецПроцедуры; |
|||
29
Kigo_Kigo
15.08.19
✎
22:45
|
и да не забудь переменную глФР объявить как общую экспортную
|
|||
30
Kigo_Kigo
15.08.19
✎
22:49
|
Сообщить(НомерСмены);
ОтключитьсяОтФР(Пароль, ЗапоминатьОшибку = 1) КонецПроцедуры; писать как Сообщить(НомерСмены); ОтключитьсяОтФР(Пароль); КонецПроцедуры; |
|||
31
Лиза777
16.08.19
✎
06:42
|
в ФР получает COM-объект, но на строку глФР.ПолучитьСостояниеККМ() пишет "метод не обнаружен".
В начале обработки прописала Перем глФр Экспорт; |
|||
32
Лиза777
16.08.19
✎
07:07
|
я пробовала глФР.LastSessionNumber пишет значение 1
|
|||
33
Kigo_Kigo
16.08.19
✎
07:42
|
SessionNumber номер последней закрытой смены
попробуйте вместо получитьсостояниеккм его англ каманду GetECRStatus() |
|||
34
Kigo_Kigo
16.08.19
✎
07:46
|
И надеюсь что глФР вы объявили на клиенте
|
|||
35
piter3
16.08.19
✎
07:48
|
(34) ТАк вроде это 7.7
|
|||
36
Kigo_Kigo
16.08.19
✎
07:54
|
(35) какие же это клюшки если
Для каждого ФР Из МассивФР Цикл |
|||
37
Kigo_Kigo
16.08.19
✎
07:57
|
&НаКлиенте
Перем глФР Экспорт |
|||
38
piter3
16.08.19
✎
08:06
|
(36) Да пардон
|
|||
39
Лиза777
16.08.19
✎
11:43
|
(34) у меня НЕ управляемые формы
|
|||
40
Лиза777
16.08.19
✎
11:43
|
у меня комплексная автоматизация ред.1
|
|||
41
isa2net
16.08.19
✎
12:53
|
Отсюда: http://catalog.mista.ru/public/617491/
// Возвращает структуру вида СостояниеСмены (см.руководство программиста), НомерЧека, НомерСмены. // При ошибке возвращает Неопределено. // Функция ПолучитьНомерСменыИЧека(рКодОшибки=0) Экспорт Попытка рКодОшибки=0; фр=глФР; фр.Password=30; // и только так рез=фр.FNGetCurrentSessionParams(); Если рез<>0 Тогда Сообщить("ПолучитьНомерСменыИЧека, ошибка получения: "+фр.ResultCodeDescription+" (использован пароль "+СокрЛП(фр.Password)+")."); рКодОшибки=фр.ResultCode; Возврат Неопределено; КонецЕсли; рРезультат=Новый Структура; рРезультат.Вставить("СостояниеСмены",фр.FNSessionState); рРезультат.Вставить("НомерСмены",фр.SessionNumber); // если закрыта, то последней, если открыта, то текущей рРезультат.Вставить("НомерЧека",фр.ReceiptNumber); // если закрыта, то 1, если открыта, то последниего текущего Возврат рРезультат; Исключение Сообщить("ПолучитьНомерСменыИЧека, ошибка: "+ОписаниеОшибки(),СтатусСообщения.Важное); Возврат Неопределено; КонецПопытки; КонецФункции |
|||
42
Лиза777
16.08.19
✎
13:38
|
(33) результат = 0
|
|||
43
Лиза777
16.08.19
✎
13:48
|
в фр.SessionNumber получила номер смены ККМ. УРА!!!!!!
Спасибо огромное!!!! |
|||
44
Лиза777
16.08.19
✎
13:51
|
Kigo_Kigo и isa2net, вы меня прям спасли! так помогли!! жалко что нет возможности вам шоколадку передать или бутылочку пива ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |