Идиотский кодеюнит, все равно что Нав для рисования в Паинте использовать
У пользую размеченные мной или ключевыми пользователями шаблоны (можно брать хоть регламентные формы из Консультанта) и спец. кодеюнит.
Соглашение с пользователями только о названиях меток для макроподстановок и названиях секций отчета. Дизайн отчета целиком на их совести
Код для вывода листов просчета для инвентаризации:
Header - OnAfterGetRecord()
TemplateMgt.CreateNewSheet("Document No.");
TemplateMgt.CopyPageSetupFromTemplate();
TemplateMgt.CopyNamedRange('HEADER');
TemplateMgt.xlReplaceRange1('#=DocumentNo', "Document No.");
TemplateMgt.xlReplaceRange1('#=DT', FORMAT(CURRENTDATETIME));
TemplateMgt.xlReplaceRange1('#=USERID', USERID);
window.UPDATE(1, "Document No.");
Line - OnPreDataItem()
TemplateMgt.CopyNamedRange('LINE_HEADER');
Line - OnAfterGetRecord()
CALCFIELDS(Barcode, Article);
TemplateMgt.CopyNamedRange('LINE');
TemplateMgt.xlReplaceRange1('#=LineNumber', FORMAT("Line Number"));
TemplateMgt.xlReplaceRange1('#=BinCode', "Bin Code");
TemplateMgt.xlReplaceRange1('#=PSN', "Parent Serial No.");
TemplateMgt.xlReplaceRange1('#=Barcode', Barcode);
TemplateMgt.xlReplaceRange1('#=Description', Description);
TemplateMgt.xlReplaceRange1('#=Article', Article);
TemplateMgt.xlReplaceRange1('#=LotNo', "Lot No.");
TemplateMgt.xlReplaceRange1('#=Project', Project);
TemplateMgt.xlReplaceRange1('#=UOM', UOM);
IF "Qty Per UOM"<>0 THEN
TemplateMgt.xlReplaceRange1('#=QtyPerUOM', FORMAT("Qty Per UOM"))
ELSE
TemplateMgt.xlReplaceRange1('#=QtyPerUOM', '');
Header - OnPostDataItem()
SheetsForDelete.INIT;
SheetsForDelete.Key := 1;
SheetsForDelete.tFld03 := 'ШАБЛОН';
SheetsForDelete.INSERT;
TemplateMgt.DeleteTemplateSheets(SheetsForDelete);
TemplateMgt.FinishBook;
|