// скрипт импорта ЖНВЛС в справочник товаров. Использует файл, в котором одно поле - МНН.
// Скрипт запросит файл, после проанализирует его и поменяет в справочнике товаров значения поля "жизненно-важный".

var Fname :string;
    tatovar :ttable;
    CDS :Tclientdataset;
    cntChanged, cntliveneed :integer;
    cntfound :integer;
begin
   FName := '';

   with TOpenDialog.create(nil) do
   try
     Title := 'Укажите файл с данными:';
     if execute then fname := Filename;
   finally
     free
   end;

   if fname='' then exit;
   if not fileexists(Fname)
   then begin
     createHintE('Не найден указанный файл '+Fname);
     exit;
   end;

   with tmywait.create1('Идет изменение данных',selfscript) do
   begin
     advancedtext := 'Чтение данных';

     CDS := TClientdataset.create(selfscript);

     //readtxt(cds,fname,#09,false);
     readxls(cds,fname,false,false);

     tatovar := ttable.create(cds);
     tatovar.databasename := 'dbkassa';
     tatovar.tablename := 'tovar.db';
     tatovar.open;
     tatovar.indexfieldnames := 'intername';

     progressbarmax := cds.recordcount;

     cntchanged := 0;
     cntfound := 0;


     cds.first;
     while not cds.eof do
     begin

       if tatovar.findkey([uppercase(cds.fields[0].asstring)])
       then
       while not tatovar.eof and (uppercase(tatovar.fieldbyname('intername').asstring) = uppercase(cds.fields[0].asstring)) do
       begin
            cntfound := cntfound+1;
            if tatovar.fieldbyname('isliveneed').asinteger<>1
            then begin
              tatovar.edit;
              tatovar.fieldbyname('isliveneed').asinteger := 1;
              cntchanged := cntchanged +1;
              tatovar.post;
            end;
            tatovar.next;
       end;

       advancedtext := 'Анализ: найдено товаров: '+inttostr(cntfound)+', добавлено ЖНВЛС '+inttostr(cntchanged);
       incprogress;

       cds.next;
     end;

     createhinti('Записей найдено: '+inttostr(cntfound)+' из '+ inttostr(cds.recordcount)+', добавлено ЖНВЛС: '+inttostr(cntchanged));
   end;
end.
