AddEx(Assembly: IMetabaseObjectDescriptor, Method: PamAssemblyMethod): Integer;
Assembly. Описание объекта среды разработки, который необходимо включить в список объектов, используемых в регламентном отчёте;
Method. Способ подключения объекта среды разработки к регламентному отчёту.
Метод AddEx осуществляет подключение объекта среды разработки к регламентному отчёту, входящему в состав формы ввода, и возвращает индекс подключённого объекта в списке.
В список доступных объектов входят все модули, формы, сборки репозитория.
Если при построении формы ввода не планируется обработка событий таблицы, то используйте значение перечисления PamAssemblyMethod.OnlyReport в качестве значения параметра Method. За счёт данного способа подключения объекта среды разработки к регламентному отчёту сокращается время открытия формы ввода.
Для выполнения примера в репозитории предполагается наличие регламентного отчёта с идентификатором REPORT и модуля с идентификатором MODULE. Модуль должен являться обработчиком событий.
Добавьте ссылки на системные сборки: Metabase, Report.
Sub UserProc;
Var
MB: IMetabase;
Report: IPrxReport;
DescrHandle: IMetabaseObjectDescriptor;
Assemblies: IPrxAssemblies;
i: Integer;
isFinded: boolean = False;
Begin
MB := MetabaseClass.Active;
// Получим регламентный отчёт
Report := MB.ItemById("REPORT").Edit As IPrxReport;
// Получим модуль,
используемый в качестве обработчика событий
DescrHandle := MB.ItemById("MODULE");
// Получим коллекцию объектов среды разработки, подключённых к регламентному отчёту
Assemblies := Report.Assemblies;
// Проверим, какие объекты среды разработки подключены только к регламентному отчёту (не к таблице)
For i := Assemblies.Count - 1 To 0 Step -1 Do
If Assemblies.Item(i).Key = DescrHandle.Key Then
If Assemblies.Method(i) = PamAssemblyMethod.OnlyReport Then
isFinded := True;
Else
// Если объект подключён к отчёту и таблице, то удалим его
из списка
Assemblies.Remove(i);
End If;
End If;
End For;
If Not isFinded Then
// Подключим модуль только к регламентному отчёту
Assemblies.AddEx(DescrHandle, PamAssemblyMethod.OnlyReport);
// Укажем, что модуль является обработчиком событий
Assemblies.EventsAssembly := Assemblies.Count-1;
Assemblies.EventsClass := "EventsClass";
End If;
// Сохраним изменения
(Report As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера к регламентному отчёту будет подключён модуль в качестве обработчика событий. Если к регламентному отчёту и таблице ранее были подключены объекты среды разработки, то они будут удалены из списка подключённых объектов.
См. также: