// скрипт для импорта прайс-листа Живана. используется процедурой 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; i :integer; begin table := tclientdataset.create(selfscript); //mappings := tstringlist.create; try if not ReadXLS(table,filename) then RaiseException('Не могу прочесть файл: '+tmpfile); { Mappings := 'Код=CODE_GOODS;'+ 'Наименование=NAME_GOODS;'+ 'Производитель=NAME_PRODUCER;'+ 'Страна=NAME_COUNTRY;'+ 'В коробке=PLACE_CAP;'+ 'Остаток свободный=AMOUNT;'+ 'Срок годности=SHELF_LIFE;'+ //'Мин. партия тов.=MIN_AMOUNT;'+ 'Реестровая цена=PRICE_REGISTRY;'+ 'ЖВ=ISLIVENEED;'+ 'Ставка НДС=NDS;'+ //'Штрих_код=BARCODE;'+ //'Ед_изм_=UNITS;'+ 'Цена с НДС _Предоплата_=PRICE'; } SElfLoader.InitFieldsToDefault; SelfLoader.InitImportCDS; //TableAppend(SelfLoader.ImportCDS,table,false,Mappings); table.first; while not table.eof do begin selfloader.importcds.append; selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fieldbyname('Код').asstring; selfloader.importcds.fieldbyname('NAME_GOODS').asstring := table.fieldbyname('Наименование').asstring; selfloader.importcds.fieldbyname('name_producer').asstring := table.fieldbyname('Производитель').asstring; selfloader.importcds.fieldbyname('name_country').asstring := table.fieldbyname('Страна').asstring; selfloader.importcds.fieldbyname('place_cap').asstring := table.fieldbyname('В коробке').asstring; selfloader.importcds.fieldbyname('amount').asstring := table.fieldbyname('Остаток свободный').asstring; selfloader.importcds.fieldbyname('shelf_life').asstring := table.fieldbyname('Срок годности').asstring; selfloader.importcds.fieldbyname('price_registry').asstring := table.fieldbyname('Реестровая цена').asstring; if table.fieldbyname('ЖВ').asstring = 'Да' then selfloader.importcds.fieldbyname('IsLiveneed').asstring := '1'; strval := table.fieldbyname('Ставка НДС').asstring; i := pos('%',strval); if i>0 then StrvAl := copy(strval,1,i-1); selfloader.importcds.fieldbyname('NDS').asstring := strval; selfloader.importcds.fieldbyname('PRICE').asstring := table.fieldbyname('Цена с НДС _Предоплата_').asstring; selfloader.importcds.post; table.next; end; finally //mappings.free; table.free end; end.