ТМС:Кассир — различия между версиями
Материал из wiki.standart-n.ru
Aleksnick (обсуждение | вклад) |
Aleksnick (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
[[ТМС:Кассир:Классы:TErrFinder |'''TErrFinder''' - класс для поиска ошибок в кассовых документах]] | [[ТМС:Кассир:Классы:TErrFinder |'''TErrFinder''' - класс для поиска ошибок в кассовых документах]] | ||
− | == | + | ==Объекты== |
[[ТМС:Кассир:Global |'''Global''' - объект-глобальное хранилище элементов]] | [[ТМС:Кассир:Global |'''Global''' - объект-глобальное хранилище элементов]] | ||
[[ТМС:Кассир:MsgBox |Константы, использующиеся при вызове MsgBox]] | [[ТМС:Кассир:MsgBox |Константы, использующиеся при вызове 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; |
Версия 12:56, 1 октября 2014
Содержание
Классы
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;