// скрипт для импорта прайс-листа Ориола. используется процедурой Loader.LoadFromFileWithScript { add('code',ftstring,50); add('code_goods',ftstring,50); add('name_goods',ftstring,300); add('code_producer',ftstring,50); add('name_producer',ftstring,300); add('code_country',ftstring,50); add('name_country',ftstring,300); add('price',ftstring,50); add('price_without_nds',ftstring,50); add('price_first',ftstring,50); add('price_first_with_nds',ftstring,50); add('nds',ftstring,50); add('shelf_life',ftstring,50); add('ex_rate',ftstring,50); add('price_rtl',ftstring,50); add('amount',ftstring,50); add('id_valuta',ftstring,50); add('min_amount',ftstring,50); add('units',ftstring,50); add('place_cap',ftstring,50); add('isliveneed',ftstring,50); add('price_registry',ftstring,50); add('barcode',ftstring,50); } // если вернуть закрытый датасет, то операция не будет продолжена, и предполагается, что скрипт самостоятельно разобрался с прайсом. // для самостоятельности скрипту передается ID - идентификатор прайса, который сейчас заливается. // но в целом задача скрипта - транспортировать данные из файла Filename в Dataset var Filename :string; // Файл импорта SelfLoader :TPriceLoader; // запускающий объект var CDS :Tclientdataset; taDBF :TTable; tmpDir :string; tmpfile :string; Mappings :string; strval :string; begin tmpdir := ''; if uppercase(extractfileext(filename))='.ZIP' then begin tmpdir := includetrailingpathdelimiter(createuniquedir); filename := tmpdir+zipextractall(filename,tmpdir); end; if uppercase(extractfileext(filename))='.DBF' then begin taDBF := tTable.create(selfscript); taDBF.TableType := ttDBase; taDBF.tablename := filename; taDBF.Open; Mappings := 'kod=CODE_GOODS;'+ 'naim=NAME_GOODS;'+ 'reestr=price_registry;'+ 'kolvo=AMOUNT;'+ 'godnost=SHELF_LIFE;'+ 'izgot=NAME_PRODUCER;'+ 'strana=NAME_COUNTRY;'+ 'GNVLS=IsLiveneed;'+ 'kratnost=PLACE_CAP;'+ 'min part=MIN_AMOUNT;'+ 'shtrihkod=BARCODE;'+ 'cenands=PRICE;'; SElfLoader.InitFieldsToDefault; SelfLoader.InitImportCDS; TableAppend(SelfLoader.ImportCDS,taDBF,false,Mappings); //dataset.close; // чтобы не продолжился импорт tadbf.close; end else begin CDS := tclientdataset.create(selfscript); if not ReadTXT(cds,filename,';') then RaiseException('Не могу прочесть файл: '+tmpfile); Mappings := 'Код=CODE_GOODS;'+ 'Название=NAME_GOODS;'+ 'Завод=NAME_PRODUCER;'+ 'Страна=NAME_COUNTRY;'+ 'Кратность=PLACE_CAP;'+ 'Количество=AMOUNT;'+ 'Процент НДС=NDS;'+ 'Срок годности=SHELF_LIFE;'+ 'Признак ЖНВЛС=IsLiveneed;'+ //'Кратность=MIN_AMOUNT;'+ 'Цена=PRICE'; SElfLoader.InitFieldsToDefault; SelfLoader.InitImportCDS; TableAppend(SelfLoader.ImportCDS,cds,false,Mappings); //dataset.close; // чтобы не продолжился импорт end; if tmpdir<>'' then deletedir(tmpdir); end.