Фискальный регистратор.
Добавлено: 23 Февраль 2017, 14:41
				
				Народ, кто-нибудь начал работать по теме? Меня свели со специалистом по ККМ, он мне рассказал немного, но со стороны железа. А вот программная часть пока в тумане.
			Место общения программистов, форум разработчиков БД на Clarion
https://www.forum.clarionlife.net/
Который в Гугл? Тоже там не ахти. Народ всё же ждёт когда петух клюнет.Дед Пахом писал(а):Да по-моему это одна из самых популярных тем, по крайней мере в Clalist.
Код: Выделить всё
If ~Pos:flgCheck
    ThisWindow.Update
    BRW1.UpdateBuffer
    ?OLE1{'DeviceEnabled'}=True
    If ?OLE1{'ResultCode'}=0
        If ?OLE1{'GetStatus'}=0
             If  ?OLE1{'CheckState'}<>0 Then ?OLE1{'CancelCheck'}. 
              l:NomDocCheck=?OLE1{'CheckNumber'}
            l:Opl=Abs(Pos:Summa)!l:Summa*l:Kol
            ?OLE1{'Password'}='1'
            ?OLE1{'Mode'}=1
            If ?OLE1{'SetMode'}=0
                ?OLE1{'Name'}='Платные услуги'
                ?OLE1{'Price'}=format(l:Opl,'@N_9'&g:RazdExcel&'2b')
                ?OLE1{'Quantity'}=1
                !?OLE1{'Department'}=1
                If Pos:Summa<0
                    If ?OLE1{'Return'}=0
                        ?OLE1{'TypeClose'}=0
                        If ?OLE1{'CloseCheck'}=0
                            Pos:flgCheck=1
                            Pos:NumberCheck=l:NomDocCheck
                            If Access:Pos.Update() = LEVEL:Benign
                                BRW1.ResetFromFile
                                ThisWindow.Reset(True)
                            end
                        ELSE
                            MESSAGE('Ошибка закрытия чека '&?OLE1{'ResultDescription'})
                        end
                    ELSE
                        MESSAGE('Ошибка регистрации возврата '&?OLE1{'ResultDescription'})
                    end
                ELSE
                    If ?OLE1{'Registration'}=0
                        !---- оплата ----------  
                        ?OLE1{'Summ'}=format(l:Opl,'@N_9'&g:RazdExcel&'2b')
                        ?OLE1{'TypeClose'}=0
                        If ?OLE1{'Payment'}=0
                            If ?OLE1{'CloseCheck'}=0
                                Pos:flgCheck=1
                                Pos:NumberCheck=l:NomDocCheck
                                If Access:Pos.Update() = LEVEL:Benign
                                    BRW1.ResetFromFile
                                    ThisWindow.Reset(True)
                                end
                            ELSE
                                MESSAGE('Ошибка закрытия чека '&?OLE1{'ResultDescription'})
                            end
                        ELSE
                            MESSAGE('Ошибка регистрации оплаты '&?OLE1{'ResultDescription'})
                        end
                    ELSE
                        MESSAGE('Ошибка регистрации продажи '&?OLE1{'ResultDescription'})
                    end
                end                   
            ELSE
                MESSAGE('Не удалось установить режим продажи '&?OLE1{'ResultDescription'})
            end
        ELSE
            message('Ошибка чтения статуса !'&?OLE1{'ResultDescription'})
        end
    ELSE
        message('Порт ККМ не удалось занять !')
    end
    ?OLE1{'DeviceEnabled'}=False
ELSE
    message('Чек уже выведен !')
endСпасибо. А объект OLE какой? Или он появляется после установки драйвера. Контора, которой это нужно, ещё не определилась с самим устройством, но вроде говорят драйвер для всех одинаковый. Да?Андрей писал(а):отправляю свой кусок кода печати чека и возврата
Тут же вопрос не размера поставки, а формы расчета. Если крупная закупка (типа опт) оплачивается наличными -