// скрипт для импорта прайс-листа МИАМЕД. используется процедурой 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; MissStrings :integer; thf :Tfield; begin table := tclientdataset.create(selfscript); //mappings := tstringlist.create; try missstrings := 0; readxls(table, filename,false,false,0); { table.savetofile('c:\temp\1.cds'); table.first; while not table.eof and (table.fields[0].asstring<>'Наименование') and (table.fields[1].asstring<>'Наименование') do begin inc(MissStrings); table.next; end; } if not readxls(table,filename,false,true,MissStrings) then RaiseException('Не могу прочесть файл: '+tmpfile); //table.savetofile('c:\temp\1.cds'); { Mappings := 'Код=CODE_GOODS;'+ 'Наименование=NAME_GOODS;'+ 'Форма выпуска=FORM;'+ 'Производитель=NAME_PRODUCER;'+ //'Страна=NAME_COUNTRY;'+ //'Количество в упаковке=PLACE_CAP;'+ //'Количество=AMOUNT;'+ //'Процент НДС=NDS;'+ //'Срок годности=SHELF_LIFE;'+ //'Признак ЖНВЛС=IsLiveneed;'+ //'Кратность=MIN_AMOUNT;'+ 'Цена=PRICE'; } SElfLoader.InitFieldsToDefault; SelfLoader.InitImportCDS; table.first; while not table.eof do begin //if table.fieldbyname('Цена').asstring>'' //then begin selfloader.importcds.append; if table.findfield('Код товара')<>nil then selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fieldbyname('Код товара').asstring else selfloader.importcds.fieldbyname('CODE_GOODS').asstring := table.fieldbyname('COD').asstring; //if pos(table.Fieldbyname('Наименование').asstring,table.Fieldbyname('Форма').asstring)=1 //then if table.findfield('Товар')<>nil then selfloader.importcds.fieldbyname('NAME_GOODS').asstring := table.Fieldbyname('Товар').asstring else selfloader.importcds.fieldbyname('NAME_GOODS').asstring := table.Fieldbyname('NAME').asstring; if table.findfield('Производитель')<>nil then selfloader.importcds.fieldbyname('NAME_PRODUCER').asstring := table.fieldbyname('Производитель').asstring else selfloader.importcds.fieldbyname('NAME_PRODUCER').asstring := table.fieldbyname('PRODUCER').asstring; if table.findfield('Цена')<>nil then selfloader.importcds.fieldbyname('PRICE').asstring := table.fieldbyname('Цена').asstring else if table.findfield('Цена0')<>nil then selfloader.importcds.fieldbyname('PRICE').asstring := table.fieldbyname('Цена0').asstring; thf := table.findfield('Срок годности'); if thf=nil then thf := table.findfield('Срок годности'); if thf<>nil then selfloader.importcds.fieldbyname('shelf_life').asstring := thf.asstring; end; table.next end; //TableAppend(SelfLoader.ImportCDS,table,false,Mappings); //dataset.close; // чтобы не продолжился импорт finally //mappings.free; table.free end; end.