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

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
(undm)
 
(не показано 19 промежуточных версии 2 участников)
Строка 1: Строка 1:
==USES==
+
== Полезный функционал для написания ТМС и работы со справочниками ==
===unFrameCustomDict===
+
<pre>
===unMain===
+
//Основные uses для ТМС
===undm===
+
uses
 +
  Classes, Graphics, Controls, Forms, Dialogs, ComCtrls,
 +
  ToolWin, ImgList, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid,
 +
  DB, IBQuery, IBDatabase, unDM, DBTables, cfdxUtils, Menus,
 +
  Buttons, ExtCtrls, StdCtrls, cfSelectEdit, Forms, Dialogs, need, sysutils,
 +
  gb_table, Mask,  unFrameCustomDict, unMain,SysUtils,need,undmReports,unFrameWarebase,
 +
  Messages, ShellAPI,  cfUtils, System, undmdocs,  unFrameCustomDoc,
 +
  unFrameCustomDict, unMain, dxDBGrid, dxDBCtrl, cfSelectEdit,
 +
  unfrmContainer,db, ibquery, ibdatabase, menus, Classes, Graphics, Controls;
 +
</pre>
 +
<pre>
 +
//Базовый SQL запрос
 +
var
 +
    q_work: TIBquery;
 +
 +
//Создаем подключение
 +
q_work:=dm.TempQuery;
 +
try
 +
  //Выполнение действий
 +
finally
 +
  //закрываем и уничтожаем за собой
 +
  q_work.transaction.commit;
 +
  q_work.free;
 +
end;
 +
</pre>
 +
//Обновляем сетку
 +
gsender.qList.Refresh;
 +
 
 +
//Заменить значение текущего SQL справочника на нужное, используется динамического построения запросов
 +
gSender.SelectSQLText:='';
 +
//Измененное значение функцией gSender.SelectSQLText применятся коммандой
 +
gSender.ImmediateSelect;
 +
 
 +
//Получаем значение поля
 +
переменная:=gsender.qList.FieldByName('название поля').AsString (тип AsInteger AsFloat и т.п.);
 +
 
 +
//Ставим курсор на запись
 +
gsender.LocateByKey(tek_doc_id);
 +
 
 +
//Реинициализация активных документов
 +
frmManagerXP2.InitActiveDocs;
 +
 
 +
//Обновление текущего активного локумента
 +
dmDocs.ActiveDoc.RefreshData;
 +
 
 +
//Получить значение текущего пользователя
 +
frmManagerxp2.GetUserID;
 +
 
 +
//Запустить ТМС из справочника, gsender - для передачи значения вызова, например значение поля или объекта
 +
frmManagerXP2.RunTms(847,gsender);
 +
 
 +
//Выполнить событие на сетки, например на событие нажатие клавишь OnKeyPress
 +
gsender.PgbList.OnKeyPress:='название функции обработки';
 +
 
 +
//??? Установить текущий справочник с котрого идет вызов ??? (пока не уверен)
 +
gsender.SetDictPosRect;
 +
 
 +
<pre>
 +
//Вывести сообщение
 +
application.MessageBox(Text - string, Caption - string ,Type- код иконки и кнопок);
 +
Text - сообщение для пользователя
 +
Caption - Заголовок сообщения
 +
 
 +
Type:
 +
$00000010 - Иконка Ошибка и кнопка ОК
 +
$00000020 - Иконка Вопрос и кнопка ОК
 +
$00000030 - Иконка Внимание и кнопка ОК
 +
$00000040 - Иконка Ошибка и кнопка ОК
 +
 
 +
$00000001 - Кнопки Ок и Отмена
 +
$00000002 - Кнопки Прервать, Повтор и Пропустить
 +
$00000003 - Кнопки Да, Нет и Отмена
 +
$00000004 - Кнопки Да и Нет
 +
$00000005 - Кнопки Повтор и Отмена
 +
$00000006 - Кнопки Отмена, Повторить и Продолжить
 +
 
 +
Можно компоновать, например для вопроса
 +
$00000020+$00000004 - Иконка Вопрос + Кнопки Да и Нет
 +
 
 +
mr_res := application.MessageBox('Текст вопроса',' ',$00000004+$00000020);
 +
if mr_res<>6 then - если не нажата ДА
 +
exit;
 +
</pre> 
 +
 
 +
USES
 +
cfDB
 +
'''function MakeCreateTableQueryByFields(fields: TFields; tablename: string): string;'''
 +
'''function FieldTypeIsString(field: TField): boolean;'''
 +
'''function FieldTypeIsIntOrFloat(field: TField): boolean;'''
 +
'''function FieldTypeIsDateTime(field: TField): boolean;'''
 +
'''function FieldTypeIsBoolean(field: TField): boolean;'''
 +
'''function FieldTypeIsBlob(field: TField): boolean;'''
 +
'''function FieldValue2Txt(fld: TField; StringEscapeBy: string = '"'; MySQLReplace: boolean = false): string;'''
 +
'''function FieldValue2TxtB(sValue: string; StringEscapeBy: string = '"'; MySQLReplace: boolean = false): string;'''
 +
'''function FieldValue2TxtA(fld: TField): string;'''
 +
'''function FieldValue2TxtZ(Value: string; StringEscapeBy: string = '"'; MySQLReplace: boolean = false; ReplaceCLRF: string = #13#10): string;'''
 +
'''function GetIBWhere(fieldname, searchCondition: string; bAnd: boolean = true; insertUPPER: boolean = true): string;'''
 +
'''function cfADOFilter(fieldname, source: string): string;'''
 +
'''function GetDefaultValueByIBType(itype: integer): string;'''
 +
'''function ParseSelect4From(sqltext: string): string;'''
 +
'''function ParseSelect4Where(sqltext: string): string;'''
 +
'''function PrepareForFind(s: string): string; // обрезает окончания...'''
 +
'''procedure cfCSV2DBF(csvFileName, dbfFileName: string; createbeforesqltext: string = '');'''
 +
'''function inserttowhere(sqltext, clause: string): string;'''
 +
'''function EkranWhere(SQLText: string): string;'''
 +
'''function InsertWhere(const S: string; SQLText: string): string;'''
 +
'''function GetPosOfStatement(const SQLText, Statement: string; var NextPos: integer): integer;'''
 +
'''procedure ExportcfDataSet(dataset: TDataSet; stream: TStream; DateTimeCallBackProcedure: TDateTimeCallBackProcedure = nil);'''
 +
'''procedure ExportcfDataSetWithCallBack(dataset: TDataSet; stream: TStream; CallBack: TExportCallBackProcedure = nil; tag: integer = 0);'''
 +
'''function CheckWhereForNode(Node: TdxTreeListNode; WhereClause: string; PreparedFieldList: TStringList; ibQuery: TIBSQL): boolean;'''
 +
'''function PrepareFieldListForCheck(gb: TCustomdxDBTreeListControl; sqlText: string; PreparedFieldList: TStringList): string;'''
 +
'''function XReplace(S, OldPattern, NewPattern: string; chars: string = '{ ()=<>!|"}'): string;'''
 +
'''procedure cfAssignFields(Source, Dest: TDataSet; XFields: string = '');'''
 +
'''procedure cfAssignIBParams(Source, Dest: TIBQuery; var InsertText, UpdateText: string; XFields: string = '');'''
 +
'''procedure SyncParams(source:TParams; dest: TIBXSQLDA); overload;'''
 +
'''procedure SyncParams(source:TParams; dest: TParams); overload;'''
 +
'''procedure SyncParams(source:TParams; dest: TDataSet); overload;'''
 +
'''procedure cfAssignParamsValues(source:TParams; dest: TParams);'''
 +
'''procedure FieldValuesToParamValuesByNames(Source, Dest: TIBQuery; XFields: string = '');'''
 +
'''function FieldExists(ibdb: TIBDatabase; tablename, fieldname: string): boolean;'''
 +
'''procedure CreateAccessDatabase(FileName: string);'''
 +
'''function FieldTypeToStr(fieldtype: TFieldType): string;'''
 +
 
 +
cfFileUtils
 +
'''procedure GetFileListWithSubFolders_(sPath: string; sl: TStringList);'''
 +
Процедура заполняет sl списком файлов из заданного каталога по заданной маске, включая подкаталоги. Например sPath='C:\temp\*.dbf'
 +
 
 +
'''procedure GetFileListWithSubFolders(sPath: string; sl: TStringList);'''
 +
Процедура заполняет sl списком файлов из заданного каталога по заданной маске, включая подкаталоги. Например sPath='C:\temp\*.dbf'
 +
 
 +
'''procedure GetFileList(sPath: string; sl: TStrings; IncludePath: boolean = false; excludeext: boolean = false);'''
 +
Процедура заполняет sl списком имен файлов из заданного каталога по заданной маске. Если IncludePath = true, то в именах файлов будут присутствовать каталог.
 +
Например sPath='C:\temp\*.dbf'
 +
 
 +
'''procedure GetFileListEx(sPath: string; sl: TStringList);'''
 +
Процедура заполняет sl списком имен файлов и датой изменения файла из заданного каталога по заданной маске.
 +
Например sPath='C:\temp\*.dbf'
 +
 
 +
'''function GetUniqueFileName(Path: string; Delimiter: string = ''): string;'''
 +
'''function GetUniqueFileNameX(Path: string; Delimiter: string = ''): string;'''
 +
'''function CreateUniqueDir(Path: string; Delimiter: string = ''): string;'''
 +
'''function GetLastModFile(sPath: string): string;'''
 +
'''function FilesCountWithSubFolders_(sPath: string; bExitIFinded: boolean = false): integer;'''
 +
'''function FilesCount(sPath: string): integer;'''
 +
'''procedure DelFiles(sPath: string; DelDirs: boolean = false; RaiseOnError: boolean = true);'''
 +
'''procedure DelFileList(sl: TStrings);'''
 +
'''function GetFileSize_(namefile: string): Integer;'''
 +
'''function GetFileDateTime(FileName: string): TDateTime;'''
 +
'''function GetCreateFileDateTime(filename: string): TDateTime;'''
 +
'''procedure CreateDirIfNotExists(path: string);'''
 +
'''function GetFirstFile(sPath: string; var sResult: string; IncludePath: boolean = false): boolean;'''
 +
'''function GetFilesearchRec(namefile: string):TSearchRec;'''
 +
'''function FileExistsInSubDirs(FileName: string; Directory: string; var path: string): boolean;'''
 +
'''procedure GZFile(res, dest: string);'''
 +
'''procedure UnGZFile(res, dest: string);'''
 +
'''function SelectDir(handle: THandle; var dir: string; title: string = 'Выберите папку'; StatusText: string = 'Укажите папку'): boolean;'''
 +
'''procedure WriteLog(msg: string; appfilename: string);'''
 +
'''function cfGetTempPath: string;'''
 +
'''function GetFileVersionMajorMinor(FileName: string): double;'''
 +
'''function GetFileVersionCF(FileName: string): string;'''
 +
'''function GetFileVersionMajorMinorText(FileName: string): string;'''
 +
'''function cfCleanFileName(FileName: string; replacestr: string = '_'): string;'''
 +
'''function CheckFileName(FileName: string): boolean;'''
 +
'''function TestDir(ADir: string; testfilename: string = 'try.tst'): boolean;'''
 +
'''function GetSpecialPath(CSIDL: word): string;'''
 +
'''function cfGetSystemDrive: string;'''
 +
'''function FirstMaskMatchedFile(mask: string): string;'''
 +
'''function GetDriveList(coldelimiter: string = #9; rowdelimiter: string = #13#10): string;'''
 +
'''function GetFolderContent(path: string; coldelimiter: string = #9; rowdelimiter: string = #13#10): string;'''
 +
'''function GetFileAttrsLine(path: string; coldelimiter: string = #9): string;'''
 +
'''Function SetFileDate(Const FileName : String; Const FileDate : TDateTime): Boolean; overload;'''
 +
'''Function SetFileDate(Const FileName : String; Const FileDate : integer): Boolean; overload;'''
 +
'''function GetPrevFolder(path: string): string;'''
 +
'''procedure SetRegisteredIcons(ilSmall, ilLarge: TImageList; mask: string = '*.*');'''
 +
'''function GetIconIndex(ext: string): integer;'''
 +
'''function LoadSystemIcons(SmallIcons: Boolean; var il: TImageList): Boolean;'''
 +
'''function FileIconSysIdxOffline( const Path: String ): Integer;'''
 +
'''function GetPrettyFileSize(v: integer): string;'''
 +
'''procedure GetSubDirectories(const directory : string; list : TStringList) ;'''
 +
 
 +
cfTMSIDERegAdvTMSPallete
 +
cfTMSIDERegcfPallete
 +
cfTMSIDERegdxPallete
 +
cfTMSIDERegEmbeddedWBPallete
 +
cfTMSIDERegGBPallete
 +
cfTMSIDERegIBPallete
 +
сfTMSIDERegStandartPalletes
 +
dxCntner
 +
dxDBCtrl
 +
dxDBGrid
 +
dxDBTL
 +
dxExEdtr
 +
dxTL
 +
dxTLClms
 +
IDERegAdoPalette
 +
IDERegDBPalette
 +
NEED
 +
UnDeclare
 +
UnDM
 
  '''function InitMGN: boolean;'''
 
  '''function InitMGN: boolean;'''
 
  Инициализация глобального справочника
 
  Инициализация глобального справочника
Строка 123: Строка 321:
  
 
  '''procedure CancelgbCtrl(gb: TWinControl);'''
 
  '''procedure CancelgbCtrl(gb: TWinControl);'''
 +
После запуска данной процедуры клавиша Ctrl не будет очищать поиск.
  
 
  '''function IsAdmin: boolean;'''
 
  '''function IsAdmin: boolean;'''
 +
Если код текущего пользователя 0 или у текущего пользователя есть права администратора, то возвращает Истину, иначе ложь
  
 
  '''function IsManager: boolean;'''
 
  '''function IsManager: boolean;'''
 +
Если код текущего пользователя 0 или у текущего пользователя есть права менеджера или администратора, то возвращает Истину, иначе ложь
  
 
  '''procedure DoDates(ANode: TdxTreeListNode; fieldname: string; var AText: string; var AColor: TColor; AFont: TFont);'''
 
  '''procedure DoDates(ANode: TdxTreeListNode; fieldname: string; var AText: string; var AColor: TColor; AFont: TFont);'''
 +
Применяет раскраску ячеек в колонках срок годности, дата окончания, дата вставки, дата обновления на основании настроек программы для интерактивной подкраски.
  
 
  '''procedure CheckSession;'''
 
  '''procedure CheckSession;'''
 +
Проверяет наличие открытой активной сессии для текущего пользователя и программы, если такой, нет - завершается работа программы.
  
 
  '''function GetCash: double;'''
 
  '''function GetCash: double;'''
 +
Обновление суммы наличности в кассе в журнале документов кассы.
  
 
  '''procedure CompleteCurParams(filename: string);'''
 
  '''procedure CompleteCurParams(filename: string);'''
 +
Загрузить профиль интерфейса из файла (*.asni) USERS.USERDATA
  
 
  '''function GetDocFrameById(id: int64): TFrameCustomDoc;'''
 
  '''function GetDocFrameById(id: int64): TFrameCustomDoc;'''
 +
Возвращает фрейм (форму) активного документа по коду документа.
  
 
  '''procedure DrawImage_Folder(il: TImageList; ImageIndex: integer; AText: string; ACanvas: TCanvas; ARect: TRect; AColor: TColor; AFont: TFont);'''
 
  '''procedure DrawImage_Folder(il: TImageList; ImageIndex: integer; AText: string; ACanvas: TCanvas; ARect: TRect; AColor: TColor; AFont: TFont);'''
 +
Прорисовать картинку с кодом ImageIndex из il у ARect с надписью AText
  
 
  '''procedure ToolButtonDropDownMenuClick(btn: TToolButton);'''
 
  '''procedure ToolButtonDropDownMenuClick(btn: TToolButton);'''
 +
Пустая процедура, ничего не делает
  
 
  '''procedure ExecScript(group_id: int64; program_data: TStringList = nil); overload;'''
 
  '''procedure ExecScript(group_id: int64; program_data: TStringList = nil); overload;'''
 +
Запустить скрипт (подпрограммы) на выполнение с кодом group_id, где program_data входящие параметры, доступные в самом скрипте.
  
 
  '''procedure ExecScript(group_id: int64; program_data: TStringList; Sender: TObject); overload;'''
 
  '''procedure ExecScript(group_id: int64; program_data: TStringList; Sender: TObject); overload;'''
 +
Запустить скрипт (подпрограммы) на выполнение с кодом group_id, где program_data входящие параметры, доступные в самом скрипте.
  
 
  '''procedure ExecScript(PartGroup: TPartGroup; program_data: TStringList; Sender: TObject); overload;'''
 
  '''procedure ExecScript(PartGroup: TPartGroup; program_data: TStringList; Sender: TObject); overload;'''
 +
Запустить скрипт (подпрограммы) на выполнение PartGroup, где program_data входящие параметры, доступные в самом скрипте.
  
 
  '''procedure ExecScript(group_sid: string; program_data: TStringList; Sender: TObject); overload;'''
 
  '''procedure ExecScript(group_sid: string; program_data: TStringList; Sender: TObject); overload;'''
 +
Запустить скрипт (подпрограммы) на выполнение с sid=group_sid, где program_data входящие параметры, доступные в самом скрипте.
  
 
  '''procedure InitScriptsMenu(MenuItems: TMenuItem);'''
 
  '''procedure InitScriptsMenu(MenuItems: TMenuItem);'''
 +
Инициализация меню подпрограмм. То, что будет выходить по кнопке "Выполнить": список скриптов, список TMS скриптов, "Обновить список подпрограмм"
  
 
  '''function InitScripts_AddChilds_recur(ParentMI: TMenuItem): boolean;'''
 
  '''function InitScripts_AddChilds_recur(ParentMI: TMenuItem): boolean;'''
 +
Инициализация подменю подпрограмм
  
 
  '''procedure UpdKritK(name_id: string; value: integer);'''
 
  '''procedure UpdKritK(name_id: string; value: integer);'''
 
+
Установить критическое количество (минимальный остаток) для указанного наименования. update vals set intvalue=:value where id=:name_id
 +
 
  '''function EditImageList(id: integer): boolean;'''
 
  '''function EditImageList(id: integer): boolean;'''
 +
Открыть окно с  выбором иконки. При изменении содержимого набора картинок, данные пере пишутся в базу.
  
 
  '''procedure SetInitParams;'''
 
  '''procedure SetInitParams;'''
 +
Устанавливает значения параметров, доступных в программе на протяжении всей сессии.
 +
После знака равенства указаны значения по умолчанию,в  случае отсутствия параметра в таблице PARAMS
 +
  PARAMS.PARAMS_FORMSPART='forms'
 +
  PARAMS.PARAMS_ENAKLBACKPATH='enakl\enakl_back'
 +
  PARAMS.PARAMS_ENAKLPATH='enakl\enakl_ok'
 +
  PARAMS.PATH_PICTS='picts'
 +
  PARAMS.PATH_ENAKL_CORRECTQUANT_MASK='enakl\enakls\*.dbf'
 +
  PARAMS.PATH_ENAKL_RASHOD_MASK='enakl\enakls\d*.dbf'
 +
  PARAMS.PATH_ENAKL_PRIHOD_MASK='enakl\enakls\*.dbf'
  
 
  '''function InitScales: boolean;'''
 
  '''function InitScales: boolean;'''
 +
Инициализация электронных весов в менеджере, работает если PARAMS.INIT_SCALES=1
  
 
  '''function InitMgnCustomDicts: boolean;'''
 
  '''function InitMgnCustomDicts: boolean;'''
 +
Инициализация внешнего справочника или глобального справочника при редактировании наименования.
 +
Визуально находится справа от основного справочника выбора наименования.
 +
В список внешних справочников попадают все справочники из WDICTS со status=0
  
 
  '''procedure InitDataSet(var IBQuery:TIBQuery);'''
 
  '''procedure InitDataSet(var IBQuery:TIBQuery);'''
 +
Создает IBQuery подключенного к текущей базе данных с активной транзакцией.
  
 
  '''function GetStringFromClipboard: WideString;'''
 
  '''function GetStringFromClipboard: WideString;'''
 +
Возвращает строку. находящуюся в буфере обмена.
  
 
  '''procedure RefreshGrid(Grid: TdxDBGrid; UniqueField: String);'''
 
  '''procedure RefreshGrid(Grid: TdxDBGrid; UniqueField: String);'''
 +
Обновляет все содержимое сетки TdxDBGrid. UniqueField - ключ сетки.
  
 
  '''procedure CustomParamsInit;'''
 
  '''procedure CustomParamsInit;'''
 +
Инициализация параметров в текущей сессии:
 +
PARAMS.ACTIVE_DOC_HIGHLIGHT
 +
PARAMS.NAMES_FIRST_UP
 +
PARAMS.HIDE_MINUS
 +
PARAMS.PRICE_EDIT_ACTION
 +
PARAMS.BCODE_EDITOR
 +
PARAMS.ALLOW_RASHOD_NOPARTID
 +
PARAMS.TREE_LIST_VIEW
 +
PARAMS.AGENTS_DICT_MODE
 +
PARAMS.MAKE_ENABLE
 +
PARAMS.STRING_VAL_FIELDS
 +
PARAMS.ENAKL_NUM_MODE
 +
PARAMS.AUTO_GROUP_FIELDS
 +
PARAMS.MAKETYPES
 +
PARAMS.STYLE
 +
PARAMS.GEN_BARCODE
 +
PARAMS.ACTION_PRIHOD
 +
PARAMS.ACTION_RASHOD
 +
PARAMS.COMMITDATE
 +
PARAMS.EDIT_SEARCH_FIELDS
 +
PARAMS.PARAMS_EMAIL
 +
PARAMS.EMAIL
 +
PARAMS.PARAMS_SMTP
 +
PARAMS.PARAMS_PORT
 +
PARAMS.PARAMS_PSW
 +
PARAMS.PARAMS_TEMP_PATH
 +
PARAMS.PARAMS_AUTOTLS
 +
PARAMS.PARAMS_FULLSSL
 +
PARAMS.ORG_NAME_NAKL
 +
PARAMS.SEND_METHOD
 +
PARAMS.ELNAKLDIALOG
 +
PARAMS.ARCHIVE_AGENTS_LIMIT
 +
PARAMS.INDEX_CHECK
 +
PARAMS.SHOW_OBSOLETE
 +
PARAMS.GET_HISTORY
 +
PARAMS.MAKE_STATES
 +
PARAMS.OZ_CONNSTR
 +
PARAMS.OZ_PATH
 +
PARAMS.ELNAKLS_UPDATE
 +
PARAMS.ACTIVEDOC_PRINT_METHOD
 +
PARAMS.ORDER_VIEW
 +
PARAMS.ORDER_SETTINGS
 +
PARAMS.GDB_CONNSTR
 +
PARAMS.USE_AUTORASHOD_SCRIPTS
 +
PARAMS.AUTONAC
 +
PARAMS.AUTORASHOD_METHOD
  
 
  '''procedure CustomDictsInit;'''
 
  '''procedure CustomDictsInit;'''
 +
Добавляет в меню справочники - дополнительные возможности список SP$WDISTS где status=0
 +
Добавляет в основном окне закладки со справочниками SP$WDISTS где status=2
  
 
  '''procedure ShowSplash;'''
 
  '''procedure ShowSplash;'''
 +
пустая процедура, ничего не делает.
  
 
  '''procedure InitPrinters;'''
 
  '''procedure InitPrinters;'''
 +
В поле param_type_data таблицы PARAMS в строке с кодом -43 (PARAm_ID='DEF_PRINTER') записывается список принтеров из системы
  
 
  '''function PrepareForFind(s: string): string;'''
 
  '''function PrepareForFind(s: string): string;'''
 +
Подготавливает строку s к поиску. Из строки s вырезаются все значения из таблицы NAME_RULES.
 +
Если type=0, вырезать все значения
 +
Если type=1, вырезать значения слева
 +
Если type=2, вырезать значения справа
  
 
  '''function IsDigit(s: char): boolean;'''
 
  '''function IsDigit(s: char): boolean;'''
 +
Возвращает Истина, если s является числом, Ложь - иначе.
  
 
  '''function RemoveLeft(s, val: string): string;'''
 
  '''function RemoveLeft(s, val: string): string;'''
 +
Подготавливает строку к поиску, обрезая слева все цифры, находящиеся до val
  
 
  '''function RemoveRight(s, val: string): string;'''
 
  '''function RemoveRight(s, val: string): string;'''
 +
Подготавливает строку к поиску, обрезая справа все цифры, находящиеся от val
  
 
  '''function IsReg: boolean;'''
 
  '''function IsReg: boolean;'''
 +
Возвращает Истина если программа зарегистрирована, Ложь - иначе
  
 
  '''function ConvertFSelect(svalue: string): string;'''
 
  '''function ConvertFSelect(svalue: string): string;'''
 +
Преобразует строку svalue (типа selected_ids ' 1  2  3  4 ') к виду '1,2,3,4' для последующего использования в зпросе
  
 
  '''procedure bLocate(qD: TIBQuery; UniqueField: String; id: Variant);'''
 
  '''procedure bLocate(qD: TIBQuery; UniqueField: String; id: Variant);'''
 +
Позиционирует запись в запросе qD по значению id в поле UniqueField
  
 
  '''function CreatePreviewFile(pict_id: int64): boolean;'''
 
  '''function CreatePreviewFile(pict_id: int64): boolean;'''
 +
Выгружает картинку предварительного просмотра из поля PREVIEW таблицы
  
 
  '''procedure UpdateUserMMBSH;'''
 
  '''procedure UpdateUserMMBSH;'''
 +
Для текущей сессии заполняет значение mmbsh по grouptabele='USERS'и текущему пользователю
 +
Не используется в ТМС
  
 
  '''function GetGoodNameID(sname: string): int64;'''
 
  '''function GetGoodNameID(sname: string): int64;'''
 +
При подключенном глобальном справочнике возвращает код позиции приведенного наименования в глобальном прайсе по sname
  
 
  '''function UserParamsByID(UserID: integer): TcfZip;'''
 
  '''function UserParamsByID(UserID: integer): TcfZip;'''
 +
Возвращает профиль у пользователя с кодом UserID
  
 
  '''function CopyGridParams(gb: TCustomdxDBTreeListControl; gbName, gbFileName: String; LoadAll: integer = 0): boolean;'''
 
  '''function CopyGridParams(gb: TCustomdxDBTreeListControl; gbName, gbFileName: String; LoadAll: integer = 0): boolean;'''
 +
Вызывается операция копирования сетки у пользователя для текущего пользователя.
  
 
  '''function GetGoodName(svalue: string): string;'''
 
  '''function GetGoodName(svalue: string): string;'''
 +
При подключенном глобальном справочнике возвращает приведенное наименование из глобального прайса по sname
  
 
  '''procedure CheckFields;'''
 
  '''procedure CheckFields;'''
 +
Проверяет наличие колонки doc_pay_date в таблице docs, если ее нет, то создает
 +
Проверяет наличие колонки credit_depth в таблице agents, если ее нет, то создает
  
 
  '''procedure InitDocArchiveView;'''
 
  '''procedure InitDocArchiveView;'''
 +
Инициализация журнала документов
  
 
  '''procedure CreateTrayIcon(n: Integer);'''
 
  '''procedure CreateTrayIcon(n: Integer);'''
 +
Создается значок менеджера и размещается в области уведомлений (трей)
  
 
  '''procedure DeleteTrayIcon(n: Integer);'''
 
  '''procedure DeleteTrayIcon(n: Integer);'''
 +
Удаляется значок менеджера из области уведомлений (трей)
  
 
  '''procedure IconRepaint(index: integer; cp: string);'''
 
  '''procedure IconRepaint(index: integer; cp: string);'''
 +
Обновление отображения значка менеджера в области уведомлений (трей)
  
 
  '''function GetTmsParams: String;'''
 
  '''function GetTmsParams: String;'''
 +
передача параметров в тмс
 +
текст структурированный в stringlist
  
 
  '''procedure CheckIndices;'''
 
  '''procedure CheckIndices;'''
 +
Процедура проверки активности индекса WARES_IDX1 для WARES
 +
В случае отсутствия запускается хранимая процедура UPDPR_REPARWARES для исправления WARES.
 +
Делает индекс активным.
  
 
  '''Procedure FillPartAttributes;'''
 
  '''Procedure FillPartAttributes;'''
 +
Инициализирует список полей, заполняемых через атрибуты
  
 
  '''procedure FreeEvent(id: string = '');'''
 
  '''procedure FreeEvent(id: string = '');'''
 +
Освобождение всех событий
  
 
  '''procedure RefreshMacroParams;'''
 
  '''procedure RefreshMacroParams;'''
 +
Инициализация макро-параметров. Определяются в таблице SP$PARAMS. В менеджере не используется.
  
===cfSelectEdit===
+
unDmDocs
===need===
+
UndmReports
===cfdxUtils===
+
UnFrameAgents
 +
UnFrameCustomDict
 +
UnFrameCustomDoc
 +
UnFrameCustomParams
 +
UnFrameDocArchive
 +
UnFrameDocContainer
 +
UnFrameMake
 +
UnFrameMoney
 +
UnFramePrihodDoc
 +
UnFramePrihodDocTreb
 +
UnFrameUsers
 +
UnFrameWareBase
 +
UnfrmContainer
 +
UnfrmDocManager
 +
UnfrmGetCustomValue
 +
UnfrmHint
 +
UnfrmNotice
 +
UnfrmReg
 +
unMain
 +
UnMain
 +
UnViewUtils
 +
unWindows
 +
XmlDoc

Текущая версия на 13:08, 19 марта 2020

Полезный функционал для написания ТМС и работы со справочниками

//Основные uses для ТМС
uses
  Classes, Graphics, Controls, Forms, Dialogs, ComCtrls,
  ToolWin, ImgList, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid,
  DB, IBQuery, IBDatabase, unDM, DBTables, cfdxUtils, Menus,
   Buttons, ExtCtrls, StdCtrls, cfSelectEdit, Forms, Dialogs, need, sysutils,
  gb_table, Mask,  unFrameCustomDict, unMain,SysUtils,need,undmReports,unFrameWarebase,
  Messages, ShellAPI,  cfUtils, System, undmdocs,  unFrameCustomDoc,
  unFrameCustomDict, unMain, dxDBGrid, dxDBCtrl, cfSelectEdit,
  unfrmContainer,db, ibquery, ibdatabase, menus, Classes, Graphics, Controls;
 //Базовый SQL запрос
 var
    q_work: TIBquery;
	
 //Создаем подключение
 q_work:=dm.TempQuery; 
 try
  //Выполнение действий
 finally
   //закрываем и уничтожаем за собой
   q_work.transaction.commit;
   q_work.free; 
 end;
//Обновляем сетку
gsender.qList.Refresh;
//Заменить значение текущего SQL справочника на нужное, используется динамического построения запросов 
gSender.SelectSQLText:=;
//Измененное значение функцией gSender.SelectSQLText применятся коммандой
gSender.ImmediateSelect;
//Получаем значение поля
переменная:=gsender.qList.FieldByName('название поля').AsString (тип AsInteger AsFloat и т.п.);
  
//Ставим курсор на запись
gsender.LocateByKey(tek_doc_id);
  
//Реинициализация активных документов
frmManagerXP2.InitActiveDocs;
//Обновление текущего активного локумента
dmDocs.ActiveDoc.RefreshData;
//Получить значение текущего пользователя
frmManagerxp2.GetUserID;
//Запустить ТМС из справочника, gsender - для передачи значения вызова, например значение поля или объекта 
frmManagerXP2.RunTms(847,gsender);
//Выполнить событие на сетки, например на событие нажатие клавишь OnKeyPress
gsender.PgbList.OnKeyPress:='название функции обработки';
//??? Установить текущий справочник с котрого идет вызов ??? (пока не уверен)
gsender.SetDictPosRect;
//Вывести сообщение
application.MessageBox(Text - string, Caption - string ,Type- код иконки и кнопок); 
Text - сообщение для пользователя
Caption - Заголовок сообщения
  
Type:
 $00000010 - Иконка Ошибка и кнопка ОК
 $00000020 - Иконка Вопрос и кнопка ОК
 $00000030 - Иконка Внимание и кнопка ОК
 $00000040 - Иконка Ошибка и кнопка ОК

 $00000001 - Кнопки Ок и Отмена
 $00000002 - Кнопки Прервать, Повтор и Пропустить
 $00000003 - Кнопки Да, Нет и Отмена
 $00000004 - Кнопки Да и Нет
 $00000005 - Кнопки Повтор и Отмена
 $00000006 - Кнопки Отмена, Повторить и Продолжить

 Можно компоновать, например для вопроса
 $00000020+$00000004 - Иконка Вопрос + Кнопки Да и Нет

 mr_res := application.MessageBox('Текст вопроса',' ',$00000004+$00000020);
 if mr_res<>6 then - если не нажата ДА
 exit;

USES cfDB

function MakeCreateTableQueryByFields(fields: TFields; tablename: string): string;
function FieldTypeIsString(field: TField): boolean;
function FieldTypeIsIntOrFloat(field: TField): boolean;
function FieldTypeIsDateTime(field: TField): boolean;
function FieldTypeIsBoolean(field: TField): boolean;
function FieldTypeIsBlob(field: TField): boolean;
function FieldValue2Txt(fld: TField; StringEscapeBy: string = '"'; MySQLReplace: boolean = false): string;
function FieldValue2TxtB(sValue: string; StringEscapeBy: string = '"'; MySQLReplace: boolean = false): string;
function FieldValue2TxtA(fld: TField): string;
function FieldValue2TxtZ(Value: string; StringEscapeBy: string = '"'; MySQLReplace: boolean = false; ReplaceCLRF: string = #13#10): string;
function GetIBWhere(fieldname, searchCondition: string; bAnd: boolean = true; insertUPPER: boolean = true): string;
function cfADOFilter(fieldname, source: string): string;
function GetDefaultValueByIBType(itype: integer): string;
function ParseSelect4From(sqltext: string): string;
function ParseSelect4Where(sqltext: string): string;
function PrepareForFind(s: string): string; // обрезает окончания...
procedure cfCSV2DBF(csvFileName, dbfFileName: string; createbeforesqltext: string = );
function inserttowhere(sqltext, clause: string): string;
function EkranWhere(SQLText: string): string;
function InsertWhere(const S: string; SQLText: string): string;
function GetPosOfStatement(const SQLText, Statement: string; var NextPos: integer): integer;
procedure ExportcfDataSet(dataset: TDataSet; stream: TStream; DateTimeCallBackProcedure: TDateTimeCallBackProcedure = nil);
procedure ExportcfDataSetWithCallBack(dataset: TDataSet; stream: TStream; CallBack: TExportCallBackProcedure = nil; tag: integer = 0);
function CheckWhereForNode(Node: TdxTreeListNode; WhereClause: string; PreparedFieldList: TStringList; ibQuery: TIBSQL): boolean;
function PrepareFieldListForCheck(gb: TCustomdxDBTreeListControl; sqlText: string; PreparedFieldList: TStringList): string;
function XReplace(S, OldPattern, NewPattern: string; chars: string = '{ ()=<>!|"}'): string;
procedure cfAssignFields(Source, Dest: TDataSet; XFields: string = );
procedure cfAssignIBParams(Source, Dest: TIBQuery; var InsertText, UpdateText: string; XFields: string = );
procedure SyncParams(source:TParams; dest: TIBXSQLDA); overload;
procedure SyncParams(source:TParams; dest: TParams); overload;
procedure SyncParams(source:TParams; dest: TDataSet); overload;
procedure cfAssignParamsValues(source:TParams; dest: TParams);
procedure FieldValuesToParamValuesByNames(Source, Dest: TIBQuery; XFields: string = );
function FieldExists(ibdb: TIBDatabase; tablename, fieldname: string): boolean;
procedure CreateAccessDatabase(FileName: string);
function FieldTypeToStr(fieldtype: TFieldType): string;

cfFileUtils

procedure GetFileListWithSubFolders_(sPath: string; sl: TStringList);
Процедура заполняет sl списком файлов из заданного каталога по заданной маске, включая подкаталоги. Например sPath='C:\temp\*.dbf'
procedure GetFileListWithSubFolders(sPath: string; sl: TStringList);
Процедура заполняет sl списком файлов из заданного каталога по заданной маске, включая подкаталоги. Например sPath='C:\temp\*.dbf'
procedure GetFileList(sPath: string; sl: TStrings; IncludePath: boolean = false; excludeext: boolean = false);
Процедура заполняет sl списком имен файлов из заданного каталога по заданной маске. Если IncludePath = true, то в именах файлов будут присутствовать каталог.
Например sPath='C:\temp\*.dbf'
procedure GetFileListEx(sPath: string; sl: TStringList);
Процедура заполняет sl списком имен файлов и датой изменения файла из заданного каталога по заданной маске.
Например sPath='C:\temp\*.dbf'
function GetUniqueFileName(Path: string; Delimiter: string = ): string;
function GetUniqueFileNameX(Path: string; Delimiter: string = ): string;
function CreateUniqueDir(Path: string; Delimiter: string = ): string;
function GetLastModFile(sPath: string): string;
function FilesCountWithSubFolders_(sPath: string; bExitIFinded: boolean = false): integer;
function FilesCount(sPath: string): integer;
procedure DelFiles(sPath: string; DelDirs: boolean = false; RaiseOnError: boolean = true);
procedure DelFileList(sl: TStrings);
function GetFileSize_(namefile: string): Integer;
function GetFileDateTime(FileName: string): TDateTime;
function GetCreateFileDateTime(filename: string): TDateTime;
procedure CreateDirIfNotExists(path: string);
function GetFirstFile(sPath: string; var sResult: string; IncludePath: boolean = false): boolean;
function GetFilesearchRec(namefile: string):TSearchRec;
function FileExistsInSubDirs(FileName: string; Directory: string; var path: string): boolean;
procedure GZFile(res, dest: string);
procedure UnGZFile(res, dest: string);
function SelectDir(handle: THandle; var dir: string; title: string = 'Выберите папку'; StatusText: string = 'Укажите папку'): boolean;
procedure WriteLog(msg: string; appfilename: string);
function cfGetTempPath: string;
function GetFileVersionMajorMinor(FileName: string): double;
function GetFileVersionCF(FileName: string): string;
function GetFileVersionMajorMinorText(FileName: string): string;
function cfCleanFileName(FileName: string; replacestr: string = '_'): string;
function CheckFileName(FileName: string): boolean;
function TestDir(ADir: string; testfilename: string = 'try.tst'): boolean;
function GetSpecialPath(CSIDL: word): string;
function cfGetSystemDrive: string;
function FirstMaskMatchedFile(mask: string): string;
function GetDriveList(coldelimiter: string = #9; rowdelimiter: string = #13#10): string;
function GetFolderContent(path: string; coldelimiter: string = #9; rowdelimiter: string = #13#10): string;
function GetFileAttrsLine(path: string; coldelimiter: string = #9): string;
Function SetFileDate(Const FileName : String; Const FileDate : TDateTime): Boolean; overload;
Function SetFileDate(Const FileName : String; Const FileDate : integer): Boolean; overload;
function GetPrevFolder(path: string): string;
procedure SetRegisteredIcons(ilSmall, ilLarge: TImageList; mask: string = '*.*');
function GetIconIndex(ext: string): integer;
function LoadSystemIcons(SmallIcons: Boolean; var il: TImageList): Boolean;
function FileIconSysIdxOffline( const Path: String ): Integer;
function GetPrettyFileSize(v: integer): string;
procedure GetSubDirectories(const directory : string; list : TStringList) ;

cfTMSIDERegAdvTMSPallete cfTMSIDERegcfPallete cfTMSIDERegdxPallete cfTMSIDERegEmbeddedWBPallete cfTMSIDERegGBPallete cfTMSIDERegIBPallete сfTMSIDERegStandartPalletes dxCntner dxDBCtrl dxDBGrid dxDBTL dxExEdtr dxTL dxTLClms IDERegAdoPalette IDERegDBPalette NEED UnDeclare UnDM

function InitMGN: boolean;
Инициализация глобального справочника
function ExtractFileNameWithoutExt(const FileName: string): string;
Возвращает имя файла без расширений и каталога
procedure LoadSettings;
Загрузка настроек интеллектуальной заявки ZAutoXP
procedure DoLocalSettings(bRead: boolean);
Установка локальных параметров. Например, параметры подключения к интеллектуальной заявке, сведения о регистрации программы, параметры подключения к интернету и прочее.
procedure SendInfoM;
Процедура собирает информацию о клиенте: параметры организации, имя компьютера, адрес организации о отправляет разработчикам.  
procedure InitGDB;
Инициализация подключения к базе Общего Заказа. PARAMS.PARAM_ID='GDB_CONNSTR'
procedure InitOzDb;
Инициализация подключения к базе Общего Заказа. PARAMS.PARAM_ID='OZ_CONNSTR'
function GetFolder: string;
Возвращает код выбранной группы (PARTS.FOLDERS). 0 - если не выбрано.
procedure SelectsCheck;
 Проверяет наличие всех необходимых режимов в SELECTS, если нет, то добавляет. Проверяемые коды: -14, -10, -11, -12, -13
function TempQuery(trn: TIBTransaction = nil; db: TIBDatabase = nil): TIBQuery;
Возвращает созданный TIBQuery, подключенный к текущей базе данных.
function Init(var sMsg: string): boolean;
Инициализация программы Менеджер
function InitAfter(var sMsg: string): boolean;
Выполняет следующие шаги запуска менеджера:
-Проверка набора системных запросов
-Инициализация менеджера форм
-Инициализация меню отчетов
-Инициализация Внешних справочников
-Инициализация клиента Интеллектуальной заявки
-Инициализация подпрограмм
-Инициализация фильтров архива документов
-Инициализация SpacePro справочников
-Инициализация принтеров
-Инициализация основной подпрограммы TMS (-400)
-Инициализация фрейма "Касса"
-Инициализация фрейма "Комплекты"
-Инициализация стилей
-Проверка индексов
-Загрузка настроек автонаценки
procedure SaveEncryptedSettings;
Сохранение зашифрованных настроек в файл params.stn. К таки параметрам относятся параметры подключения к базе данных, последний вошедший пользователь и прочее
function Autorisation: boolean;
Вызывается окно авторизации пользователя, загружаются параметры пользователя из users.userdata
procedure LogIt(s: string);
Выводит сообщение в панели сообщений отладки
procedure LogException(s: string);
В файл exceptions.log (логирование исключений) добавляет строку s
procedure Display(s: string);
Выводит сообщение s в строке состояния (левом нижнем углу)
function startsession(user_id: int64; forcecreate: boolean; var ws_name: string): boolean;
Создание новой сессии SESSOINS. Работает хранимая процедура PR_NEWSESSION
procedure endsession(CLOSESESSION_ID: int64 = 0; ENDFLAG: integer = 0; DOEVENT: boolean = false);
Завершение работы текущей сессии. CLOSESESSION_ID - Код сессии, ENDFLAG - флаг закрытия, DOEVENT - признак наличия события.
Работает хранимая процедура PR_CLOSESESSION
procedure SetDBVER;
Формирование заголовка программы. Название версия, зарегистрирована или нет.
function NewWinBtn(caption: string; icon: TIcon): TSpeedButton;
Создает новую кнопку TSpeedButton и размещает ее на pnWindows. У меня эта процедура, почему то не работает...
procedure initimagelist;
Инициализация картинок, которые хранятся в таблице imagelist поле DATA. Данные картинки используются для картинок групп.
procedure SaveUserDataFile;
Сохранение параметров пользователя в USERS.USERDATA. Настройки сеток, настройки программы кассир на пользователя
procedure SaveSettings;
Сохранение настроек интеллектуальной заявки ZAutoXP
procedure SaveMngrWindowsSettings;
Сохранение положения и размера окна для окна истории товаров.
procedure gbKeyPress(Key: Char; ed: TEdit; DoDigits: boolean = False);
В ed выводит код нажатой клавиши.
function SessionByID(id: int64): rSession;
Возвращает параметры сессии по коду сессии. Возвращаемые значения: id,username,user_id,ws_id,wsname,ws_ip. Доступ к результату функции через точку.
Например: dm.SessionByID.wsname - имя компьютера с которого была запущена сессия с кодом 0. 
function SessionID: int64;
Возвращает код текущей сессии
function GetCustomDrawText(sField: string; AText: string): string;
Пока нет описания
function DelFromGroup(CurMembership: TCurMembership): boolean;
В TMS нет типа TCurMembership, по этому функция не используется. А вообще, удаляет запись из членства в группе.
function CheckMembership(grouptablename: string; table_id: int64; checkgroup_ids: string): boolean;
Возвращает признак принадлежности к группе
procedure ShowPartHistory(part_id: int64; ScreenRect, MaxRect: TRect);
Открыть историю товара для указанной партии
procedure InitGridParamView(gb: TCustomdxDBTreeListControl; gbName: string; filename: string; LoadAllRecordsMode: integer = 0);
Инициализация внешнего вида сетки для заданной сетки из USERS.USERDATA
procedure gbCtrl(edcfSelect: TcfSelectEdit; Key: Word; Shift: TShiftState);
Послать нажатие клавиши Ctrl в определенную сетку. По умолчанию, очищает поле поиска. 
procedure CancelgbCtrl(gb: TWinControl);
После запуска данной процедуры клавиша Ctrl не будет очищать поиск.
function IsAdmin: boolean;
Если код текущего пользователя 0 или у текущего пользователя есть права администратора, то возвращает Истину, иначе ложь
function IsManager: boolean;
Если код текущего пользователя 0 или у текущего пользователя есть права менеджера или администратора, то возвращает Истину, иначе ложь
procedure DoDates(ANode: TdxTreeListNode; fieldname: string; var AText: string; var AColor: TColor; AFont: TFont);
Применяет раскраску ячеек в колонках срок годности, дата окончания, дата вставки, дата обновления на основании настроек программы для интерактивной подкраски.
procedure CheckSession;
Проверяет наличие открытой активной сессии для текущего пользователя и программы, если такой, нет - завершается работа программы.
function GetCash: double;
Обновление суммы наличности в кассе в журнале документов кассы.
procedure CompleteCurParams(filename: string);
Загрузить профиль интерфейса из файла (*.asni) USERS.USERDATA
function GetDocFrameById(id: int64): TFrameCustomDoc;
Возвращает фрейм (форму) активного документа по коду документа.
procedure DrawImage_Folder(il: TImageList; ImageIndex: integer; AText: string; ACanvas: TCanvas; ARect: TRect; AColor: TColor; AFont: TFont);
Прорисовать картинку с кодом ImageIndex из il у ARect с надписью AText
procedure ToolButtonDropDownMenuClick(btn: TToolButton);
Пустая процедура, ничего не делает
procedure ExecScript(group_id: int64; program_data: TStringList = nil); overload;
Запустить скрипт (подпрограммы) на выполнение с кодом group_id, где program_data входящие параметры, доступные в самом скрипте.
procedure ExecScript(group_id: int64; program_data: TStringList; Sender: TObject); overload;
Запустить скрипт (подпрограммы) на выполнение с кодом group_id, где program_data входящие параметры, доступные в самом скрипте.
procedure ExecScript(PartGroup: TPartGroup; program_data: TStringList; Sender: TObject); overload;
Запустить скрипт (подпрограммы) на выполнение PartGroup, где program_data входящие параметры, доступные в самом скрипте.
procedure ExecScript(group_sid: string; program_data: TStringList; Sender: TObject); overload;
Запустить скрипт (подпрограммы) на выполнение с sid=group_sid, где program_data входящие параметры, доступные в самом скрипте.
procedure InitScriptsMenu(MenuItems: TMenuItem);
Инициализация меню подпрограмм. То, что будет выходить по кнопке "Выполнить": список скриптов, список TMS скриптов, "Обновить список подпрограмм"
function InitScripts_AddChilds_recur(ParentMI: TMenuItem): boolean;
Инициализация подменю подпрограмм
procedure UpdKritK(name_id: string; value: integer);
Установить критическое количество (минимальный остаток) для указанного наименования. update vals set intvalue=:value where id=:name_id

function EditImageList(id: integer): boolean;
Открыть окно с  выбором иконки. При изменении содержимого набора картинок, данные пере пишутся в базу.
procedure SetInitParams;
Устанавливает значения параметров, доступных в программе на протяжении всей сессии. 
После знака равенства указаны значения по умолчанию,в  случае отсутствия параметра в таблице PARAMS
 PARAMS.PARAMS_FORMSPART='forms'
 PARAMS.PARAMS_ENAKLBACKPATH='enakl\enakl_back'
 PARAMS.PARAMS_ENAKLPATH='enakl\enakl_ok'
 PARAMS.PATH_PICTS='picts'
 PARAMS.PATH_ENAKL_CORRECTQUANT_MASK='enakl\enakls\*.dbf'
 PARAMS.PATH_ENAKL_RASHOD_MASK='enakl\enakls\d*.dbf'
 PARAMS.PATH_ENAKL_PRIHOD_MASK='enakl\enakls\*.dbf'
function InitScales: boolean;
Инициализация электронных весов в менеджере, работает если PARAMS.INIT_SCALES=1
function InitMgnCustomDicts: boolean;
Инициализация внешнего справочника или глобального справочника при редактировании наименования. 
Визуально находится справа от основного справочника выбора наименования.
В список внешних справочников попадают все справочники из WDICTS со status=0
procedure InitDataSet(var IBQuery:TIBQuery);
Создает IBQuery подключенного к текущей базе данных с активной транзакцией.
function GetStringFromClipboard: WideString;
Возвращает строку. находящуюся в буфере обмена.
procedure RefreshGrid(Grid: TdxDBGrid; UniqueField: String);
Обновляет все содержимое сетки TdxDBGrid. UniqueField - ключ сетки.
procedure CustomParamsInit;
Инициализация параметров в текущей сессии:
PARAMS.ACTIVE_DOC_HIGHLIGHT
PARAMS.NAMES_FIRST_UP
PARAMS.HIDE_MINUS
PARAMS.PRICE_EDIT_ACTION
PARAMS.BCODE_EDITOR
PARAMS.ALLOW_RASHOD_NOPARTID
PARAMS.TREE_LIST_VIEW
PARAMS.AGENTS_DICT_MODE
PARAMS.MAKE_ENABLE
PARAMS.STRING_VAL_FIELDS
PARAMS.ENAKL_NUM_MODE
PARAMS.AUTO_GROUP_FIELDS
PARAMS.MAKETYPES
PARAMS.STYLE
PARAMS.GEN_BARCODE
PARAMS.ACTION_PRIHOD
PARAMS.ACTION_RASHOD
PARAMS.COMMITDATE
PARAMS.EDIT_SEARCH_FIELDS
PARAMS.PARAMS_EMAIL
PARAMS.EMAIL
PARAMS.PARAMS_SMTP
PARAMS.PARAMS_PORT
PARAMS.PARAMS_PSW
PARAMS.PARAMS_TEMP_PATH
PARAMS.PARAMS_AUTOTLS
PARAMS.PARAMS_FULLSSL
PARAMS.ORG_NAME_NAKL
PARAMS.SEND_METHOD
PARAMS.ELNAKLDIALOG
PARAMS.ARCHIVE_AGENTS_LIMIT
PARAMS.INDEX_CHECK
PARAMS.SHOW_OBSOLETE
PARAMS.GET_HISTORY
PARAMS.MAKE_STATES
PARAMS.OZ_CONNSTR
PARAMS.OZ_PATH
PARAMS.ELNAKLS_UPDATE
PARAMS.ACTIVEDOC_PRINT_METHOD
PARAMS.ORDER_VIEW
PARAMS.ORDER_SETTINGS
PARAMS.GDB_CONNSTR
PARAMS.USE_AUTORASHOD_SCRIPTS
PARAMS.AUTONAC
PARAMS.AUTORASHOD_METHOD
procedure CustomDictsInit;
Добавляет в меню справочники - дополнительные возможности список SP$WDISTS где status=0
Добавляет в основном окне закладки со справочниками SP$WDISTS где status=2
procedure ShowSplash;
пустая процедура, ничего не делает.
procedure InitPrinters;
В поле param_type_data таблицы PARAMS в строке с кодом -43 (PARAm_ID='DEF_PRINTER') записывается список принтеров из системы
function PrepareForFind(s: string): string;
Подготавливает строку s к поиску. Из строки s вырезаются все значения из таблицы NAME_RULES.
Если type=0, вырезать все значения 
Если type=1, вырезать значения слева
Если type=2, вырезать значения справа
function IsDigit(s: char): boolean;
Возвращает Истина, если s является числом, Ложь - иначе.
function RemoveLeft(s, val: string): string;
Подготавливает строку к поиску, обрезая слева все цифры, находящиеся до val
function RemoveRight(s, val: string): string;
Подготавливает строку к поиску, обрезая справа все цифры, находящиеся от val
function IsReg: boolean;
Возвращает Истина если программа зарегистрирована, Ложь - иначе
function ConvertFSelect(svalue: string): string;
Преобразует строку svalue (типа selected_ids ' 1  2  3  4 ') к виду '1,2,3,4' для последующего использования в зпросе
procedure bLocate(qD: TIBQuery; UniqueField: String; id: Variant);
Позиционирует запись в запросе qD по значению id в поле UniqueField
function CreatePreviewFile(pict_id: int64): boolean;
Выгружает картинку предварительного просмотра из поля PREVIEW таблицы 
procedure UpdateUserMMBSH;
Для текущей сессии заполняет значение mmbsh по grouptabele='USERS'и текущему пользователю
Не используется в ТМС
function GetGoodNameID(sname: string): int64;
При подключенном глобальном справочнике возвращает код позиции приведенного наименования в глобальном прайсе по sname
function UserParamsByID(UserID: integer): TcfZip;
Возвращает профиль у пользователя с кодом UserID
function CopyGridParams(gb: TCustomdxDBTreeListControl; gbName, gbFileName: String; LoadAll: integer = 0): boolean;
Вызывается операция копирования сетки у пользователя для текущего пользователя.
function GetGoodName(svalue: string): string;
При подключенном глобальном справочнике возвращает приведенное наименование из глобального прайса по sname
procedure CheckFields;
Проверяет наличие колонки doc_pay_date в таблице docs, если ее нет, то создает
Проверяет наличие колонки credit_depth в таблице agents, если ее нет, то создает
procedure InitDocArchiveView;
Инициализация журнала документов
procedure CreateTrayIcon(n: Integer);
Создается значок менеджера и размещается в области уведомлений (трей)
procedure DeleteTrayIcon(n: Integer);
Удаляется значок менеджера из области уведомлений (трей)
procedure IconRepaint(index: integer; cp: string);
Обновление отображения значка менеджера в области уведомлений (трей)
function GetTmsParams: String;
передача параметров в тмс
текст структурированный в stringlist
procedure CheckIndices;
Процедура проверки активности индекса WARES_IDX1 для WARES
В случае отсутствия запускается хранимая процедура UPDPR_REPARWARES для исправления WARES. 
Делает индекс активным.
Procedure FillPartAttributes;
Инициализирует список полей, заполняемых через атрибуты
procedure FreeEvent(id: string = );
Освобождение всех событий
procedure RefreshMacroParams;
Инициализация макро-параметров. Определяются в таблице SP$PARAMS. В менеджере не используется.

unDmDocs UndmReports UnFrameAgents UnFrameCustomDict UnFrameCustomDoc UnFrameCustomParams UnFrameDocArchive UnFrameDocContainer UnFrameMake UnFrameMoney UnFramePrihodDoc UnFramePrihodDocTreb UnFrameUsers UnFrameWareBase UnfrmContainer UnfrmDocManager UnfrmGetCustomValue UnfrmHint UnfrmNotice UnfrmReg unMain UnMain UnViewUtils unWindows XmlDoc