Проверить происхождение объекта и границы чтения модуля

Учебные задачи

В пустой учебной конфигурации свой клиент не добавлен расширением. Модуль в метаданных возвращает Неопределено и не является способом выгрузить исходный BSL.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Только отдельная пустая конфигурация Учебная85 на платформе 8.5.1.1343, без расширений. Не добавляйте клиент в рабочую КА2/УНФ/УТ/БП для этих упражнений.

  2. В Конфигураторе создайте Метаданные → WebSocket-клиенты → УчебныйКлиент. Синоним: Учебный канал сообщений. Комментарий: Настройки для чтения, соединение не выполняется.

  3. Обязательно выключите Подключать автоматически до обновления базы и запуска Предприятия. URL сервера: wss://example.invalid/training; таймаут 15 секунд. Использовать аутентификацию ОС и Использовать прокси ОС выключены. Пользователь и пароль пусты.

  4. В дополнительных заголовках задайте только X-Training-Mode = SyntaxGuide. Не добавляйте Authorization, Cookie или настоящий токен. Модуль клиента оставьте пустым. Обновите конфигурацию базы данных.

  5. Каждый фрагмент выполняется отдельно на сервере учебной базы. Он читает описание уже подготовленного объекта; создание сетевого WebSocketКлиент и соединение не вызываются.

Описание = Метаданные.WebSocketКлиенты.Найти("УчебныйКлиент");
Если Описание = Неопределено Тогда
    ВызватьИсключение "Сначала подготовьте собственный WebSocket-клиент в Конфигураторе";
КонецЕсли;
Если Описание.ПодключатьАвтоматически Тогда
    ВызватьИсключение "Для этого урока автоподключение должно быть выключено до запуска базы";
КонецЕсли;
Варианты = Метаданные.СвойстваОбъектов;
Сообщить(Описание.ПринадлежностьОбъекта = Варианты.ПринадлежностьОбъекта.Собственный);
Сообщить(Не Описание.ЕстьИзмененияРасширениямиКонфигурации());
Сообщить(Описание.РасширениеКонфигурации() = Неопределено);
Сообщить(Описание.Модуль = Неопределено);
Сообщить("Тип ссылки заимствованного объекта: " + Строка(ТипЗнч(Описание.ОбъектРасширяемойКонфигурации)));
Сообщить("Стандартных описаний: " + Строка(Описание.СтандартныеРеквизиты.Количество()));

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

  1. Собственный сравнивается с типизированным системным значением из СвойстваОбъектов, не с русской строкой.

  2. В подготовке нет расширений: ожидаем отсутствие изменений и описания расширения-источника.

  3. ОбъектРасширяемойКонфигурации нужен для заимствования. Его тип выводится диагностически; не объявляем неизвестный GUID ссылкой живого WebSocket-соединения.

  4. Модуль по справке имеет тип Неопределено. Даже непустой BSL в Конфигураторе нельзя получить чтением этого свойства.

  5. СтандартныеРеквизиты содержит описания стандартных полей, не данные переданных сообщений. Их количество не задаём выдуманной константой.

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

  1. Четыре сравнения Истина в собственной подготовке без расширений.

  2. Тип идентификатора и количество стандартных описаний диагностические; ни исходный модуль, ни сетевые сообщения не выгружаются.

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

Разобраны происхождение объекта и ограничения метаданных для чтения исходников.

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

  1. В конфигурации с расширениями значения могут отличаться; сначала изучите происхождение объекта.

  2. Неопределено у Модуль не доказывает отсутствие обработчиков в Конфигураторе.

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

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

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

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

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