При настройке автоматического REST-сервиса в конфигурации «1С:Колледж Проф 2.1» пользователи сталкиваются с проблемой: при нажатии на кнопку «Загрузить метаданные» обработка длительное время «думает» (около 10 секунд), но в итоге таблица со списком объектов для публикации остается пустой. Эта ситуация указывает на глубинную проблему с механизмом сбора информации о доступных сущностях, которая требует внимательной диагностики.
Первоначальная попытка проанализировать ситуацию с помощью отладчика может столкнуться с неожиданными трудностями. Обработка, отвечающая за загрузку метаданных, использует асинхронные операции, что является распространенной практикой в современных конфигурациях 1С для предотвращения блокировки пользовательского интерфейса при выполнении длительных задач. В нашем случае, это операция Обработки.НастройкаСтандартногоИнтерфейсаOData.ПодготовитьПараметрыНастройкиСоставаСтандартногоИнтерфейсаOData.
Мы выясним, что стандартные точки останова, установленные непосредственно в асинхронной процедуре или функции, могут не срабатывать. Это происходит потому, что после запуска асинхронной операции управление передается на сервер, и она выполняется в отдельном контексте (например, как фоновое задание или в рамках серверного вызова), который не подключен к текущему сеансу отладки по умолчанию. Таким образом, для полноценной диагностики необходимо обеспечить отладку серверного кода.
Чтобы эффективно отладить асинхронные операции и серверный код в 1С, нам потребуется предпринять ряд действий, направленных на синхронизацию выполнения или подключение отладчика к серверу. Это критически важный шаг для понимания внутреннего механизма сбоя.
Рассмотрим несколько подходов, которые позволяют отладить код, выполняющийся асинхронно или на сервере:
debug или настройки в консоли администрирования сервера). После этого в конфигураторе мы подключаемся к отладке на сервере. Это позволяет отлаживать все серверные вызовы и фоновые задания, выполняющиеся на этом сервере.ВыполнитьОбработкуВФоне() или аналогичные механизмы, мы можем временно заменить его прямым вызовом серверных процедур или функций, которые должны были быть запущены асинхронно. Это позволяет нам пройти весь путь выполнения кода шаг за шагом в текущем отладочном сеансе, минуя сложности с отладкой фоновых заданий.После успешной настройки и запуска отладки, мы обнаруживаем, что код, ответственный за сбор сущностей для REST-сервиса, содержит проверку:
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
// Код по сбору сущностей
Иначе
// Сущности не добавляются
КонецЕсли;
Именно эта проверка возвращает Ложь, что является ключевой причиной пустой таблицы метаданных.
После прохождения этапа отладки, мы смогли точно определить, почему метаданные не загружаются. Проблема заключается в том, что проверка ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") возвращает значение Ложь. Это означает, что подсистема с именем «ТехнологияСервиса» либо полностью отсутствует в нашей конфигурации, либо не включена в ее состав должным образом, либо не детектируется функцией ПодсистемаСуществует по какой-то причине.
В отсутствие этой подсистемы, механизм автоматической публикации REST-сервиса не может корректно работать, поскольку он явно ожидает наличия определенных функциональных компонентов, предоставляемых «ТехнологиейСервиса».
Давайте подробнее разберем, что такое подсистема «ТехнологияСервиса» и почему она так важна для работы автоматического REST-сервиса.
Подсистема «ТехнологияСервиса» является ключевым компонентом «Библиотеки технологии сервиса» (БТС), которая, в свою очередь, часто интегрируется в конфигурации 1С как часть «Библиотеки стандартных подсистем» (БСП). Эта библиотека предназначена для реализации сложных механизмов взаимодействия с внешними системами, работы в модели сервиса и обеспечения базовой функциональности, которая может использоваться другими подсистемами. В ее состав входят такие важные компоненты, как «АвтоматизацияПроцессов», «АсинхронноеПолучениеДанных», «БазоваяФункциональность» и другие, которые обеспечивают стабильную и расширяемую работу прикладного решения.
В контексте настройки автоматического REST-сервиса, «ТехнологияСервиса» предоставляет необходимые инструменты и базовую инфраструктуру для корректного сбора, обработки и публикации метаданных объектов конфигурации. Если эта подсистема не включена или отсутствует, то внутренние механизмы 1С, ответственные за формирование интерфейса OData, просто не находят необходимые зависимости и прекращают свою работу, что проявляется в пустой таблице метаданных.
Для устранения этой корневой проблемы нам потребуется выполнить следующие действия:
Проверка наличия и включения подсистемы:
Прежде всего, мы должны открыть конфигурацию в режиме разработчика и проверить дерево подсистем. Убедимся, что подсистема с именем ТехнологияСервиса присутствует в нем. Если она есть, но не включена (например, снят флажок использования или она не привязана к каким-либо объектам конфигурации), нам потребуется ее активировать. Для этого мы можем:
ОбщегоНазначения.ПодсистемаСуществует().Иногда подсистемы могут быть служебными и не отображаться в пользовательском интерфейсе, но при этом они должны быть активны в конфигурации.
Интеграция БСП или «Библиотеки технологии сервиса»:
Если подсистема ТехнологияСервиса полностью отсутствует в вашей конфигурации 1С:Колледж Проф 2.1, это означает, что она не была интегрирована в продукт или была исключена. В таком случае нам потребуется провести полноценную интеграцию соответствующих модулей из Библиотеки стандартных подсистем (БСП) или напрямую из Библиотеки технологии сервиса (БТС). Этот процесс является достаточно сложным и требует глубоких знаний в разработке на платформе 1С. Он включает в себя:
Рекомендуем обращаться к официальной документации по БСП или специалистам для выполнения данной задачи, чтобы избежать нарушения работоспособности всей конфигурации.
Обновление конфигурации:
Возможно, что в текущей версии 1С:Колледж Проф 2.1 подсистема «ТехнологияСервиса» по каким-то причинам неактивна или отсутствует, но в более новых версиях или патчах конфигурации она уже включена или исправлена. Мы должны проверить наличие актуальных обновлений для вашей конфигурации и рассмотреть возможность их установки. Обновления часто содержат исправления и улучшения, которые могут решить подобные проблемы.
После того как мы убедимся, что подсистема ТехнологияСервиса корректно функционирует и проверка ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") начнет возвращать Истина, нам необходимо учесть несколько важных моментов для успешной публикации и работы автоматического REST-сервиса:
Публикация информационной базы на веб-сервере:
Для корректной работы REST-сервиса информационная база должна быть опубликована на веб-сервере (например, IIS или Apache). При публикации критически важно установить флажок «Публиковать стандартный интерфейс OData». Без этой опции платформа не будет генерировать необходимый интерфейс для сторонних систем.
Настройка прав доступа:
Убедимся, что пользователи, от имени которых будет происходить обращение к REST-сервису, имеют достаточные права доступа к тем объектам конфигурации (справочникам, документам, регистрам), которые мы планируем публиковать. Недостаток прав может привести к ошибкам при попытке получения или изменения данных через REST API, даже если метаданные были успешно загружены.
Режим совместимости платформы:
Наша конфигурация работает в режиме совместимости 8.3.14. Важно помнить, что для режимов совместимости с версией платформы 8.3.4 и ниже, все поддерживаемые объекты автоматически становятся доступными через OData. В более поздних режимах совместимости, как в нашем случае, требуется явная настройка состава публикуемых объектов через обработку «Настройка автоматического REST-сервиса».
Следуя этим шагам, мы сможем не только выявить и устранить корневую причину проблемы с незагружаемыми метаданными, но и обеспечить стабильную и безопасную работу автоматического REST-сервиса в нашей конфигурации 1С:Колледж Проф 2.1.