ОбъектМетаданных: ПодпискаНаСобытие.РасширениеКонфигурации

Методы · ConfigurationExtension

Получает объект описания расширения конфигурации, с помощью которого объект метаданных был добавлен.

Синтаксис

РасширениеКонфигурации()
Полное описание, параметры и ограничения

ОбъектМетаданных: ПодпискаНаСобытие.РасширениеКонфигурации (MetadataObject: EventSubscription.ConfigurationExtension)

ОбъектМетаданных: ПодпискаНаСобытие (MetadataObject: EventSubscription)

РасширениеКонфигурации (ConfigurationExtension)

Доступен, начиная с версии 8.3.8.

Синтаксис:
РасширениеКонфигурации()
Возвращаемое значение:
Тип: РасширениеКонфигурации, Неопределено.
Неопределено - объект относится к основной конфигурации.
Описание:

Получает объект описания расширения конфигурации, с помощью которого объект метаданных был добавлен.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.3.8.

Методическая информация

Практические примеры

Найти, кто обрабатывает запись организации

Реальная подписка обслуживает Организации и ПодразделенияОрганизаций и вызывает экспортную процедуру серверного модуля.

Где и как запускать

Полный серверный модуль изолированной учебной копии КА2 Progress 2.5.20.75; только чтение.

Подготовка

  1. Отдельная учебная копия КА2 Progress 2.5.20.75 из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, платформа 8.5.1.1343. Создайте серверный общий модуль УчебныеКонтрактыОбработчиков.

  2. Вставьте полный модуль одного урока и вызовите УчебныеКонтрактыОбработчиков.ВыполнитьПример() из своей учебной серверной команды.

  3. Источники: Roles\ПолныеПрава.xml; EventSubscriptions\АктуализироватьСтруктуруПредприятия.xml; ScheduledJobs\АнализДанныхДляОповещенийКлиентам.xml и соответствующие CommonModules.

  4. Код только читает метаданные и признаки прав. Он не назначает роли, не меняет параметры сеанса, не записывает организацию и не вызывает обработчик подписки или задания.

  5. Учебная копия должна быть изолирована от рабочих фоновых заданий и внешних обменов её обычными средствами администрирования. Этот пример не выключает и не включает задания за пользователя.

  6. Диагностика расширений и доступных прав зависит от активной базы и пользователя. Не подгоняйте права рабочей базы под ожидаемые булевы результаты.

Процедура ВыполнитьПример() Экспорт
    Подписка = Метаданные.ПодпискиНаСобытия.Найти("АктуализироватьСтруктуруПредприятия");
    Если Подписка = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённой подписки";
    КонецЕсли;
    Сообщить(Подписка.Имя = "АктуализироватьСтруктуруПредприятия");
    Сообщить(Подписка.Источник.СодержитТип(Тип("СправочникОбъект.Организации")));
    Сообщить(Подписка.Источник.СодержитТип(Тип("СправочникОбъект.ПодразделенияОрганизаций")));
    Сообщить(НЕ Подписка.Источник.СодержитТип(Тип("СправочникОбъект.Номенклатура")));
    Сообщить(Подписка.Событие = "ПриЗаписи");
    Части = СтрРазделить(Подписка.Обработчик, ".");
    Если Части.Количество() < 2 Тогда
        ВызватьИсключение "Обработчик не содержит имя модуля и процедуры";
    КонецЕсли;
    ИмяМодуля = Части[Части.Количество() - 2];
    ИмяПроцедуры = Части[Части.Количество() - 1];
    Сообщить(ИмяМодуля = "ОрганизационнаяСтруктураСобытия");
    Сообщить(ИмяПроцедуры = "ОбновитьЭлементСтруктурыПредприятия");
    Модуль = Метаданные.ОбщиеМодули.Найти(ИмяМодуля);
    Если Модуль = Неопределено Тогда
        ВызватьИсключение "Не найден модуль подтверждённого обработчика";
    КонецЕсли;
    Сообщить(Модуль.Сервер);
    Сообщить("В исходном модуле процедура принимает Источник и Отказ. Здесь она НЕ вызывается.");
    Сообщить(Подписка.Синоним);
    Сообщить(Подписка.Комментарий);
    Сообщить(Подписка.ПолноеИмя());
    Сообщить(Подписка.Представление());
    Сообщить(Подписка.ПринадлежностьОбъекта);
    Сообщить(ТипЗнч(Подписка.ОбъектРасширяемойКонфигурации));
    Сообщить(Подписка.ЕстьИзмененияРасширениямиКонфигурации());
    Сообщить(ТипЗнч(Подписка.РасширениеКонфигурации()));
    Сообщить(Подписка.Родитель() = Метаданные);

КонецПроцедуры

Разбор по шагам

  1. Найти подписку АктуализироватьСтруктуруПредприятия по имени.

  2. Источник — ОписаниеТипов объектов двух справочников. Ссылка на организацию и объект организации — разные типы; для события здесь требуется объект.

  3. Прочитать Событие и разобрать Обработчик как имя метода. Префикс представления допускается, модуль и процедура берутся последними двумя частями.

  4. Найти метаданные модуля и проверить Сервер. По исходнику процедура принимает Источник, Отказ и имеет Экспорт; для демонстрации запись организации не нужна.

  5. Вывести сведения подписки и расширений. Код ничего не записывает и подписку не запускает.

Как проверить результат

  1. Девять фиксированных проверок дают Истина; остальное диагностическое.

  2. В исходном XML Event = OnWrite, а в языке 1С событие ПриЗаписи. Обработчик подтверждён в CommonModules/ОрганизационнаяСтруктураСобытия/Ext/Module.bsl.

Ожидаемый результат

Воспроизводимая трассировка от метаданных события до фактического места кода.

На что обратить внимание

  1. Не вызывайте обработчик вручную с вымышленным Источник: он изменяет структуру предприятия.

  2. Событие ПриЗаписи не равно ПередЗаписью или ПриПроведении.

  3. Чтение подписки не доказывает, что она успешно отработала: для этого нужен отдельный тест записи в копии базы.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.