// скрипт для импорта прайс-листа Профит-мед. используется процедурой Loader.LoadFromFileWithScript // на вход подается открытый Dataset, который нужно заполнить в соответствии с полями: { 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; CDS :Tclientdataset; begin table := ttable.create(selfscript); try tmpdir := includetrailingpathdelimiter(gettempdir+'tmpscriptimport-'+formatdatetime('dd-mm-yyyy-hh-nn-ss',now)); forcedirectories(tmpdir); tmpfile := tmpdir + 'tmpprice'+uppercase(extractfileext(filename)); copyfile(filename,tmpfile); try begin cds := tclientdataset.create(selfscript); if uppercase(extractfileext(TMPFile))='.XLS' then begin readxls(cds, tmpfile,false,true); Mappings := 'Артикул=CODE_GOODS;'+ 'Наименование=NAME_GOODS;'+ 'Производитель=NAME_PRODUCER;'+ 'Страна=NAME_COUNTRY;'+ 'ЕИ=UNITS;'+ 'НДС=NDS;'+ 'Остаток=AMOUNT;'+ 'Цена=PRICE;'+ 'Срок годности=SHELF_LIFE;'+ 'ШТРИХКОД=BARCODE;'; //'Упаковка=PLACE_CAP;'+ //'МОП=MIN_AMOUNT'; SElfLoader.InitFieldsToDefault; SelfLoader.InitImportCDS; TableAppend(selfloader.importcds,cds,false,Mappings); end else begin // DBF table.tablename := tmpfile; table.open; Mappings := 'ID=CODE_GOODS;'+ 'NAME=NAME_GOODS;'+ 'FIRM=NAME_PRODUCER;'+ 'COUNTRY=NAME_COUNTRY;'+ 'EI=UNITS;'+ 'NDS=NDS;'+ 'OST=AMOUNT;'+ 'PRICE2150=PRICE;'+ 'REGPRC=PRICE_REGISTRY;'+ 'DATEREAL=SHELF_LIFE;'+ 'GNVLS=ISLIVENEED;'+ 'BARCODE=BARCODE;'+ 'KOLPACK=PLACE_CAP;'+ 'MNP=MIN_AMOUNT'; SElfLoader.InitFieldsToDefault; SelfLoader.InitImportCDS; TableAppend(selfloader.importcds,table,false,Mappings); end; end; finally cleardir(tmpdir); deletedir(tmpdir); end; finally //mappings.free; table.free end; end.