// скрипт для импорта прайс-листа. используется процедурой Loader.LoadFromFileWithScript
// на вход подается открытый Dataset, который нужно заполнить в соответствии с полями:


// если вернуть закрытый датасет, то операция не будет продолжена, и предполагается, что скрипт самостоятельно разобрался с прайсом.
// для самостоятельности скрипту передается ID - идентификатор прайса, который сейчас заливается.
// но в целом задача скрипта - транспортировать данные из файла Filename в Dataset


var // предопределенные скриптом переменные
    Filename :string; // Файл импорта
    SelfLoader :TPriceLoader; // вызывающий объект

    // собственные объекты
var tmpDir :string;
    tmpfile :string;
    Mappings :string;
    strval :string;
begin
  try
    tmpdir := includetrailingpathdelimiter(gettempdir+'tmpscriptimport-'+formatdatetime('dd-mm-yyyy-hh-nn-ss',now));
    forcedirectories(tmpdir);

    tmpfile := tmpdir + extractfilename(FileName);

    copyfile(filename,tmpfile);
    try

      ZipExtractAll(tmpfile,tmpdir);
      tmpfile := tmpdir + 'price.xls';

      readxls(selfloader.importcds, tmpfile,true,true,7);

      selfloader.Field_Name_Goods := 'Наименование препарата';
      selfloader.Field_Code_Goods := 'Код';
      SelfLoader.Field_Name_Producer := 'Производитель';

      SelfLoader.Field_Shelf_life := 'Годен';
      SElfLoader.Field_place_cap := 'Упак_';

      strval := 'Цена';
      if selfloader.importcds.findfield(strval)<>nil
      then selfloader.field_price := StrVal
      else begin
        strval := 'Цена_'; 
        if selfloader.importcds.findfield(strval)<>nil
        then selfloader.field_price := strval
        else begin
          strval := 'Цена__'; 
          if selfloader.importcds.findfield(strval)<>nil
          then selfloader.field_price := strval
          else RaiseException('Поле цены не найдено скриптом');
        end;
      end; 
      
      SElfLoader.Field_quantity := 'Склад';
      selfloader.field_price_registry := 'Реестр_';
      selfloader.field_isliveneed := 'ЖВ';

      if selfloader.importcds.findfield('EAN13')<>nil
      then selfloader.field_BARCODE := 'EAN13'
      else if selfloader.importcds.findfield('BARCODE')<>nil
      then selfloader.field_BARCODE := 'BARCODE'
      else if selfloader.importcds.findfield('BARCOD')<>nil
      then selfloader.field_BARCODE := 'BARCOD'
      else if selfloader.importcds.findfield('Штрихкод')<>nil
      then selfloader.field_BARCODE := 'Штрихкод'
      else if selfloader.importcds.findfield('Штрих-код')<>nil
      then selfloader.field_BARCODE := 'Штрих-код';

      if selfloader.importcds.findfield('НДС')<>nil
      then selfloader.Field_NDS := 'НДС';


      with selfloader.importcds do
      begin
        first;
        while not eof do
        begin
          edit;
          if fieldbyname('ЖВ').asstring = '+'
          then fieldbyname('ЖВ').asstring := '1'
          else fieldbyname('ЖВ').clear;
          post;
          next;
        end;
      end;

      //selfloader.importcds.savetofile('c:\temp\1.cds');

    finally
      cleardir(tmpdir);
      deletedir(tmpdir);
    end;

  finally
  end;


end.
