function fsiBase_Main_Script_Mnemo_Prepare(Q:TFDQuery;
                                           scrText:TStrings;
                                           List_EnvVars:TStrings
                                           ):boolean;
//Выгрузка библиотечных скриптов из БД. Парсинг скрипта
Var
  ListScr:TStrings;
  sDir, sMnemo:string;
  Sx:string;
  InUses:boolean;
  N,i:integer;
begin
  Result:=false;
  if Assigned(Q) then begin
     if Assigned(List_EnvVars) then begin
        if List_EnvVars.Count>0 then begin
           //Получить имя папки для сохранения библиотечных файлов из БД
           sDir:=DirName_from_List_EnvVars(List_EnvVars);
           if DirectoryExists(sDir) then begin
              //удалить все PAS-файлы из папки (если требуется)
              //Files_Delete(sDir+'*.pas');
              if Assigned(scrText) then begin
                 if scrText.Count>0 then begin
                    Result:=true;
                 end;
              end;
           end;
        end;
     end;
  end;
  if Result then begin
     //---------------------------------------------------
     //Поиск раздела USES и его парсинг
     ListScr:=TStringList.Create;
     TRY
       InUses:=false;
       i:=-1;
       while i<(scrText.Count-1) do
        begin
         i:=i+1;
         Sx:=trim(scrText[i]);
         sMnemo:='';
         if InUses then begin
            if Sx<>'' then begin
               //................................
               //Выделить мнемокод из строки FS-скрипта
               //если он там присутствует
               sMnemo:=Mnemo_Extract(Sx);
               //................................
               if sMnemo<>'' then begin
                  //................................
                  //Загрузить скрипт из БД
                  ListScr.Text:=FS_LoadFromDB(Q,
                                              sMnemo,
                                              true);
                  //................................
                  if ListScr.Count>0 then begin
                     //Сохранить срипт в папку
                     ListScr.SaveToFile(sDir+sMnemo+'.pas');
                  end;
                  ListScr.Text:='';
                  //................................
                  //Заменить строку в скрипте
                  Sx:=Replace_In_String(scrText[i], '${'+sMnemo+'}', sMnemo+'.pas', true);
                  scrText[i]:=Sx;
                  //................................
               end;
            end;
         end;
         //................................
         //................................
         //Определение начала раздела Uses FS-Скрипта
         if AnsiUpperCase(Sx) = 'USES' then InUses:=true;
         //................................
         if InUses then begin
            //................................
            //Оценка: это конец раздела USES?
            if Sx<>'' then begin
               if Sx[length(Sx)]=';' then begin
                  InUses:=false;
                  i:=(scrText.Count+1); //Выход из парсинга
               end;
            end;
            //................................
         end;
       end;
     FINALLY
       FreeAndNil(ListScr);
     END;
     //---------------------------------------------------
  end;
end;