Тип: ОписаниеТипов. Перечень типов прикладных объектов, на события которых осуществляется подписка.
Полное описание, параметры и ограничения
ОбъектМетаданных: ПодпискаНаСобытие.Источник (MetadataObject: EventSubscription.Source)
ОбъектМетаданных: ПодпискаНаСобытие (MetadataObject: EventSubscription)
Источник (Source)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: ОписаниеТипов.
Перечень типов прикладных объектов, на события которых осуществляется подписка.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Найти подписки, которые могут участвовать в записи объекта
Строим карту источник → событие → обработчик для чтения кода. Подписки не выполняем и не отключаем.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Для Каждого Подписка Из Метаданные.ПодпискиНаСобытия Цикл
Сообщить(СтрШаблон("%1 (%2)", Подписка.Имя, Подписка.Синоним));
Сообщить(Подписка.Комментарий);
Сообщить("Событие: " + Подписка.Событие);
Сообщить("Обработчик: " + Подписка.Обработчик);
Для Каждого ТипИсточника Из Подписка.Источник.Типы() Цикл
Сообщить("Источник: " + Строка(ТипИсточника));
КонецЦикла;
КонецЦикла;
Сообщить(СтрШаблон("Подписок: %1", Метаданные.ПодпискиНаСобытия.Количество()));Разбор по шагам
Источник — ОписаниеТипов: одна подписка может относиться к нескольким типам объектов.
Событие показывает момент вызова, Обработчик — имя процедуры, которую затем нужно найти в Конфигураторе.
Этот список помогает составить маршрут исследования, но сам по себе не объясняет условия внутри процедур.
Как проверить результат
Для выбранной подписки в Конфигураторе совпадают источник, событие и обработчик.
При нескольких типах источника выводится каждый тип, а не только первый.
В коде нет записи объекта, поэтому подписки намеренно не срабатывают.
Ожидаемый результат
Получена карта подписок для последующего чтения обработчиков перед изменением логики записи.
На что обратить внимание
Порядок элементов метаданных не используйте как доказательство порядка выполнения подписок.
Наличие обработчика не доказывает, что он изменяет каждый объект: внутри могут быть проверки и ранний выход.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Найти, кто обрабатывает запись организации
Реальная подписка обслуживает Организации и ПодразделенияОрганизаций и вызывает экспортную процедуру серверного модуля.
Где и как запускать
Полный серверный модуль изолированной учебной копии КА2 Progress 2.5.20.75; только чтение.
Подготовка
Отдельная учебная копия КА2 Progress 2.5.20.75 из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, платформа 8.5.1.1343. Создайте серверный общий модуль УчебныеКонтрактыОбработчиков.
Вставьте полный модуль одного урока и вызовите УчебныеКонтрактыОбработчиков.ВыполнитьПример() из своей учебной серверной команды.
Источники: Roles\ПолныеПрава.xml; EventSubscriptions\АктуализироватьСтруктуруПредприятия.xml; ScheduledJobs\АнализДанныхДляОповещенийКлиентам.xml и соответствующие CommonModules.
Код только читает метаданные и признаки прав. Он не назначает роли, не меняет параметры сеанса, не записывает организацию и не вызывает обработчик подписки или задания.
Учебная копия должна быть изолирована от рабочих фоновых заданий и внешних обменов её обычными средствами администрирования. Этот пример не выключает и не включает задания за пользователя.
Диагностика расширений и доступных прав зависит от активной базы и пользователя. Не подгоняйте права рабочей базы под ожидаемые булевы результаты.
Процедура ВыполнитьПример() Экспорт
Подписка = Метаданные.ПодпискиНаСобытия.Найти("АктуализироватьСтруктуруПредприятия");
Если Подписка = Неопределено Тогда
ВызватьИсключение "Нет подтверждённой подписки";
КонецЕсли;
Сообщить(Подписка.Имя = "АктуализироватьСтруктуруПредприятия");
Сообщить(Подписка.Источник.СодержитТип(Тип("СправочникОбъект.Организации")));
Сообщить(Подписка.Источник.СодержитТип(Тип("СправочникОбъект.ПодразделенияОрганизаций")));
Сообщить(НЕ Подписка.Источник.СодержитТип(Тип("СправочникОбъект.Номенклатура")));
Сообщить(Подписка.Событие = "ПриЗаписи");
Части = СтрРазделить(Подписка.Обработчик, ".");
Если Части.Количество() < 2 Тогда
ВызватьИсключение "Обработчик не содержит имя модуля и процедуры";
КонецЕсли;
ИмяМодуля = Части[Части.Количество() - 2];
ИмяПроцедуры = Части[Части.Количество() - 1];
Сообщить(ИмяМодуля = "ОрганизационнаяСтруктураСобытия");
Сообщить(ИмяПроцедуры = "ОбновитьЭлементСтруктурыПредприятия");
Модуль = Метаданные.ОбщиеМодули.Найти(ИмяМодуля);
Если Модуль = Неопределено Тогда
ВызватьИсключение "Не найден модуль подтверждённого обработчика";
КонецЕсли;
Сообщить(Модуль.Сервер);
Сообщить("В исходном модуле процедура принимает Источник и Отказ. Здесь она НЕ вызывается.");
Сообщить(Подписка.Синоним);
Сообщить(Подписка.Комментарий);
Сообщить(Подписка.ПолноеИмя());
Сообщить(Подписка.Представление());
Сообщить(Подписка.ПринадлежностьОбъекта);
Сообщить(ТипЗнч(Подписка.ОбъектРасширяемойКонфигурации));
Сообщить(Подписка.ЕстьИзмененияРасширениямиКонфигурации());
Сообщить(ТипЗнч(Подписка.РасширениеКонфигурации()));
Сообщить(Подписка.Родитель() = Метаданные);
КонецПроцедурыРазбор по шагам
Найти подписку АктуализироватьСтруктуруПредприятия по имени.
Источник — ОписаниеТипов объектов двух справочников. Ссылка на организацию и объект организации — разные типы; для события здесь требуется объект.
Прочитать Событие и разобрать Обработчик как имя метода. Префикс представления допускается, модуль и процедура берутся последними двумя частями.
Найти метаданные модуля и проверить Сервер. По исходнику процедура принимает Источник, Отказ и имеет Экспорт; для демонстрации запись организации не нужна.
Вывести сведения подписки и расширений. Код ничего не записывает и подписку не запускает.
Как проверить результат
Девять фиксированных проверок дают Истина; остальное диагностическое.
В исходном XML Event = OnWrite, а в языке 1С событие ПриЗаписи. Обработчик подтверждён в CommonModules/ОрганизационнаяСтруктураСобытия/Ext/Module.bsl.
Ожидаемый результат
Воспроизводимая трассировка от метаданных события до фактического места кода.
На что обратить внимание
Не вызывайте обработчик вручную с вымышленным Источник: он изменяет структуру предприятия.
Событие ПриЗаписи не равно ПередЗаписью или ПриПроведении.
Чтение подписки не доказывает, что она успешно отработала: для этого нужен отдельный тест записи в копии базы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.