Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Получить номер смены ККМ

Получить номер смены ККМ
Я
   Лиза777
 
31.07.19 - 13:31
Мне нужно получить программно номер смены на ККМ. Нашла код типа
    ФР.ПолучитьСостояниеККМ();
    НомерСмены=ФР.НомерСмены;
Но не могу разобраться как сам объект ФР получить?
 
 
   unbred
 
1 - 31.07.19 - 13:37
(0) подключить ФР?
   Лиза777
 
2 - 31.07.19 - 13:40
он подключен. Мне нужно номер открытой смены узнать
   Масянька
 
3 - 31.07.19 - 13:50
(2) ФР - это и есть экземпляр кассы.
   Лиза777
 
4 - 31.07.19 - 13:51
ну так понятно, я вот и спрашиваю как получить?
   Garykom
 
5 - 31.07.19 - 13:54
От ККТ зависит (что такое ККМ не в курсе)
   Лиза777
 
6 - 31.07.19 - 13:56
Штрих-М
   Лиза777
 
7 - 31.07.19 - 13:56
(5) ККМ - контрольно-кассовая машина ))
   Garykom
 
8 - 31.07.19 - 13:59
(7) И где вы машину нашли? Когда были Фискальные Регистраторы а сейчас Контрольно Кассовая Техника ?
   unbred
 
9 - 31.07.19 - 14:01
(2) тогда без отладчика никак
   piter3
 
10 - 31.07.19 - 14:01
(2) бред.
   Масянька
 
11 - 31.07.19 - 14:02
Ну, например, так:
    Если глФРВкл = 1 Тогда
        глФР = Параметры.Получить("Объект");
    Иначе
        Сообщить("Фискальный регистратор: ошибка при подключении", "!");
        Сообщить("    " + Параметры.Получить("ОписаниеРезультата"));
    КонецЕсли;
   unbred
 
12 - 31.07.19 - 14:05
(11) + Если НЕ СменаОткрыта тогда 
сообщить("ой");
конецЕсли
   Масянька
 
13 - 31.07.19 - 14:05
(12) Погоди...
До смены еще не дошли...
Ой.
   Garykom
 
14 - 31.07.19 - 14:07
   Лиза777
 
15 - 01.08.19 - 05:07
(8) ну да ))) по привычке пишу так
   Лиза777
 
16 - 01.08.19 - 05:25
(11) а Параметры - это что?
   Лиза777
 
17 - 01.08.19 - 05:42
(14) тут не понятно мне (((
Мне бы в обработке получить подключенный ФР и получить с него номер открытой смены.
Попробую в отладчике покопаться при пробитии чека КкМ, может возьму там и запишу куда-нибудь в тот момент
   Лиза777
 
18 - 05.08.19 - 17:26
в обработке "ТОСервер" в процедуре "печать чека" есть номер смены, не знаю как мне его сохранять что ли, чтобы потом в отчёте моём самописном отразить какой номер смены был у чека?
   МаксимНижегородец
 
19 - 06.08.19 - 09:35
Метод ПолучитьТекущееСостояние(ID_KKT) - возвращает НомерФД, НомерЧека, НомерСмены, СтатусСмены. Можно вызвать в любой момент. Не зависимо, закрыта смена или нет (ККТ должен быть включен в сеть и к ПК).
   Лиза777
 
20 - 15.08.19 - 10:46
Я делала так

    МассивФР      = ПолучитьСерверТО().ПолучитьСписокУстройств(
    Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор,
    Справочники.КассыККМ.НайтиПоКоду("КСКС00001"));
    
    ФР            = Неопределено;
    СписокФР      = Новый СписокЗначений();
    Вид           = Неопределено;
    Представление = Неопределено;
    
    Для каждого ФР Из МассивФР Цикл
        ПолучитьСерверТО().ПолучитьПредставлениеУстройства(ФР, Вид, Представление);
        СписокФР.Добавить(ФР, Представление);
        ФР.ПолучитьСостояниеККМ();
        НомерСмены=ФР.НомерСмены;
    КонецЦикла;

на строке [ФР.ПолучитьСостояниеККМ()] ругается, что не такой объект ФР
   unbred
 
21 - 15.08.19 - 10:58
фр=неопределено
для каждого фр из
я не претендую на то,что это неправильно ,но глаз режет
   isa2net
 
22 - 15.08.19 - 11:10
(20) а если создать объект компоненты и обратиться через него?
   Лиза777
 
23 - 15.08.19 - 11:15
(22) не знаю как это
   isa2net
 
24 - 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);
            КонецЕсли;
                
        Исключение
            Инфо = ИнформацияОбОшибке();
            ТекстОшибки = Инфо.Описание;
        КонецПопытки;
        
        Если ОбъектДрайвера <> Неопределено Тогда
            глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования.Вставить(ДанныеДрайвера.ДрайверОборудования, ОбъектДрайвера);
            ОбъектДрайвера = глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования[ДанныеДрайвера.ДрайверОборудования];
        КонецЕсли;
        
    КонецЕсли;   
        
    Возврат ОбъектДрайвера;
    
КонецФункции
   isa2net
 
25 - 15.08.19 - 11:32
или Новый("AddIn.DrvFR1C")
   Лиза777
 
26 - 15.08.19 - 18:46
(24) нашла у себя аналогичную функцию. Только в глПодключаемоеОборудование.ДрайвераПодключаемогоОборудования - нет ничего почему-то
Хотя в торговом оборудовании галки на  трёх ККМ стоят
   Лиза777
 
27 - 15.08.19 - 19:10
ну так и не получается никак ((((
   Kigo_Kigo
 
28 - 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)
КонецПроцедуры;
   Kigo_Kigo
 
29 - 15.08.19 - 22:45
и да не забудь переменную глФР объявить как общую экспортную
   Kigo_Kigo
 
30 - 15.08.19 - 22:49
Сообщить(НомерСмены);
ОтключитьсяОтФР(Пароль, ЗапоминатьОшибку = 1)
КонецПроцедуры;

писать как

Сообщить(НомерСмены);
ОтключитьсяОтФР(Пароль);
КонецПроцедуры;
 
 Рекламное место пустует
   Лиза777
 
31 - 16.08.19 - 06:42
в ФР получает COM-объект, но на строку глФР.ПолучитьСостояниеККМ() пишет "метод не обнаружен".

В начале обработки прописала

Перем глФр Экспорт;
   Лиза777
 
32 - 16.08.19 - 07:07
я пробовала глФР.LastSessionNumber пишет значение 1
   Kigo_Kigo
 
33 - 16.08.19 - 07:42
SessionNumber номер последней закрытой смены

попробуйте вместо получитьсостояниеккм
его англ каманду
GetECRStatus()
   Kigo_Kigo
 
34 - 16.08.19 - 07:46
И надеюсь что глФР вы объявили на клиенте
   piter3
 
35 - 16.08.19 - 07:48
(34) ТАк вроде это 7.7
   Kigo_Kigo
 
36 - 16.08.19 - 07:54
(35) какие же это клюшки если
 Для каждого ФР Из МассивФР Цикл
   Kigo_Kigo
 
37 - 16.08.19 - 07:57
&НаКлиенте
Перем глФР Экспорт
   piter3
 
38 - 16.08.19 - 08:06
(36) Да пардон
   Лиза777
 
39 - 16.08.19 - 11:43
(34) у меня НЕ управляемые формы
   Лиза777
 
40 - 16.08.19 - 11:43
у меня комплексная автоматизация ред.1
   isa2net
 
41 - 16.08.19 - 12:53
Отсюда: http://catalog.mista.ru/public/617491/
// Возвращает структуру вида СостояниеСмены (см.руководство программиста), НомерЧека, НомерСмены.

// При ошибке возвращает Неопределено.
//

Функция ПолучитьНомерСменыИЧека(рКодОшибки=0) Экспорт
Попытка
    рКодОшибки=0;
    
    фр=глФР;
    фр.Password=30;// и только так

    
    рез=фр.FNGetCurrentSessionParams();
    Если рез<>0 Тогда
        Сообщить("ПолучитьНомерСменыИЧека, ошибка получения: "+фр.ResultCodeDescription+" (использован пароль "+СокрЛП(фр.Password)+").");
        рКодОшибки=фр.ResultCode;
        Возврат Неопределено;
    КонецЕсли;    
    
    рРезультат=Новый Структура;
    рРезультат.Вставить("СостояниеСмены",фр.FNSessionState);
    рРезультат.Вставить("НомерСмены",фр.SessionNumber);// если закрыта, то последней, если открыта, то текущей

    рРезультат.Вставить("НомерЧека",фр.ReceiptNumber);// если закрыта, то 1, если открыта, то последниего текущего

    
    Возврат рРезультат;
Исключение
    Сообщить("ПолучитьНомерСменыИЧека, ошибка: "+ОписаниеОшибки(),СтатусСообщения.Важное);
    Возврат Неопределено;
КонецПопытки;
КонецФункции
   Лиза777
 
42 - 16.08.19 - 13:38
(33) результат = 0
   Лиза777
 
43 - 16.08.19 - 13:48
в фр.SessionNumber  получила номер смены ККМ. УРА!!!!!!
Спасибо огромное!!!!
   Лиза777
 
44 - 16.08.19 - 13:51
Kigo_Kigo и    isa2net, вы меня прям спасли! так помогли!! жалко что нет возможности вам шоколадку передать или бутылочку пива ))


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.