// скрипт для импорта прайс-листа от ООО Прайд (Саратов). используется процедурой 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 Table :ttable; tmpDir :string; tmpfile :string; Mappings :string; strval :string; begin table := ttable.create(selfscript); //mappings := tstringlist.create; try tmpdir := includetrailingpathdelimiter(gettempdir+'tmpscriptimport-'+formatdatetime('dd-mm-yyyy-hh-nn-ss',now)); forcedirectories(tmpdir); tmpfile := tmpdir+extractfilename(filename); copyfile(filename,tmpfile); try strval := ZipExtractAll(tmpfile,tmpdir); //if strval<>'' //then RaiseException('Не могу распаковать файл: '+tmpfile+#13+'Сообщение: '+strval); tmpfile := tmpdir + 'price.dbf'; table.tablename := tmpfile; table.tabletype := ttFoxpro; SetTableLangDriver(table,'db866ru0'); //SetTableLangDriver(Table,'DBWINUS0'); Mappings := 'CODE=CODE_GOODS;'+ 'CODE_PROD=CODE_PRODUCER;'+ 'NAME=NAME_GOODS;'+ 'NAME_PROD=NAME_PRODUCER;'+ 'NAME_CNTR=NAME_COUNTRY;'+ 'PLACE_CAP=PLACE_CAP;'+ 'MIN_AMOUNT=MIN_AMOUNT;'+ 'QUANTITY=AMOUNT;'+ 'NDS=NDS;'+ 'SHELF_LIFE=SHELF_LIFE;'+ 'BARCODE=BARCODE;'+ 'PRICE=PRICE'; SElfLoader.InitFieldsToDefault; SelfLoader.InitImportCDS; TableAppend(SelfLoader.ImportCDS,table,false,Mappings); //dataset.close; // чтобы не продолжился импорт finally cleardir(tmpdir); deletedir(tmpdir); end; finally //mappings.free; table.free end; end.