ТМС:Кассир — различия между версиями
Материал из 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;