Выгрузка остатков в справочную Фармклиент8
Материал из wiki.standart-n.ru
выгрузка
- Параметр пути для выгрузки файла вместе с именем файла
INSERT INTO PARAMS ( PARENT_ID, PARAM_ID, PARAM_CAPTION, PARAM_TYPE, PARAM_VALUE, AUDIT_ID, IMAGEINDEX, STATUS, INSERTDT, SORTING, PARAM_TYPE_DATA, PACKET) VALUES ( -30, 'PHARMCLIENT_EXPORT_PATH', 'Путь для экспорта данных в ФармКлиент8', 1, NULL, 0, NULL, 0, '9-MAR-2016 15:04:03.215', NULL, NULL, 27373);
- ТМС выгрузки
INSERT INTO GROUPS ( PARENT_ID, CAPTION, GROUPTABLE, STATUS, INSERTDT, SYSTEMFLAG, DESCRIPTION, IMAGEINDEX, DATA, COLOR, SORTING, BASE_AGENT_ID, SID) VALUES ( -400, 'Выгрузить данные в ФармКлиент', 'TMS', 0, '24-JAN-2014 14:15:09', 0, NULL, -1, NULL, NULL, NULL, 0, NULL);
- содержимое ТМС
uses
Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, Messages, SysUtils,
ToolWin, ImgList, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid, StdCtrls,
unMain,DB, IBQuery, IBDatabase, unDM, DBTables, cfdxUtils, Menus, System,
Buttons, ExtCtrls, StdCtrls, cfSelectEdit, Math,
gb_table, Grids, ClipBrd, DBGrids, unFrameCustomDict,
cfWindows;
var
q: TIBQuery;
katalog:string;
Xml: TStringList;
db: TIbDatabase;
begin
q:=TIBQuery.create(nil);
db:=dm.FindComponent('db');
q.Database:=db;
//q:=dm.TempQuery(nil);
q.Active:=false;
q.SQL.text:='select PARAM_VALUE from PARAMS where PARAM_ID=''PHARMCLIENT_EXPORT_PATH''';
q.Active:=true;
katalog:=q.FieldByName('PARAM_VALUE').AsString;//'C:\Example1.xml' q_update.FieldByName('id').AsString
try
if katalog <> '' then
begin
Xml := TStringList.Create;
Xml.Add ('<?xml version="1.0" encoding="windows-1251"?>');
Xml.Add ('<ДокументПрайс Идентификатор="Пусто">');
Xml.Add (' <Заголовок>');
Xml.Add (' <Логин>HILE10</Логин>');
Xml.Add (' <Пароль>TvlBkt</Пароль>');
Xml.Add (' <Версия_Клиента>Лекарь(Емлина, 10)</Версия_Клиента>');
//Xml.Add (' <Серийный_Номер>E01BEB73</Серийный_Номер>');
Xml.Add (' </Заголовок>');
Xml.Add ('<ПрайсЛист>');
Xml.Add (' <Аптека Код="20751">');
q.Active:=false;
q.SQL.text:='select wb.part_id,wb.price,cast(wb.quant as integer) as quant,wb.godendo,wb.barcode,wb.sname,wb.sizg from vw_warebase wb where wb.quant > 0.001;';
q.Active:=true;
while not q.eof do
begin
Xml.Add (' <ТоварнаяПозиция>');
Xml.Add (' <КодТовара>'+q.FieldByName('part_id').AsString+'</КодТовара>');
Xml.Add (' <Цена>'+q.FieldByName('price').AsString+'</Цена>');
Xml.Add (' <Количество>'+q.FieldByName('quant').AsString+'</Количество> ');
Xml.Add (' <СрокГодности>'+q.FieldByName('godendo').AsString+'</СрокГодности>');
Xml.Add (' <EAN13>'+q.FieldByName('barcode').AsString+'</EAN13>');
Xml.Add (' <ИмяПреп>'+q.FieldByName('sname').AsString+'</ИмяПреп>');
Xml.Add (' <Производитель>'+StringReplace(StringReplace(q.FieldByName('sizg').AsString,'<','<',1),'>','>',1)+'</Производитель>');
Xml.Add (' </ТоварнаяПозиция>');
q.next;
end;
Xml.Add (' </Аптека>');
Xml.Add ('</ПрайсЛист>');
Xml.Add ('</ДокументПрайс>');
Xml.SaveToFile (katalog);
end;
finally
Xml.Free;
ShowMessage('Готово!');
end;
end;