Экспорт информации из справочника материалов в файл

Материал из ADGroupWiki
Перейти к навигации Перейти к поиску

Файл:ExportMat.rar

 uses
   Classes, SysUtils;
        
 function BoolToStr(b1 : Boolean) : String;
 begin
   if b1 then
     result := '1'
   else
     result := '0';
 end;
 const
   razdel = '|';
   nl     = #$0D#$0A;
 var
   i, k          : Integer;
   mi            : TMatItem;
   mci           : TMatColorItem;
   cli           : TColorItem;
   f             : TStringStream;
   st, st2       : String;
   vni           : TValutaNameItem;
   rp            : TRPParam;
   MatRazdelItem : TMaterialRazdelItem;
   ProizvodItem  : TProizvodItem;
   EdIzm         : TEdIzm;
 begin
   f := TStringStream.Create;
   st := '';
   st := st + 'ID_Mat'                           + razdel;
   st := st + 'ID_Color'                         + razdel;
   st := st + 'Наименование'                     + razdel;
   st := st + 'Артикул'                          + razdel;
   st := st + 'Цвет'                             + razdel;
   st := st + 'Цена'                             + razdel;
   st := st + 'Валюта'                           + razdel;
   st := st + 'Производитель'                    + razdel;
   st := st + 'Производитель ID'                 + razdel;
   st := st + 'Раздел'                           + razdel;
   st := st + 'Раздел ID'                        + razdel;
   st := st + 'Единица измерения'                + razdel;
   st := st + 'Единица измерения ID'             + razdel;
   st := st + 'Кроить длину'                     + razdel;
   st := st + 'Индивидуальные параметры раскроя' + razdel;
   st := st + 'Длина'                            + razdel;
   st := st + 'Неликвид'                         + razdel;
   st := st + 'Мусор'                            + razdel;
   st := st + 'Параллельный раскрой'             + razdel;
   st := st + 'Складировать обрезки'             + razdel;
   st := st + nl;
   f.WriteString(st);
   for i := 0 to gd.MatersDB.Items.Count-1 do
   begin
     mi := gd.MatersDB.Items.GetByNum(i);
     for k := 0 to mi.Colorsm.Count-1 do
     begin
       mci := mi.Colorsm.GetByNum(k);
       st := '';
       st := st + inttostr(mi.Id)                        + razdel +
                  inttostr(mci.Id)                       + razdel +
                  mi.Name                                + razdel +
                  mci.Art                                + razdel +
                  mci.ColorName                          + razdel +
                  floattostrf(mci.Price, ffFixed, 18, 2) + razdel;
       // Валюта
       vni := ValutaName.Items.GetById(mci.IdValuta);
       st2 := '';
       if assigned(vni) then
         st2 := vni.Name;
       st := st + st2 + razdel;
      
       // Производитель + Производитель ID
       ProizvodItem := gd.Proizvods.Items.GetById(mi.System);
       st2 := '';
       if assigned(ProizvodItem) then
         st2 := ProizvodItem.Name;
       st := st + st2 + razdel;
       st := st + inttostr(mi.System) + razdel;
               
       // Раздел + Раздел ID
       MatRazdelItem := gd.MaterialRazdel.Items.GetById(mi.IdRazdel);
       st2 := '';
       if assigned(MatRazdelItem) then
         st2 := MatRazdelItem.Name;
       st := st + st2 + razdel;
       st := st + inttostr(mi.IdRazdel) + razdel;
      
       // Единица измерения + Единица измерения ID
       EdIzm := gd.EdIzm.GetById(mi.Izm);
       st2 := '';
       if assigned(EdIzm) then
         st2 := EdIzm.Name;
       st := st + st2 + razdel;
       st := st + inttostr(mi.Izm) + razdel;
      
       // Кроить длину
       st := st + BoolToStr(mi.RPMade) + razdel;
       if mi.RPMade then
       begin
         // Индивидуальные параметры раскроя
         st := st + BoolToStr(mci.RPIndividual) + razdel;
         rp := mi.RPParam;
         if mci.RPIndividual then
           rp := mci.RPParam;
         st := st + floattostr(rp.Long) + razdel + floattostr(rp.Nelikv) + razdel + floattostr(rp.Musor) + razdel;
         st := st + BoolToStr(rp.Paral) + razdel + BoolToStr(rp.DoSkladObrez) + razdel;
       end;
       st := st + nl;
       f.WriteString(st);
     end;
   end;
   f.SaveToFile('maters.txt');
   f.Free;
 end.
‎