АдминистрированиеСеанс.КоличествоВызововВсего

Свойства · CallCountTotal

Тип: Число. Содержит количество вызовов сервера "1С:Предприятия" от имени данного сеанса с момента начала сеанса.

Полное описание, параметры и ограничения

АдминистрированиеСеанс.КоличествоВызововВсего (AdministrationSession.CallCountTotal)

АдминистрированиеСеанс (AdministrationSession)

КоличествоВызововВсего (CallCountTotal)

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

Использование:
Только чтение.
Описание:
Тип: Число.
Содержит количество вызовов сервера "1С:Предприятия" от имени данного сеанса с момента начала сеанса.
Доступность:

Тонкий клиент, сервер, толстый клиент, интеграция.

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

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

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

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

Посчитать среднюю длительность вызова без ошибки в тысячу раз

ДлительностьВызововВсего в локальном API задана в секундах, а ДлительностьВызововЗа5Мин и Текущее — в миллисекундах.

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

Управляемая форма учебного административного пульта. Клиентский обработчик и серверная функция находятся на уровне модуля формы. Только чтение отдельного учебного кластера через ras.

Подготовка

  1. Только отдельный учебный кластер 1С:Предприятия 8.5.1.1343 с уже настроенным ras совместимой версии. Не подключайтесь к рабочему серверу для обучения.

  2. Создайте внешнюю обработку с управляемой формой. Добавьте реквизиты АдресRAS (Строка), ПортRAS (Число), ИмяАгента, ПарольАгента, ИдентификаторКластера, ИмяАдминистратораКластера, ПарольАдминистратораКластера (Строка). Выведите поля на форму; у элементов ввода паролей в свойствах включите Режим пароля (PasswordMode).

  3. АдресRAS относится к машине серверного выполнения кода. Пример для ras на этой же тестовой машине: 127.0.0.1 и порт 1545; подтвердите фактические адрес и порт у администратора.

  4. Используйте законные учётные данные учебного агента и кластера. Оставлять имя и пароль пустыми можно только если соответствующие администраторы не зарегистрированы и среда допускает такую аутентификацию.

  5. При первом запуске оставьте ИдентификаторКластера пустым: код выведет идентификаторы и имена кластеров. Скопируйте идентификатор нужного учебного кластера в поле и повторите.

  6. Вставьте клиентскую процедуру и серверную функцию отдельно на уровне модуля формы. Код не запускает ras и не настраивает учётные записи.

  7. Дополнительно добавьте на форму ИдентификаторУчебнойБазы и ИдентификаторУчебногоСеанса (Строка). Сначала оставьте их пустыми: после выбора учебного кластера получите пары UUID ИБ/сеанса. Выберите сеанс своей отдельной учебной базы, не рабочий.

  8. Административные счётчики меняются во время чтения. Контроль состоит в сравнении с консолью того же учебного кластера, а не в требовании заранее известного числа пользователей, памяти или вызовов.

  9. Создайте команду ПоказатьВызовыСеанса, её кнопку и одноимённый клиентский обработчик из кода.

&НаКлиенте
Процедура ПоказатьВызовыСеанса(Команда)
    Результат = ПоказатьВызовыСеансаНаСервере(АдресRAS, ПортRAS, ИмяАгента, ПарольАгента, ИдентификаторКластера, ИмяАдминистратораКластера, ПарольАдминистратораКластера, ИдентификаторУчебнойБазы, ИдентификаторУчебногоСеанса);
    Сообщить(Результат);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПоказатьВызовыСеансаНаСервере(АдресRAS, ПортRAS, ИмяАгента, ПарольАгента, ИдентификаторКластера, ИмяАдминистратораКластера, ПарольАдминистратораКластера, ИдентификаторУчебнойБазы, ИдентификаторУчебногоСеанса)
    Сервер = Новый АдминистрированиеСервера(АдресRAS, ПортRAS);
    Сервер.ВыполнитьАутентификацию(ПарольАгента, ИмяАгента);
    Кластеры = Сервер.ПолучитьКластеры();
    Если Не ЗначениеЗаполнено(ИдентификаторКластера) Тогда
        Строки = Новый Массив;
        Для Каждого Элемент Из Кластеры Цикл
            Строки.Добавить(Строка(Элемент.ИдентификаторКластера) + " — " + Элемент.Имя);
        КонецЦикла;
        Если Строки.Количество() = 0 Тогда
            Возврат "Кластеров нет";
        КонецЕсли;
        Возврат СтрСоединить(Строки, Символы.ПС);
    КонецЕсли;
    Кластер = Неопределено;
    Для Каждого Элемент Из Кластеры Цикл
        Если НРег(Строка(Элемент.ИдентификаторКластера)) = НРег(СокрЛП(ИдентификаторКластера)) Тогда
            Кластер = Элемент;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Если Кластер = Неопределено Тогда
        ВызватьИсключение "Указанный учебный кластер не найден";
    КонецЕсли;
    Кластер.ВыполнитьАутентификацию(ИмяАдминистратораКластера, ПарольАдминистратораКластера);
    Сеансы = Кластер.ПолучитьСеансы();
    Если Не ЗначениеЗаполнено(ИдентификаторУчебнойБазы) Или Не ЗначениеЗаполнено(ИдентификаторУчебногоСеанса) Тогда
        Список = Новый Массив;
        Для Каждого Кандидат Из Сеансы Цикл
            Список.Добавить(СтрШаблон("ИБ=%1; UUID сеанса=%2; номер=%3; приложение=%4",
                Кандидат.ИдентификаторИнформационнойБазы, Кандидат.ИдентификаторСеанса,
                Кандидат.НомерСеанса, Кандидат.ИмяПриложения));
        КонецЦикла;
        Возврат "Выберите UUID своей учебной ИБ и сеанса:" + Символы.ПС + СтрСоединить(Список, Символы.ПС);
    КонецЕсли;
    Сеанс = Неопределено;
    Для Каждого Кандидат Из Сеансы Цикл
        Если НРег(Строка(Кандидат.ИдентификаторИнформационнойБазы)) = НРег(СокрЛП(ИдентификаторУчебнойБазы))
            И НРег(Строка(Кандидат.ИдентификаторСеанса)) = НРег(СокрЛП(ИдентификаторУчебногоСеанса)) Тогда
            Сеанс = Кандидат;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Если Сеанс = Неопределено Тогда
        Возврат "Выбранный учебный сеанс не найден в этой ИБ; обновите список. Номер сеанса вместо UUID не подходит.";
    КонецЕсли;
    Строки = Новый Массив;
    Строки.Добавить("Вызовов с начала: " + Строка(Сеанс.КоличествоВызововВсего));
    Строки.Добавить("Вызовов за 5 минут: " + Строка(Сеанс.КоличествоВызововЗа5Мин));
    Строки.Добавить("Длительность с начала, с: " + Строка(Сеанс.ДлительностьВызововВсего));
    Строки.Добавить("Длительность за 5 минут, мс: " + Строка(Сеанс.ДлительностьВызововЗа5Мин));
    Строки.Добавить("Текущий вызов, мс: " + Строка(Сеанс.ДлительностьВызововТекущее));
    Если Сеанс.КоличествоВызововВсего > 0 Тогда
        СреднееВсегоМс = Сеанс.ДлительностьВызововВсего * 1000 / Сеанс.КоличествоВызововВсего;
        Строки.Добавить("Среднее с начала, мс: " + Строка(СреднееВсегоМс));
    Иначе
        Строки.Добавить("Среднее с начала не вычислено: вызовов нет");
    КонецЕсли;
    Если Сеанс.КоличествоВызововЗа5Мин > 0 Тогда
        СреднееЗа5МинМс = Сеанс.ДлительностьВызововЗа5Мин / Сеанс.КоличествоВызововЗа5Мин;
        Строки.Добавить("Среднее за 5 минут, мс: " + Строка(СреднееЗа5МинМс));
    КонецЕсли;
    Возврат СтрСоединить(Строки, Символы.ПС);
КонецФункции

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

  1. Аутентифицируемся в явно выбранном учебном кластере; сеанс выбираем одновременно по UUID ИБ и UUID сеанса.

  2. Разделяем накопленный, пятиминутный и текущий показатели.

  3. Для среднего с начала переводим секунды в миллисекунды умножением на 1000.

  4. Пятиминутная длительность уже в миллисекундах: второй раз умножать её нельзя. Перед делением проверяем ненулевой счётчик.

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

  1. При собственных 2 секундах и 4 вызовах формула даёт 500 мс; это проверка единиц, не заранее заданный результат реального сеанса.

  2. Если вызовов нет, деления на ноль нет; при новом снимке показатели могут измениться.

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

Средние длительности выведены в одних единицах с защитой нулевого знаменателя.

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

  1. Это снимок административной диагностики, не замер внутри прикладной транзакции и не команда удаления сеансов.

  2. Снимок и округление административных счётчиков не заменяют профилирование отдельного обработчика.

  3. За 5 минут — окно статистики, а не гарантированная длительность жизни нового сеанса.

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

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

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

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

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