• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

привязка файла к документу

Автор URI, 19.05.10, 15:57:26

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

URI

 День добрый. Пытаюсь привязать файл к документу (или зарегистрировать ,иначе говоря, в базе данных)  методом
RegistrationOfFile. Файл предварительно записывается в раб. папку пользователя и реально туда
попадает. В параметры метода задаю реквизиты дока, с которым файл вроде должен быть связан:
тип дока, уник. номер, версию. Блокирую док.  Файл железно сохраняется по указанному адресу.
Но отработав, метод в параметре v1 дает ошибку ФАЙЛ НЕ ОБНАРУЖЕН!!!

Set PLM = CreateObject("LoodsmanServerApplication.MainSystem")
    PLM.ConnectToDB Demo, v, v1
    v3 = PLM.CheckOut(PM, Number, "1", 0, v, v1)
    PLM.ConnectToDB Demo, v, v1
    PLM.ConnectToCheckOut CStr(v3), Demo, v, v1
   
    S1 = Number + " ПМ.xls"'имя файла
    S = PapkaC + S1 ' PapkaC- папка пользователя
    TWB.SaveAs S  ' сохранение отчета по пути S-записывается файл и наблюдается там
    PLM.RegistrationOfFile PM, Number, "1", 0, S1, PapkaC, v, v1
   
    PLM.SaveChanges CStr(v3), Demo, v, v1
    PLM.DisconnectCheckOut CStr(v3), Demo, v, v1
    PLM.CheckIn CStr(v3), Demo, v, v1

Убедительно прошу откликнуться!

URI

Нет ответов.
Ну тогда может кто подскажет по методу API - UpFile. Он должен вроде добавлять новый файл к документу.
Есть среди входных параметорв такие:

stFileName -[in] Название файла. Может быть получено из метода методов GetInfoAboutVersion (режим 7), GetLinkedObjectsAndFiles.

stFullFilePath  - [in] Относительный путь к файлу. Это путь к файлу относительно диска из настройки "Буква рабочего диска". Может быть получено из методов GetInfoAboutVersion(режим 7), GetLinkedObjectsAndFiles.

Смотрим GetInfoAboutVersion (реж 7) -  возвращает список файлов, закрепленных за доком. Но файл - то еще не закреплен??????
И еще параметр: vaFileData - [in] Содержимое файла. Массив байт. Значение представляет собой одномерный вариантный массив (тип VT_UI1 (C++), varByte(Delphi)). Я собираюсь прицепить обычный .dot( или .xlt)??????????

Люди! Подскажите! Какими все же методами следует пользоваться для привязки файла к доку?????




Maxagg

Рабочий модуль добавления файла
И еще, есть специальный подраздел, и не удивляйтесь что вам не отвечают

Если незнаете что такое Tversion, подключите модули
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, PICutil,PIClasses,DBClient, DB, ADODB, XPMan, Gauges,
  Grids, Buttons, ExtCtrls,comobj, ComCtrls,shellapi;

type
  TFmmain = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
   st,sel:integer;
   bdname:string;
   folder:string;
  // function Count:double;

    { Public declarations }
  end;

var
  Fmmain: TFmmain;

implementation

{$R *.dfm}
var
ver0,ver1:Tversion;
dat0,dat1:Tclientdataset;

procedure CopyFile(SourceFileName, TargetFileName: string);
var
  S, T : TFileStream;
begin
  S := TFileStream.Create(sourcefilename, fmOpenRead );
  try
    T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
    try
      T.CopyFrom(S, S.Size ) ;
      FileSetDate(T.Handle, FileGetDate(S.Handle));
    finally
      T.Free;
    end;
  finally
    S.Free;
  end;
end;

procedure TFmmain.Button1Click(Sender: TObject);
var
  i,n:integer;
  fnot,fn:string;
  vfolder:Tversion;
  dfolder:Tclientdataset;
  sss1,sss2:string;
begin
//поиск рабочей папки
  vfolder:=Tversion.Create;
  dfolder:=Tclientdataset.create(nil);
  dfolder.Data:=vfolder.GetInfoAboutCurrentUser;
  dfolder.First;
  folder:=dfolder.Fields.fieldbyname('_FILEDIR').AsString;
  dfolder.free;
  vfolder.free;

//открываем файл для добавления
  opendialog1.Execute;
  fn:=opendialog1.Filename;
  for i:=1 to length(fn) do
  if fn='\'then n:=i;
  fnot:=copy(fn,n+1,length(fn));
//Указатель на использование выбранного объекта
  ver0:=Tversion.FromIDVersion(sel);
  sss1:=fmmain.bdname;
  sss2:='';
  checkout(ver0,sss1,sss2);
//закидываем
  CopyFile(Pchar(fn),Pchar(folder+'\'+fnot));
  ver0.RegistrationOfFile(fnot,'');
  checkin(ver0,sss1,sss2);
  ver0.Free
end;

end.

Maxagg

Вот модули