-- Шаблон создан мастером бланков
-- 30.10.2014 11:59:19
--
БланкСШаблоном "Список документов";

var ДН:D;
var ДК:D;

var УпрЗагл:I;
var Загл[]:S;

var Упр:I;
var пп[]:i=$;
var Наим[]:S;
var Ном[]:S;
var Дат[]:D;
var Сум[]:N;
var Содерж[]:S;
var Rec[]:Record;
var Crd[]:S;
var Bln[]:S;
var СчУсл[]:S;
var АнУсл[]:S;
var Key[]:S;

var ВсегоСум:N=SumOfArray(Сум,Упр);

var Buf[]:s;

Proc Очистить;
 ClearVariable(Раб.Вспом.Список_Док.ДН);
 ClearVariable(Раб.Вспом.Список_Док.ДК);
 ClearVariable(Раб.Вспом.Список_Док.УпрЗагл);
 ClearVariable(Раб.Вспом.Список_Док.Загл);
 ClearVariable(Раб.Вспом.Список_Док.Упр);
 ClearVariable(Раб.Вспом.Список_Док.Наим);
 ClearVariable(Раб.Вспом.Список_Док.Ном);
 ClearVariable(Раб.Вспом.Список_Док.Дат);
 ClearVariable(Раб.Вспом.Список_Док.Сум);
 ClearVariable(Раб.Вспом.Список_Док.Содерж);
 ClearVariable(Раб.Вспом.Список_Док.Rec);
 ClearVariable(Раб.Вспом.Список_Док.Crd);
 ClearVariable(Раб.Вспом.Список_Док.Bln);
 ClearVariable(Раб.Вспом.Список_Док.СчУсл);
 ClearVariable(Раб.Вспом.Список_Док.АнУсл);
 ClearVariable(Раб.Вспом.Список_Док.Key);
end;

Proc sendkeys(cmd1:s); -- "_"= shift; "%"=Alt; "^"=Ctrl
 var Wsh:AutoObject;
  Wsh=CreateAutoObject("WScript.Shell");
  try
    Wsh.sendkeys(cmd1);
    ClearVariable(Wsh);
  except
    ClearVariable(Wsh);
  end;
end;

Func ДобавитьЗагл (Val:S):I;
var z:i;
 Раб.Вспом.Список_Док.УпрЗагл=Раб.Вспом.Список_Док.УпрЗагл+1;
 InsertInArray(Раб.Вспом.Список_Док.Загл,Раб.Вспом.Список_Док.УпрЗагл,Val);
 ^Раб.Вспом.Список_Док.УпрЗагл;
end;

Func Добавить (Key_:S; Наим_:S; Ном_:S; Дат_:D; Сум_:N; Содерж_:S; Rec_:Record; Crd_:S; Bln_:S; СчУсл_:S; АнУсл_:S):I;
var z:i;
 z=SearchInArray(Раб.Вспом.Список_Док.Key,Key_,True);
 if z=-1:
    Раб.Вспом.Список_Док.Упр=Раб.Вспом.Список_Док.Упр+1;
    z=InsertInArraySort(Раб.Вспом.Список_Док.Key,Key_);
    InsertInArray(Раб.Вспом.Список_Док.Наим,z,Наим_);
    InsertInArray(Раб.Вспом.Список_Док.Ном,z,Ном_);
    InsertInArray(Раб.Вспом.Список_Док.Дат,z,Дат_);
    InsertInArray(Раб.Вспом.Список_Док.Сум,z,Сум_);
    InsertInArray(Раб.Вспом.Список_Док.Содерж,z,Содерж_);
    InsertInArray(Раб.Вспом.Список_Док.Rec,z,Rec_);
    InsertInArray(Раб.Вспом.Список_Док.Crd,z,Crd_);
    InsertInArray(Раб.Вспом.Список_Док.Bln,z,Bln_);
    InsertInArray(Раб.Вспом.Список_Док.СчУсл,z,СчУсл_);
    InsertInArray(Раб.Вспом.Список_Док.АнУсл,z,АнУсл_);
   else
    Раб.Вспом.Список_Док.Сум[z]=Раб.Вспом.Список_Док.Сум[z]+Сум_;
 fi;
 ^z;
end;

Proc ПолучСписокДок (aДН:D; aДК:D; aСчУсл:S; aАнУсл:S);
var t:i;
var Crd,tmp:S;
var tДат:D;
var Rec: Record;
 ShowProgress(aДК-aДН,"Построение списка документов....");
 Try
  for transaction t=aСчУсл+"{"+aАнУсл+"}",aДН,aДК do
   tДат=TransDate(t);
   ProgressPos((aДК-aДН)-(aДК-tДат));
   Crd=Up(TransCardFile(t));
   Rec=TransRecord(t);
   if Rec=nil:
      Раб.Вспом.Список_Док.Добавить(Раб.Формат.ДатаСтр(tДат,14)+"# #"+Str16(t),"Журнал хоз. операций","Проводка №"+Str(t),tДат,TransSum(t),TransComment(t),IntegerToRecord(t),"","",aСчУсл,aАнУсл);
     else
      tmp=Раб.ИмяПолеКарт.ЗначПоляС(Crd,"Док",Rec);
      if tmp="": tmp=Раб.ИмяПолеКарт.ИмяДокумента(Crd); fi;
      Раб.Вспом.Список_Док.Добавить(Раб.Формат.ДатаСтр(tДат,14)+"#"+Crd+"#"+Str16(RecordToInteger(Rec)),tmp,Раб.ИмяПолеКарт.ЗначПоляС(Crd,"Номер",Rec),Раб.ИмяПолеКарт.ЗначПоляД(Crd,"Дата",Rec),TransSum(t),TransComment(t),Rec,Crd,"",aСчУсл,Раб.Бюджет2005.Объединить(aАнУсл,"ДНФАID."+Str16(RecordToInteger(Rec)),"&"));
   fi;
  od;
  ProgressPos(aДК-aДН);
 Finally
  CloseProgress;
 end;
end;

Func onEnter(FieldName: String; Iter: Integer): logical;
var n:i;
var Flag:L;
-- if not bln[Iter]="" or not crd[Iter]="":
 if not crd[Iter]="":
    ClearVariable(Buf);
    Buf[1]="Открыть документ";
    Buf[2]="Отчет по проводкам";
    n=Alternate("Выбор режима",Buf,-1,1,12);
   else
    n=2;
 fi;
 if not bln[Iter]="" and n=1: OpenBlank(bln[Iter],True,Rec[Iter]);
   |not crd[Iter]="" and n=1: OpenCardFile(crd[Iter],"",Rec[Iter]);
   |not bln[Iter]="" and n=2: Report('"'+PlanVar("Общие")+'\Отчеты\Служебные отчеты.lst"."001"',ДН,ДК,СчУсл[Iter],АнУсл[Iter]);
   |not crd[Iter]="" and n=2: Report('"'+PlanVar("Общие")+'\Отчеты\Служебные отчеты.lst"."001"',ДН,ДК,СчУсл[Iter],АнУсл[Iter]);
   |RecordToInteger(Rec[Iter])=-1: Report('"'+PlanVar("Общие")+'\Отчеты\Служебные отчеты.lst"."001"',ДН,ДК,СчУсл[Iter],АнУсл[Iter]);
   |not n=0: TransOpenJur(RecordToInteger(Rec[Iter]));
 fi;
 Return False;
end;


Proc btnПечать_OnClick(Sender: String);
 SendKeys("{F7}");
-- Print("","","",False,0,0,True);
end;

Proc btnZero_OnClick(Sender: String);
var Iter:I;
 Iter=Упр;
 While not Iter=0 do
  if Round(Сум[Iter],2)=0:
     DeleteFrame(Упр,Iter);
  fi;
  Iter=Iter-1;
 od;
end;


Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;


Конец
