ТМС:Кассир
Материал из wiki.standart-n.ru
Версия от 12:56, 1 октября 2014; Aleksnick (обсуждение | вклад)
Содержание
Классы
TFR - класс для работы с ККМ ChequeList - список активных чеков ScriptRes - для вывода результата работы скрипта Barcode - для работы со ШК и диск. картами TErrFinder - класс для поиска ошибок в кассовых документах
Объекты
Global - объект-глобальное хранилище элементов Константы, использующиеся при вызове MsgBox
Прочие константы, переменные и подпрограммы
Application - объект Application
Пример:
Application.MessageBox('Текст', 'Заголовок', 0);
CurrFDB - ссылка на текущую базу данных (FIBPlus) CurrFRT - ссылка на постоянную читающую транзакцию текущей базы (FIBPlus) CurrDB - ссылка на текущую базу данных (IBX) CurrRT - ссылка на постоянную читающую транзакцию текущей базы (IBX) Base - ссылка на текущий датасет базы (TDataset)
Пример:
uses zkassa, DB; begin TagSetContent(fmMain.ewbFooter, 'partid_val', IntToStr(Base.FieldByName('part_id').AsInteger)); end;
UserID - ID текущего пользователя SessionID - ID текущей смены CreateFRT - функция создает читающую транзакцию (FIBPlus) CreateFWT - функция создает пишущую транзакцию (FIBPlus) CreateRT - функция создает читающую транзакцию (IBX) CreateWT - функция создает пишущую транзакцию (IBX)
Пример (FIBPlus):
uses zkassa, fibplus; var fit: TpFIBTransaction; begin fit := CreateFWT(CurrFDB); fit.StartTransaction; ... fit.Commit; fit.Free; end;
Пример (IBX):
uses zkassa; var it: TIBTransaction; begin it := CreateWT(CurrDB); it.StartTransaction; ... it.Commit; it.Free; end;
myFormatString - функция форматирования строки Параметры: sText - строка слева/центр sTextRight - строка справа sPattern - символ заполнения пространства м/у лев. и прав. строками iLen - длина выходной строки iFormatType - тип форматирования: 0 - по центру (только лев.стр.), 1 - по лев. и прав. краям bCutLeft - обрезать слева, если больше, чем требуемая длина (иначе справа)
Пример:
myFormatString('ДОБРО ПОЖАЛОВАТЬ', , '-', 20, 0, True); //результат: '--ДОБРО ПОЖАЛОВАТЬ--' myFormatString('123', '456', '.', 20, 1, True); //результат: '123..............456'
MsgBox - обертка над Application.MessageBox Пример: if MsgBox('Продолжить?', 'Расчет', MB_OKCANCEL + MB_ICONQUESTION) = ID_CANCEL then Exit;
SetLine - вывод информации на дисплей покупателя. При вызове данного метода все "отложенные"
выводы информации на дисплей удаляются
Параметры: iBaseID - ID предприятия, на чей дисплей выводить информацию (дисплей должен быть настроен) sLine1 - 1-я строка информации (если sLine1 = #9, информация в строку 1 дисплея не выводится) sLine2 - 2-я строка информации (если sLine2 = #9, информация в строку 2 дисплея не выводится) iTimeout - таймаут для создания "отложенного" вывода, после которого снова вызывается функция SetLine
с новыми значениями строк (например, для очистки табло). Если iTimeout = 0, повторного вызова не происходит
sLine21 - 1-я строка информации при повторном вызове sLine22 - 2-я строка информации при повторном вызове Пример: SetLine(0, 'Привет,', 'мир!', 5000, , ); //выводит сообщение, через 5 секунд очищает табло SetLine(0, , ); //очищает табло
SetLineDelayed - "отложенный" вывод информации на дисплей покупателя iBaseID - ID предприятия, на чей дисплей выводить информацию sLine1 - 1-я строка информации (если sLine1 = #9, информация в строку 1 дисплея не выводится) sLine2 - 2-я строка информации (если sLine2 = #9, информация в строку 2 дисплея не выводится) iTimeout - таймаут вывода информации на дисплей покупателя
KillAllTimers - удалить все "отложенные" выводы на дисплей покупателя
GetWeight - получить вес товара (при наличии весов) iPartID - ID товара Пример: MsgBox(Format('Вес товара = %.3f', [GetWeight(iPartID)]), 'Вес товара', 0);
TagGetContent - получить содержимое тега по ID wb - контрол WebBrowser (инфо о чеке - fmMain.ewbInfo, подстрочник - fmMain.ewbFooter) sTagID - ID тега Пример: MsgBox(TagGetContent(fmMain.ewbInfo, 'fr_total'), 'Содержимое fr_total', 0); //получить значение блока FR_TOTAL
TagSetContent - установить содержимое тега по ID wb - контрол WebBrowser (инфо о чеке - fmMain.ewbInfo, подстрочник - fmMain.ewbFooter) sTagID - ID тега sContent - новое содержимое тега Пример: TagSetContent(fmMain.ewbInfo, 'fr_total', 'Чеков: ' + IntToStr(FR_CountCheques)); //установить значение блока FR_TOTAL
TagGetAttribute - получить содержимое аттрибута тега по ID wb - контрол WebBrowser (инфо о чеке - fmMain.ewbInfo, подстрочник - fmMain.ewbFooter) sTagID - ID тега sAttr - имя аттрибута Пример: MsgBox(TagGetAttribute(fmMain.ewbInfo, '_pict', 'src'), 'Адрес картинки тега IMG', 0); //получить значение аттрибута SRC
TagSetAttribute - установить содержимое аттрибута тега по ID wb - контрол WebBrowser (инфо о чеке - fmMain.ewbInfo, подстрочник - fmMain.ewbFooter) sTagID - ID тега sAttr - имя аттрибута sContent - новое содержимое аттрибута Пример: TagSetAttribute(fmMain.ewbInfo, '_pict', 'src', 'c:\picts\pict_123.bmp'); //установить значение аттрибута SRC
!!! ------------------- !!! ПРИМЕЧАНИЕ: в функциях TagSetContent, TagSetAttribute можно использовать макроподстановки вида ::<макроимя>[:<формат>], где: макроимя - может быть именем любого поля текущего SQL-запроса остатков, например SNAME, PRICE и т.д. (регистр не важен) формат - форматная строка, аналог параметра Format функции Format в Delphi (без лидирующего символа %) Пример: возьмем пример из описания функции TagSetAttribute (см. чуть выше):
TagSetAttribute(fmMain.ewbInfo, '_pict', 'src', 'c:\picts\pict_123.bmp');
Если в папке 'c:\picts\' содержатся файлы с изображениями товаров, и имена файлов картинок содержат PART_ID товара, т.е. имя файла имеет вид 'pict_<PART_ID>.bmp', то данный пример можно переписать с использованием макроподстановок следующим образом:
TagSetAttribute(fmMain.ewbInfo, '_pict', 'src', 'c:\picts\pict_::PART_ID.bmp');
PS: Макроподстановки также можно использовать в значениях блоков в HTML-дизайнере (дерево блоков справа), либо напрямую в тесте HTML-скрипта !!! ------------------- !!!
TagVisible - установить видимость блока контрола WebBrowser wb - контрол WebBrowser sTagID - ID блока, у которого меняется видимость bVisible - признак видимости Пример: TagVisible(fmMain.ewbInfo, 'fr_model', False); //скрыть блок FR_MODEL (информация о модели ККМ)
SetDocsAgent - установить контрагента активной очереди чеков iAgentID - ID агента активной очереди чеков
BarcodeText - свойство для чтения, возвращающее значение введенного штрихкода
ПОМЕЧЕНО К УДАЛЕНИЮ, РЕКОМЕНДУЕТСЯ ВМЕСТО ЭТОГО ИСПОЛЬЗОВАТЬ КЛАСС Barcode
Пример: ShowMessage('Введен штрихкод: ' + BarcodeText);
DoReport - работа с отчетами (просмотр/редактирование/печать) iReportID - ID отчета sParam - доп.параметры отчета (макроподстановка) ReportMode - тип вывода отчета: rmView - просмотр, rmDesign - редактирование, rmPrint - печать sPrinter - имя принтера для печати ( - принтер по умолчанию) Пример: DoReport(12, 'compname=NICKY', rmPrint, '\\buhi\HP LaserJet5');
ManualDiscount - вызов формы выбора скидки/суммовой скидки IsRegistered - св-во, указывающее на наличие регистрации базы автоматизации
SendKey - посылает нажатие клавиши iKeyCode - код клавиши bCtrl - состояние клавиши Ctrl (True - нажата) bAlt - аналогично Alt bShift - аналогично Shift Пример: SendKey(VK_F5, False, True, False); //посылает нажатие сочетания Alt-F5
PayByCard - оплата банковской картой, возвращаемое значение: 0-ошибка, 1-успешно fSumm - сумма оплаты Пример: PayByCard(10.50); //провести списание по карте суммы 10.50
GetTrans - получить транзакцию для работы в ее рамках (нельзя стартовать, закрывать и откатывать такую транзакцию!)
ВНИМАНИЕ! Транзакции типа TpFIBTransaction, т.е. из состава компонентов FibPlus, а не IBX! Для работы требуется подключить модуть FIBPlus
iTransType - тип запрашиваемой транзакции Поддерживаемые типы транзакций: 0 (TRANS_CLOSECHEQUE) - транзакция при закрытии чека
Пример (после печати чека): uses zkassa, fibplus, classes, chequelist; var fiq: tpfibquery; begin fiq := tpfibquery.create(nil); fiq.Transaction := GetTrans(0); fiq.SQL.Text := 'update docs set device_num = трали-вали where id = ' + IntToStr(chequelist.Active.ID); fiq.ExecQuery; fiq.Free; end;
OpenDefByID - открыть отложенный чек по ID документа iDocID - ID документа
Add2Cheque - добавить позицию в чек по PartID iPartID - ID позиции fQuant - добавляемое количество
Пример: uses zkassa; var i: integer; begin for i := 0 to 10 do try Add2Cheque(127 + i, i + 1); except end; end;