// скрипт для импорта прайс-листа. используется процедурой Loader.LoadFromFileWithScript // на вход подается открытый Dataset, который нужно заполнить в соответствии с полями: // если вернуть закрытый датасет, то операция не будет продолжена, и предполагается, что скрипт самостоятельно разобрался с прайсом. // для самостоятельности скрипту передается ID - идентификатор прайса, который сейчас заливается. // но в целом задача скрипта - транспортировать данные из файла Filename в Dataset var // предопределенные скриптом переменные Filename :string; // Файл импорта SelfLoader :TPriceLoader; // вызывающий объект // собственные объекты var tmpDir :string; tmpfile :string; Mappings :string; begin try tmpdir := includetrailingpathdelimiter(gettempdir+'tmpscriptimport-'+formatdatetime('dd-mm-yyyy-hh-nn-ss',now)); forcedirectories(tmpdir); tmpfile := tmpdir + extractfilename(FileName); copyfile(filename,tmpfile); try ZipExtractAll(tmpfile,tmpdir); tmpfile := tmpdir + 'price.xls'; selfloader.Field_Name_Goods := 'Наименование препарата'; selfloader.Field_Code_Goods := 'Код'; SelfLoader.Field_Name_Producer := 'Производитель'; SelfLoader.Field_Shelf_life := 'Годен'; SElfLoader.Field_place_cap := 'Упак_'; selfloader.field_price := 'Цена__'; SElfLoader.Field_quantity := 'Склад'; selfloader.field_price_registry := 'Реестр_'; selfloader.field_isliveneed := 'ЖВ'; selfloader.field_BARCODE := 'EAN13'; readxls(selfloader.importcds, tmpfile,true,true,7); with selfloader.importcds do begin first; while not eof do begin edit; if fieldbyname('ЖВ').asstring = '+' then fieldbyname('ЖВ').asstring := '1' else fieldbyname('ЖВ').clear; post; next; end; end; //selfloader.importcds.savetofile('c:\temp\1.cds'); finally cleardir(tmpdir); deletedir(tmpdir); end; finally end; end.