ТМС:Кассир — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
Строка 6: Строка 6:
 
   [[ТМС:Кассир:Классы:TErrFinder  |'''TErrFinder'''  - класс для поиска ошибок в кассовых документах]]
 
   [[ТМС:Кассир:Классы:TErrFinder  |'''TErrFinder'''  - класс для поиска ошибок в кассовых документах]]
  
==Объекты==
+
==Прочие константы, переменные и подпрограммы==
 
   [[ТМС:Кассир:Global            |'''Global''' - объект-глобальное хранилище элементов]]
 
   [[ТМС:Кассир:Global            |'''Global''' - объект-глобальное хранилище элементов]]
   [[ТМС:Кассир:MsgBox            |Константы, использующиеся при вызове MsgBox]]
+
   [[ТМС:Кассир:Application        |'''Application''']]
 
+
   [[ТМС:Кассир:MsgBox            |'''MsgBox''' - обертка над Application.MessageBox]]
==Прочие константы, переменные и подпрограммы==
+
   [[ТМС:Кассир:FB                |'''Работа с базой данных''']]
 
+
   [[ТМС:Кассир:myFormatString     |'''myFormatString''' - Функция форматирования строки]]
  Application - объект Application
+
   [[ТМС:Кассир:SetLine            |'''SetLine''' - Функции для работы с дисплеем покупателя]]
 
+
   [[ТМС:Кассир:GetWeight          |'''GetWeight''' - Функции для работы с весами]]
====Пример:====
+
   [[ТМС:Кассир:Tag                |'''Работа с HTML окнами''']]
  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 - установить контрагента активной очереди чеков
 
   SetDocsAgent - установить контрагента активной очереди чеков

Версия 13:53, 1 октября 2014

Классы

 TFR          - класс для работы с ККМ
 ChequeList   - список активных чеков
 ScriptRes    - для вывода результата работы скрипта
 Barcode      - для работы со ШК и диск. картами
 TErrFinder   - класс для поиска ошибок в кассовых документах

Прочие константы, переменные и подпрограммы

 Global - объект-глобальное хранилище элементов
 Application
 MsgBox - обертка над Application.MessageBox
 Работа с базой данных
 myFormatString - Функция форматирования строки
 SetLine - Функции для работы с дисплеем покупателя
 GetWeight - Функции для работы с весами
 Работа с HTML окнами


 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;