function FS_LoadFromDB(Q:TFDQuery;
                       ScrMnemo:string;
                       ItsLibOnly:boolean=true
                      ):string;
//Загрузить FS-скрипт по МнемоКоду
Var
  sFilter:string;
begin
  Result:='';
  ScrMnemo:=trim(ScrMnemo);
  if ScrMnemo<>'' then begin
     sFilter:='(mnemocode_lc='+#39+AnsiLowerCase(ScrMnemo)+#39+')';
     if ItsLibOnly then begin
        sFilter:=sFilter+' and (its_lib=1)';
     end;
     Result:=DB_Table_Field_AsString(Q,
                                     'fs_scripts',
                                     'fs_script',
                                     sFilter
                                     );
  end;
end;


function DB_Table_Field_AsString(Q:TFDQuery;
                                 tndb:string;
                                 fntn:string;
                                 sFilter:string;
                                 sValDef:string='';
                                 sOrderBy:string='';
                                 YesTrim:boolean=true):string;
//Получить значение заданного поля (как строка) заданной таблицы Б.Д. по заданному фильтру
Var
  Yes:boolean;
begin
  Result:=sValDef;
  tndb:=trim(tndb);
  fntn:=trim(fntn);
  if (length(tndb)>0) and (length(fntn)>0) then begin
      if Assigned(Q) then begin
         sFilter:=trim(sFilter);
         sOrderBy:=trim(sOrderBy);
         Yes:=false;
         Q.Close;
         Q.SQL.Clear;
         TRY
           Q.SQL.Add('select');
           Q.SQL.Add(fntn);
           Q.SQL.Add('from');
           Q.SQL.Add(tndb);
           if length(sFilter)>0 then begin
              Q.SQL.Add('where');
              Q.SQL.Add(sFilter);
           end;
           if length(sOrderBy)>0 then begin
              Q.SQL.Add('order by');
              Q.SQL.Add(sOrderBy);
           end;
           //Q.SQL.Add('limit 1');
           Q.Open;
           if Q.RecordCount>0 then begin
              if not Q.Fields[0].IsNull then begin
                 Result:=Q.Fields[0].AsString;
              end;
           end;
           Yes:=true;
         FINALLY
           Q.Close;
           if not Yes then begin
              ShowMessage(Q.SQL.Text);
           end;
           Q.SQL.Clear;
         END;
      end;
  end;
  if YesTrim then Result:=trim(Result);
end;