// импорт заявки из файла заявки компании Информационн-Аналитические Системы. - система Фарм-Эксперт
// Название файла - любое. Каталог запрашивается в диалоге скрипта.

var
    Dataset :TDataset; // - Таблица, куда импортируются данные. Список полей соответствует списку полей в заявке.
    datedoc :TDateTime; // - дата документа
    numberdoc :string; // - номер документа
    id_org :integer; // - код организации в нашем справочнике
    info :string; // - дополнительная информация

var Dialog :TOpenDialog;
    List :TStringList;
    FList :TStringList;
    i,k :integer;
    j :integer;
    StrValue :string;
begin
  Dialog := TOpenDialog.create(nil);
  List := TstringLIst.create;
  FList := TStringList.create;
  try
    Dialog.InitialDir := AppIniFile.ReadString('preq_script_sectionInfoAS','DirName', '');
    //CreateHint('InitDir = '+Dialog.InitialDir);

    Dialog.Filter := 'Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*';
    Dialog.Title := 'Выберите файл-заявку';
    if dialog.execute
    then begin
      if not Fileexists(Dialog.Filename)
      then begin
        CreatehIntW('Не найден файл '+Dialog.Filename);
        exit;
      end;

      List.loadFromFile(Dialog.Filename);

      if List.count<4
      then begin
        CreateHintW('Заявка пуста');
        exit;
      end;


      for i := 0 to 2 do
      begin
        if i >0
        then Info := Info + #13;
        Info := Info + List[i];
      end;

      Dataset.first;
      while not dataset.isempty do
      begin
        dataset.delete;
      end;

      for i := 3 to list.count-1 do
      begin
        FList.Text := StringReplace(list[i],#9,#13+#10,true);

        // CreateHInt(FList.Text,'',0);
        // CreateHInt(inttostr(FList.count),'',0);


        if FList.count<5 then continue;

        dataset.append;
        try

            dataset.fieldbyname('quantity').asFloat := StrToFloatProtected(FList[0]);


            dataset.fieldbyname('id_tovar').asstring := trim(FList[1]);
            dataset.fieldbyname('name').asstring := trim(FList[2]);

            StrValue := FList[3];
            J := length(StrValue);
            while (j>0) and (StrValue[j]<>'/')  do j := j-1;
            if j>0 then begin
              //StrValue := copy(StrValue,j+1,length(StrValue)); // выделили страну
              dataset.fieldbyname('name_country').asstring := copy(StrValue,j+1,length(StrValue));
              dataset.fieldbyname('name_producer').asstring := copy(StrValue,1,j-1);
            end
            else
              dataset.fieldbyname('name_producer').asstring := StrValue;

            dataset.fieldbyname('price').asFloat := StrToFloatProtected(FList[4]);
        finally
            dataset.post;
        end;
      end;


      AppIniFile.WriteString('preq_script_sectionInfoAS','DirName', ExtractFilepath(Dialog.Filename));
    end;
  finally
    FList.free;
    List.free;
    Dialog.free;
  end;

end.
