ЦУП является удобным инструментом для анализа проблемных ситуаций в работе 1С. Допустим, на сервере по непонятным причинам начинает расти база tempdb или загружается процессор на 100%. Запустив ЦУП, мы бы смогли узнать, какие запросы из какого контекста каким пользователем были запущены, что привело к нежелательной ситуации.
Появляется естественное желание - запускать ЦУП автоматически в зависимости от внешних факторов, например, если процессор поднялся выше 90% на полчаса. Запускать ЦУП через COM, как я понял, невозможно, т.к. весь функциональный код находится в модулях толстого клиента.
1. Запуск ЦУП автоматически
Мы всегда можем запустить ЦУП по командной строке, передав в параметры название сценария. В общую форму Монитор, которая открывается при запуске ЦУП, встраиваем в процедуру ПриОткрытии считываение наименования сценария из параметров запуска 1С. Сценарий нашли, теперь запускаем его.
Теперь рассмотрим доработку формы РедакторСценария. В этой форме есть таблица, в таблице колонка Параметры, которая имеет составной тип данных. Добавляем к типу данных ссылку на справочник "Настройка подключения к информационным базам" и нетиповой справочник "Алгоритмы". В результате можем сформировать такой сценарий:
Пример кода алгоритмов Завершить сценарий:
Структура = П_ОбщийМодуль.ПолучитьСтруктуруЗначенийИзСтроки(ПараметрЗапуска, "=", ";");
Если Структура.Свойство("ФайлПоЗавершениюДолженБытьРавенИстина") = Истина Тогда
ЗначениеВФайл(Структура["ФайлПоЗавершениюДолженБытьРавенИстина"], Истина);
КонецЕсли;
ЗавершитьРаботуСистемы(Ложь, Ложь);
Т.е. при завершении работы ЦУП делает пометку в файле. Это нужно для того, чтобы ЦКК, который будет запускать ЦУП, не запускал ЦУП в очередной раз, не убедившись, что прошлый запуск ЦУП был успешным.
Доработки на стороне ЦУП можно посмотреть в приложенном к статье файле.
2. Автоматический запуск ЦУП из ЦКК
ЦКК имеет встроенные механизмы добавления алгоритмов, которые отрабатывают в тех или иных случаях. Но из-за нехватки знаний и документации, встроил свою подсистему, которая состоит из справочника Алгоритмы и документа ВыполнениеАлгоритмов. Также создал регистр сведений, который идентичен регистру Замеры производительности, отличие заключается в том, что мой регистр периодический, т.е. в нём хранится вся история счетчиков производтельности, собираемая ЦКК. При записи типового регистра, данные попадают в нетиповой регистр. При записи нетипового регистра срабатывают алгоритмы, которые определяют, запускать ли ЦУП или нет.
Подсистема алгоритмов и пример заполнения в приложенном файле. Подробно изменения в ЦКК не описаны, т.к. эта часть статьи является второстепенной.
К статье прикладываю файл, в нём конфигурация измененных и добавленных объектов ЦУП и база измененных и добавленных объектов ЦКК. ЦКК выкладываю dt, чтобы можно было посмотреть примеры заполнения алгоритмов. Переносить в свои конфигурации руками.
Результат
В ЦКК настраиваем контролируемые события, например, определенные сочетания значений счётчиков производительности. При срабатывании события ЦКК запускает ЦУП с определённым сценарием (наименование сценария можно генерировать в самом ЦКК). ЦУП собирает данные и сам выключается через заданное время. При этом мы можем контролировать, чтобы ЦУП не запускался несколько раз в одном событии или при неуспешном прошлом запуске. Открыв ЦУП мы видим собранные данные за все периоды. в ЦКК ведётся протокол запуска ЦУП, история счётчиков и т.д.