// скрипт выгрузки накладной для ЗАО Бонум. Используется почта x-price // предопределены переменные: VAR VariantName :string; // имя варианта в программе VariantFile :string; // файл-скрипт Dataset :tdataset; // файл с телом накладной exportAgent :integer; // контрагент в накладной exportAgentName :string; // наименование контрагента exportAgentCODE :string; // альтернативный код exportAgent2 :integer; // грузополучатель exportAgent2Name :string; // наименование грузополучателя exportAgent2CODE :string; // код грузополучателя exportNakladNom :integer; // номер накладной ExportNakladID_DOC :string; // код документа ExportNakladDATA :tdatetime; // дата документа ExportNakladOsnov :string; // основание в накладной ExportNakladFACTURA :integer;// фактура в накладной ExportNakladSklad :integer; // склад в накладной ExportSklad :integer; // склад в накладной ExportSkladName :string; // наименование склада в накладной ExportSkladCODE :string; // код склада в накладной var MailMessage :Variant; Table :ttable; TaGoods :TTAble; strValue :string; subcode :string; begin if ExportAgentCode >'' then SubCode := ExportAgentCode else if ExportAgent2Code >'' then SubCode := ExportAgent2Code else if ExportNakladID_DOC>'' then SubCode := ExportNakladID_DOC; if (SubCode ='') then begin CreateHintE('Невозможно сохранить накладную, нужно вписать код подразделения в поле "альтернативный код" для данного подразделения в справочнике контрагентов'); exit; end; with TmyWait.create('Идет экспорт накладной') do try MailMessage := CreateOleObject('xpricews.xpemailmessage'); if not MailMessage.srv.connected then mailMessage.srv.connectwp('Пользователь','1'); if not mailMessage.srv.connected then begin createhinte('Ошибка, сервер не подключен'); exit; end; MailMessage.id := 0; // инициализируем MailMessage.recipient := 'sclad@bonum.ru'; MailMessage.subject := 'Накладная от ООО Прайд'; TaGoods := TTAble.create(nil); table := ttable.create(nil); try taGoods.databasename := 'dbkassa'; taGoods.tablename := 'tovar.db'; tagoods.open; table.tablename := gettempdir +'PA'+SubCode+'_'+inttostr(ExportNakladNom)+'.dbf'; deletefile(table.tablename); BDEExecSQL( 'create table '+QuotedSTr(TAble.tablename) + ' ( '+ ' N_NACL varchar(12),'+ ' D_NAKL DATE,'+ ' CODE VARCHAR(20),'+ ' NAME varchar(200),'+ ' SCANCOD varchar(13),'+ ' FACTORY VARCHAR(200),'+ ' COUNTRY VARCHAR(100),'+ ' QUANTITY numeric(14,2),'+ ' PRICE_MAKE numeric(14,2),'+ ' PRICE_NAKE numeric(14,4),'+ ' SUM_NAKED numeric(14,4),'+ ' NDS_PR numeric(14,2),'+ ' NDS_SUM numeric(14,2),'+ ' PRICE_REES numeric(14,2),'+ ' DATE_REES date,'+ ' ISLIFE numeric(1),'+ ' SERIES varchar(15),'+ ' DATE_VALID DATe,'+ ' GTD varchar(25),'+ ' SERT varchar(70),'+ ' FILIAL varchar(30),'+ ' APTEKA varchar(30),'+ ' PRICE numeric(14,2)'+ ' )',[null]); { N_NACL Character(12) Номер расходной накладной D_NACL Date Дата расходной накладной CODE Numeric(11) Код товара NAME Character(80) Название товара SCANCOD Character(13) Штрихкод FACTORY Character(40) Название завода-изготовителя COUNTRY Character(20) Страна QUANTITY Numeric(14,2) Количество PRICE_MAKE Numeric(14,2) Цена производителя без НДС за единицу PRICE_NAKE Numeric(14,2) Цена поставщика без НДС SUM_NAKED Numeric(14,2) Сумма поставщика без НДС NDS_PR Numeric(14,2) НДС поставщика (%) NDS_SUM Numeric(14,2) НДС поставщика (Сумма) PRICE_REES Numeric(14,2) Цена гос.Регистрации DATE_REES Date Дата гос. Регистрации ISLIFE Numeric(1) Признак ЖВЛС (0-нет, 1-да) SERIES Character(15) Серия DATE_VALID Date Срок годности GTD Character(25) Номер ГТД SERT Character(70) Номер сертификата FILIAL Character(30) Филиал поставщика APTEKA Character(30) Аптека, куда поступает товар (номер) } table.open; dataset.disablecontrols; try progressbarmax := dataset.recordcount; dataset.first; while not dataset.eof do begin incprogress; tagoods.findkey([dataset.fieldbyname('nn').asstring]); table.append; StrValue := dataset.fieldbyname('producer').asstring; table.fieldbyname('n_nacl').asstring := inttostr(ExportnakladNom); table.fieldbyname('d_nakl').asdatetime := Exportnakladdata; table.fieldbyname('code').asstring := inttostr(dataset.fieldbyname('id_goods').asinteger * 1000 +dataset.fieldbyname('producer').asInteger); //if StrValue>'' //then table.fieldbyname('code').asstring := table.fieldbyname('code').asstring + ':'+ StrVAlue; table.fieldbyname('name').asstring := dataset.fieldbyname('name').asstring; table.fieldbyname('SCANCOD').asstring := dataset.fieldbyname('barcode').asstring; table.fieldbyname('FACTORY').asstring := dataset.fieldbyname('producername').asstring; table.fieldbyname('COUNTRY').asstring := dataset.fieldbyname('producercountryname').asstring; table.fieldbyname('QUANTITY').asfloat := dataset.fieldbyname('kol').asfloat; table.fieldbyname('PRICE').asfloat := dataset.fieldbyname('cena').asfloat; table.fieldbyname('PRICE_MAKE').asfloat := dataset.fieldbyname('firstcena').asfloat; table.fieldbyname('PRICE_NAKE').asfloat := dataset.fieldbyname('cenanotnds').asfloat; table.fieldbyname('SUM_NAKED').asfloat := dataset.fieldbyname('notndssumma').asfloat; table.fieldbyname('nds_pr').asfloat := dataset.fieldbyname('nds').asinteger; table.fieldbyname('nds_sum').asfloat := dataset.fieldbyname('ndssumma').asfloat; table.fieldbyname('PRICE_REES').asfloat := dataset.fieldbyname('reestrcena').asfloat; if dataset.fieldbyname('datesertif').asdatetime <> 0 then table.fieldbyname('date_rees').asdatetime := dataset.fieldbyname('datesertif').asdatetime; table.fieldbyname('islife').asinteger := tagoods.fieldbyname('isliveneed').asinteger; table.fieldbyname('series').asstring := dataset.fieldbyname('seria').asstring; if dataset.fieldbyname('srok').asdatetime <> 0 then table.fieldbyname('date_valid').asdatetime := dataset.fieldbyname('srok').asdatetime; table.fieldbyname('gtd').asstring := dataset.fieldbyname('tamog').asstring; table.fieldbyname('sert').asstring := dataset.fieldbyname('sertif').asstring; table.fieldbyname('apteka').asstring := subcode; table.post; dataset.next; end; finally dataset.enablecontrols; end; table.close; MailMessage.addAttachment(TAble.tablename); MailMessage.save; finally table.free; taGoods.free; end; finally free end; CreateHintI('Операция завершена, не забудьте доставить почту X-Price'); end.