Имя: Пароль:
1C
 
Фискальник анулирует чеки
0 Виль
 
01.04.09
16:39
УТ. ФР - Феликс РК- 01.
Интерфейс кассира
В коде добавил функцию после кассового чека - через Фр выходит и товарный чек.
- при закрытии первого чека нормально выходит и кассовый и товарный, но когда начинаешь закрывать следующий чек - кассовый выходит со значением "Аннулирован"... Такое ощущение, что предыдущий чек не закрылся - может кто с таким уже сталкивался?
1 Al113
 
01.04.09
16:42
1ска никак не ругается?
2 Виль
 
01.04.09
16:44
Нет - выдает кассовый и товарный, только в кассвом "анулирован"
3 Виль
 
01.04.09
16:46
Использую
ПолучитьСерверТО().ПечатьТескта(мФР,массивСтрок,32)
4 Виль
 
01.04.09
17:14
up
5 MikeFromAtol
 
02.04.09
10:33
Какой драйвер юзает обработка, АТОЛовский?
6 MikeFromAtol
 
02.04.09
10:53
НУ и еще можно выложить код обработки, отвечающий за формирование чеков.

а вообще надо анализировать ошибки при вызове методов драйвера, чтобы понимать, когда возникает ошибка
7 Виль
 
02.04.09
12:21
(5) да АТОЛовский... Ошибок он как раз и не выдает - поковырял - нашел следующее - кассовый чек не закрывается однозначно. Заходишь в общий драйвер кассы и делаешь отмену чека. в этом случае - всё начинает работать до пробития следующего чека
8 MikeFromAtol
 
02.04.09
13:23
Обработку в студию.
Так подсказать ничего не сможем, но однозначно где то что то не так вызывается.

А ошибки то он может и выдает, только этого не видно :) поэтому надо после выполнения определенных методов вызывать ResultCode и ResultDescription для анализа, что получается после выполнения определенных команд.

Кстати, в АТОЛ: драйвер ККМ реализован интерфейс 1С, описанный в ИТС, в разделе работы с торговым оборудованием. Может, попробовать реализовать работу через него?
9 Виль
 
03.04.09
14:38
Спасибо за подсказки - сейчас посмотрю...
10 Torquader
 
03.04.09
17:50
Просто печать строк может считаться началом нового чека, а при начале печати кассового чека производится проверка, а не открыт ли чек, и, если он открыт, отменяет его и начинает снова.
Чтобы не иметь такой проблемы, нужно сначала проверять наличие открытого чека, потом печатью текстовых строки печатать товарный чек или всё, что хочется напечатать, после этого не забыть напечатать заголовок чека и пробить нужный чек.
11 Виль
 
06.04.09
17:47
Убрал из обработки печать товарного чека - выяснилось следующее - какие-то номенклатурные позиции пробиваются кассовым чеком нормально - а некоторые позиции начало чека выводят - но закрытие не делают. Отладчиком проходил - Объект.Драйвер.ЗакрытьЧек() просто проходит... Никаких действий по закрытию.

Сравнивал две позиции которые закрываются кассовым чеком и не закрываются. Видимых отличий нет... Куда бросить взор - чем успокоится?
12 MikeFromAtol
 
06.04.09
18:01
А что за номенклатура?
Если они по-разному пробиваются - значит, в них есть какие-нибудь отличия, например, пробиваются штучные, не пробиваются весовые, или что-нибудь похожее.

А вообще, как уже и писал, обработку в студию, а к ней - два лога. FprnM1C.log и FprnMLS.log - их можно найти там, где зарегистрирована dll драйвера.
Логи лучше выложить сразу, как только выйдет ошибка, чтобы нам в них долго не копаться.
13 Виль
 
06.04.09
19:58
(12)
Это из лога
Сразу спасибо - в общем нашел почему чек не закрывался -
В интерфейсе стоит принудительное округление в меньшую сторону и я так понимаю, что обе суммы до и после округления  попадают в кассу. сейчас буду разбираться как это уравновесить...

06.04.2009 17:55:54  0000000000  Driver.OpenCheck
06.04.2009 17:55:54  0000000000  Посылка команды ККМ: 00 00 92 00 01
                    0000000016    Получен ответ: 55 00 00
                    0000000000    Driver.Set_CurrentDeviceNumber 45
                    0000000000    Driver.Set_AdvancedRegistration 0
                    0000000000    Driver.Set_TextWrap 2
                    0000000000    Driver.Set_Name Проверочный товар
                    0000000000    Driver.Set_Quantity 1
                    0000000000    Driver.Set_Price 375,9
                    0000000000    Driver.Set_Department 1
06.04.2009 17:55:54  0000000000  Driver.Registration
06.04.2009 17:55:54  0000000000  Посылка команды ККМ: 00 00 92 00 01
                    0000000015    Получен ответ: 55 9B 00
06.04.2009 17:55:54  0000000000  Посылка команды ККМ: 00 00 52 03 00 00 03 75 90 00 00 00 10 00 01
                    0000000000    Получен ответ: 55 00 00
06.04.2009 17:55:54  0000000000  Посылка команды ККМ: 00 00 4C 8F A8 E0 E1 A8 AD A3 20 91 30 39 31 32 20 20 8F A8 E0 E1 A8 AD A3 20 35 38 35 F8 28 E8 E2 2C 20
                    0000000016    Получен ответ: 55 00 00
06.04.2009 17:55:54  0000000000  Посылка команды ККМ: 00 00 4C 35 32 38 33 33 34 30 30 30 39 35 33 36 29
                    0000000078    Получен ответ: 55 00 00
06.04.2009 17:55:54  0000000000  Посылка команды ККМ: 00 00 52 02 00 00 03 75 90 00 00 00 10 00 01
                    0000000094    Получен ответ: 55 00 00
                    0000000000    Driver.Set_CurrentDeviceNumber 45
                    0000000000    Driver.Set_Summ 375
                    0000000000    Driver.Set_TypeClose 0
06.04.2009 17:55:54  0000000000  Driver.Payment
06.04.2009 17:55:54  0000000000  Посылка команды ККМ: 00 00 99 00 01 00 00 03 75 00
                    0000000203    Получен ответ: 55 00 00 00 00 00 90 00 00 00 00 00
06.04.2009 17:55:55  0000000000  Driver.CloseCheck
06.04.2009 17:55:55  0000000000  Посылка команды ККМ: 00 00 4A 00 01 00 00 00 00 00
                    0000000016    Получен ответ: 55 72 00
06.04.2009 17:55:55  0000000000  Ошибка! ResultCode = -3897 ResultDescription = "Чек оплачен не полностью" BadParam = 0 BadParamDescription = "Ошибок в параметрах нет"
                    0000016312    Driver.Set_CurrentDeviceNumber 45
                    0000000000    Driver.Set_DeviceEnabled 0
06.04.2009 17:56:11  0000000000  Устройство включено = 0
                    0000000000    Waiting for EventThread...
                    0000000109    EventThread destroyed successfully
                    0000000016    Port closed
06.04.2009 17:56:11  0000000000  Driver.DeleteDevice
06.04.2009 17:56:11  0000000000  Разрушение объекта нижнего уровня
06.04.2009 17:56:11  0000000000    Объект старого протокола разрушен
                      ################################################################
06.04.2009 17:56:11  0000000359  Разрушение объекта нижнего уровня
06.04.2009 17:56:11  0000000000    Объект старого протокола разрушен
                      ################################################################
06.04.2009 17:56:11  0000000000  Разрушение объекта нижнего уровня
14 MikeFromAtol
 
07.04.09
10:53
Ну и замечательно :)
15 Torquader
 
07.04.09
21:20
"Умный" драйвер работает с переменными типа double-вещественное число, а касса хочет int. Поэтому, некоторые double с копейками округляются и выходит, что итог по чеку не равен сумме позиций.
Я писал "пробивалку" в Excel и напоролся именно на это, только у меня сама программа так и говорила, что суммы не совпали, и предлагала отменить и повторить чек.
Решением проблемы для Excel было использование формата Decimal или Currency.
Здесь можно посоветовать пробивать суммы без копеек, так как копейки - это зло.
Другой вариант, который очень подошёл - это "пробивать" весь чек текстовыми строками, а потом одной суммой - итогом.
Независимо от того, куда вы едете — это в гору и против ветра!