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

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
(Примеры ТМС)
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
==Классы==
 
==Классы==
   [[ТМС:Кассир:Классы:TFR        |'''TFR'''         - класс для работы с ККМ]]
+
   [[ТМС:Кассир:Классы:TFR        |'''TFR'''             - класс для работы с ККМ]]
   [[ТМС:Кассир:Классы:ChequeList  |'''ChequeList'''   - список активных чеков]]
+
   [[ТМС:Кассир:Классы:ChequeList  |'''ChequeList'''       - список активных чеков]]
   [[ТМС:Кассир:Классы:ScriptRes  |'''ScriptRes'''   - для вывода результата работы скрипта]]
+
   [[ТМС:Кассир:Классы:ScriptRes  |'''ScriptRes'''       - для вывода результата работы скрипта]]
   [[ТМС:Кассир:Классы:Barcode    |'''Barcode'''     - для работы со ШК и диск. картами]]
+
   [[ТМС:Кассир:Классы:Barcode    |'''Barcode'''         - для работы со ШК и диск. картами]]
   [[ТМС:Кассир:Классы:TErrFinder  |'''TErrFinder'''   - класс для поиска ошибок в кассовых документах]]
+
   [[ТМС:Кассир:Классы:TErrFinder  |'''TErrFinder'''       - класс для поиска ошибок в кассовых документах]]
 
+
==Объекты==
+
  [[ТМС:Кассир:Global            |'''Global''' - объект-глобальное хранилище элементов]]
+
  [[ТМС:Кассир:MsgBox            |Константы, использующиеся при вызове MsgBox]]
+
  
 
==Прочие константы, переменные и подпрограммы==
 
==Прочие константы, переменные и подпрограммы==
 +
  [[ТМС:Кассир:Global            |'''Global'''          - объект-глобальное хранилище элементов]]
 +
  [[ТМС:Кассир:Application        |'''Application''']]
 +
  [[ТМС:Кассир:MsgBox            |'''MsgBox'''          - обертка над Application.MessageBox]]
 +
  [[ТМС:Кассир:FB                |'''Работа с базой данных''']]
 +
  [[ТМС:Кассир:myFormatString    |'''myFormatString'''  - Функция форматирования строки]]
 +
  [[ТМС:Кассир:SetLine            |'''SetLine'''          - Функции для работы с дисплеем покупателя]]
 +
  [[ТМС:Кассир:GetWeight          |'''GetWeight'''        - Функции для работы с весами]]
 +
  [[ТМС:Кассир:Tag                |'''Работа с HTML окнами''']]
 +
  [[ТМС:Кассир:BarcodeText        |'''BarcodeText'''      - Функция для чтения ШК]]
 +
  [[ТМС:Кассир:DoReport          |'''DoReport'''        - Функция для работы с отчетами]]
 +
  [[ТМС:Кассир:Cheque            |'''Функции для работы с чеками''']]
 +
  [[ТМС:Кассир:ManualDiscount    |'''ManualDiscount'''  - вызов формы выбора скидки/суммовой скидки]]
 +
  [[ТМС:Кассир:PayByCard          |'''PayByCard'''        - оплата банковской картой]]
 +
  [[ТМС:Кассир:SendKey            |'''SendKey'''          - нажатие клавиши]]
 +
  [[ТМС:Кассир:IsRegistered      |'''IsRegistered'''    - проверка регистрации БД]]
  
  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;
+

Текущая версия на 13:59, 12 января 2018

Классы

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

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

 Global           - объект-глобальное хранилище элементов
 Application
 MsgBox           - обертка над Application.MessageBox
 Работа с базой данных
 myFormatString   - Функция форматирования строки
 SetLine          - Функции для работы с дисплеем покупателя
 GetWeight        - Функции для работы с весами
 Работа с HTML окнами
 BarcodeText      - Функция для чтения ШК
 DoReport         - Функция для работы с отчетами
 Функции для работы с чеками
 ManualDiscount   - вызов формы выбора скидки/суммовой скидки
 PayByCard        - оплата банковской картой
 SendKey          - нажатие клавиши
 IsRegistered     - проверка регистрации БД

Примеры ТМС

 Чтение/запись настроек кассира     - Посмотреть код
 Поддержка постоянно открытого окна отложенных чеков     - Посмотреть код