// скрипт для импорта прайс-листа FarmImex. используется процедурой 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 :Tclientdataset; tmpDir :string; tmpfile :string; Mappings :string; strval :string; begin table := tclientdataset.create(selfscript); //mappings := tstringlist.create; try if not ReadTXT(table,filename,#9) //,false) then RaiseException('Не могу прочесть файл: '+tmpfile); //КодТовара НаименованиеТовара СтранаПроизводителя Производитель КоличествоВУпаковке // ШтрихКод СтавкаНДС СрокГодности Количество ЖНВЛС ЦенаСНДС ЦенаБезНДС // МинимальныйЗаказ ЦенаРеестра ДатаПрайса Mappings := 'КодТовара=CODE_GOODS;'+ 'НаименованиеТовара=NAME_GOODS;'+ 'Производитель=NAME_PRODUCER;'+ 'СтранаПроизводителя=NAME_COUNTRY;'+ 'КоличествоВУпаковке=PLACE_CAP;'+ 'Количество=AMOUNT;'+ 'СтавкаНДС=NDS;'+ 'СрокГодности=SHELF_LIFE;'+ 'ЖНВЛС=IsLiveneed;'+ 'МинимальныйЗаказ=MIN_AMOUNT;'+ 'ШтрихКод=BARCODE;'+ 'ЦенаРеестра=Price_registry;'+ 'ЦенаСНДС=PRICE'; SElfLoader.InitFieldsToDefault; SelfLoader.InitImportCDS; table.savetofile('c:\temp\1.cds'); { table.first; while not table.eof do begin selfloader.importcds.append; selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fields[0].asstring; selfloader.importcds.fieldbyname('NAME_GOODS').asstring := table.fields[1].asstring; selfloader.importcds.fieldbyname('NAME_COUNTRY').asstring := table.fields[2].asstring; selfloader.importcds.fieldbyname('NAME_PRODUCER').asstring := table.fields[3].asstring; // selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fields[4].asstring; selfloader.importcds.fieldbyname('BARCODE').asstring := table.fields[5].asstring; selfloader.importcds.fieldbyname('NDS').asstring := table.fields[6].asstring; selfloader.importcds.fieldbyname('SHELF_LIFE').asstring := table.fields[7].asstring; selfloader.importcds.fieldbyname('AMOUNT').asstring := table.fields[8].asstring; //selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fields[9].asstring; selfloader.importcds.fieldbyname('PRICE').asstring := table.fields[10].asstring; // selfloader.importcds.fieldbyname('PRICE_REGISTRY').asstring := table.fields[11].asstring; //selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fields[12].asstring; //selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fields[13].asstring; selfloader.importcds.post; table.next end; } TableAppend(SelfLoader.ImportCDS,table,false,Mappings); //dataset.close; // чтобы не продолжился импорт finally //mappings.free; table.free end; end.