Тип: Число. Максимальное время нахождения в пуле неиспользуемого соединения с информационной базой. После истечения этого времени неиспользуемое соединение освобождается.
Полное описание, параметры и ограничения
Менеджер COM-соединений.PoolTimeout (COM connector.PoolTimeout)
Менеджер COM-соединений (COM connector)
PoolTimeout (PoolTimeout)
Доступен, начиная с версии 8.1.
Использование:
Только чтение.
Описание:
Тип: Число.
Максимальное время нахождения в пуле неиспользуемого соединения с информационной базой. После истечения этого времени неиспользуемое соединение освобождается.
Доступность:
Интеграция.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Локальный паспорт COM-соединителя: диапазон портов и числовой план без подключения
Создать свой локальный V85.COMConnector, прочитать семь настоящих readonly-чисел, вычислить ширину диапазона портов, сравнить порты и собственный план 4 с числовыми ограничениями. Показать полный строковый паспорт, не подключаясь к базе или кластеру и не изменяя параметры.
Где и как запускать
Клиент Windows: свой неглобальный непривилегированный ЛокальныйПаспортCOM85, Клиент (управляемое приложение). Весь основной блок &НаКлиенте; допустим только толстый управляемый клиент. Настоящий COMОбъект создаётся локально и остаётся здесь.
Подготовка
Будущий ручной опыт: своя новая маленькая пустая учебная конфигурация на 8.5.1.1343, Windows и толстый управляемый клиент. В свойствах своей конфигурации: Основной режим запуска=Управляемое приложение; Режим совместимости=Не использовать. Не рабочая УТ, КА, УНФ или БП. Код создаёт один свой локальный COM-соединитель и читает только его параметры; к базам, агенту или кластеру он не подключается.
Владелец или администратор своего стенда заранее обеспечивает доверенную регистрацию V85.COMConnector именно от установленной 8.5.1.1343 и разрядность, подходящую клиентскому процессу. Имя ProgID само по себе не доказывает путь/версию DLL и её разрядность. В коде нет явных команд установки/регистрации/запуска служб; Новый COMОбъект активирует заранее установленную доверенную реализацию класса. Если подготовка не подтверждена, остановитесь.
Для этой локальной модели не нужны работающий агент, RAS, кластер, пароль администратора, строка подключения к базе или данные пользователей. Не запускайте службы и не создавайте подключения ради чтения значений по умолчанию. Дополнительная VM, новый пользователь, UUID и согласие на запись в алгоритме не требуются.
Общие → Общие модули → создать ЛокальныйПаспортCOM85. Клиент (управляемое приложение)=Да; Сервер, Клиент (обычное приложение), Внешнее соединение, Вызов сервера, Глобальный, Привилегированный=Нет; Повторное использование возвращаемых значений=Не использовать. Основной блок вставьте ЦЕЛИКОМ в пустой модуль; &НаКлиенте указан явно.
Общие → Общие формы → создать управляемую ПаспортСоединителяCOM85. Один реквизит Протокол85: Строка, длина=0 — неограниченная длина. Выведите многострочное поле с ПутьКДанным=Протокол85 и ТолькоПросмотр=Да. Для COM не создавайте поле HTML, браузер, внешнее окно или реквизит неизвестного объекта.
В своей форме установите АвтоматическоеСохранениеДанныхВНастройках=АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать и СохранениеДанныхВНастройках=СохранениеДанныхФормыВНастройках.НеИспользовать. Это два разных перечисления, не Булево. Поддерживающий модуль формы вставьте ЦЕЛИКОМ.
В форме создайте команду Прочитать85: Действие=Прочитать85; выведите связанную кнопку. Объект Команда платформа передаёт при настоящем нажатии. Обработчик вручную не вызывайте и не назначайте запуск в ПриОткрытии.
Общие → Общие команды → создать ОткрытьПаспортCOM85 без параметра и включить в командный интерфейс своей учебной подсистемы. Третий блок вставьте ЦЕЛИКОМ в её пустой модуль. &НаКлиенте задаёт контекст, а #Если проверяет вид клиента; два штатных параметра передаёт платформа.
После будущей проверки синтаксиса сохраните конфигурацию и обновите только собственную учебную базу. Откройте форму общей командой и нажмите Прочитать85. Создание COM-объекта, чтение и расчёт выполняются в клиентском процессе Windows; форме передаётся только строковый паспорт.
Открытие собственной формы может делать обычные платформенные обращения к серверу. Сам алгоритм паспорта не обращается к COM-сервисам кластера или базе и не использует удалённый сервер во втором аргументе конструктора. Компиляция и выполнение в 1С ещё не проверялись.
&НаКлиенте
Функция ПрочитатьПаспорт85() Экспорт
#Если ТолстыйКлиентУправляемоеПриложение Тогда
Соединитель85 = Новый COMОбъект("V85.COMConnector");
Если ТипЗнч(Соединитель85) <> Тип("COMОбъект") Тогда
ВызватьИсключение "Не создан настоящий собственный локальный COM-объект";
КонецЕсли;
ВерхняяГраница85 = Соединитель85.HighBoundDefault;
НижняяГраница85 = Соединитель85.LowBoundDefault;
МаксимумСоединений85 = Соединитель85.MaxConnections;
ЕмкостьПула85 = Соединитель85.PoolCapacity;
ВремяВПуле85 = Соединитель85.PoolTimeout;
ПортАгента85 = Соединитель85.RAgentPortDefault;
ПортМенеджера85 = Соединитель85.RMngrPortDefault;
Если ТипЗнч(ВерхняяГраница85) <> Тип("Число")
Или ТипЗнч(НижняяГраница85) <> Тип("Число")
Или ТипЗнч(МаксимумСоединений85) <> Тип("Число")
Или ТипЗнч(ЕмкостьПула85) <> Тип("Число")
Или ТипЗнч(ВремяВПуле85) <> Тип("Число")
Или ТипЗнч(ПортАгента85) <> Тип("Число")
Или ТипЗнч(ПортМенеджера85) <> Тип("Число") Тогда
ВызватьИсключение "Все семь фактических свойств должны иметь тип Число";
КонецЕсли;
Если Цел(ВерхняяГраница85) <> ВерхняяГраница85
Или ВерхняяГраница85 < 0 Или ВерхняяГраница85 > 65535
Или Цел(НижняяГраница85) <> НижняяГраница85
Или НижняяГраница85 < 0 Или НижняяГраница85 > 65535
Или Цел(ПортАгента85) <> ПортАгента85
Или ПортАгента85 < 0 Или ПортАгента85 > 65535
Или Цел(ПортМенеджера85) <> ПортМенеджера85
Или ПортМенеджера85 < 0 Или ПортМенеджера85 > 65535
Или НижняяГраница85 > ВерхняяГраница85 Тогда
ВызватьИсключение "Числа портов не подходят для принятого в уроке расчёта диапазона";
КонецЕсли;
Если Цел(МаксимумСоединений85) <> МаксимумСоединений85
Или МаксимумСоединений85 < 0
Или Цел(ЕмкостьПула85) <> ЕмкостьПула85
Или ЕмкостьПула85 < 0 Или ВремяВПуле85 < 0 Тогда
ВызватьИсключение "Фактические ограничения не подходят для числового плана урока";
КонецЕсли;
ШиринаДиапазона85 = ВерхняяГраница85 - НижняяГраница85 + 1;
АгентВДиапазоне85 = ПортАгента85 >= НижняяГраница85 И ПортАгента85 <= ВерхняяГраница85;
МенеджерВДиапазоне85 = ПортМенеджера85 >= НижняяГраница85 И ПортМенеджера85 <= ВерхняяГраница85;
ПортыСовпадают85 = ПортАгента85 = ПортМенеджера85;
ПланСоединений85 = 4;
ПланПоПулу85 = ПланСоединений85 <= ЕмкостьПула85;
Если МаксимумСоединений85 = 0 Тогда
ПланПоМаксимуму85 = Истина;
СмыслМаксимума85 = "0: число одновременно существующих объектов внешнего соединения не ограничено этим параметром";
Иначе
ПланПоМаксимуму85 = ПланСоединений85 <= МаксимумСоединений85;
СмыслМаксимума85 = "ненулевой числовой максимум, включая объекты соединений в пуле";
КонецЕсли;
Возврат "Локальный паспорт нового V85.COMConnector. Подключения не выполнялись."
+ " LowBoundDefault=" + Строка(НижняяГраница85)
+ "; HighBoundDefault=" + Строка(ВерхняяГраница85)
+ "; ширина включительного диапазона=" + Строка(ШиринаДиапазона85)
+ "; RAgentPortDefault=" + Строка(ПортАгента85)
+ "; этот порт внутри диапазона=" + Строка(АгентВДиапазоне85)
+ "; RMngrPortDefault=" + Строка(ПортМенеджера85)
+ "; этот порт внутри диапазона=" + Строка(МенеджерВДиапазоне85)
+ "; два значения портов совпадают=" + Строка(ПортыСовпадают85)
+ "; MaxConnections=" + Строка(МаксимумСоединений85)
+ "; смысл MaxConnections: " + СмыслМаксимума85
+ "; PoolCapacity=" + Строка(ЕмкостьПула85)
+ "; собственный числовой план=" + Строка(ПланСоединений85)
+ "; план не превышает PoolCapacity=" + Строка(ПланПоПулу85)
+ "; план допускается по MaxConnections=" + Строка(ПланПоМаксимуму85)
+ "; PoolTimeout=" + Строка(ВремяВПуле85)
+ " (исходная числовая величина; единица времени в установленной справке не задана)."
+ " Это сравнение параметров, не проверка свободных портов, действующего пула или производительности.";
#Иначе
ВызватьИсключение "Нужен толстый управляемый клиент собственной Windows-лаборатории";
#КонецЕсли
КонецФункцииПолный модуль собственной формы ПаспортСоединителяCOM85
Общие → Общие формы → ПаспортСоединителяCOM85 → пустой модуль формы. Вставить ЦЕЛИКОМ; своя команда Прочитать85 связана через Действие.
Настоящая команда формы &НаКлиенте; прямой вызов своего клиентского общего модуля. В форму возвращается только строковый паспорт, не COM-объект.
&НаКлиенте
Процедура Прочитать85(Команда)
Протокол85 = "";
Если ТипЗнч(Команда) <> Тип("КомандаФормы") Или Команда.Имя <> "Прочитать85" Тогда
ВызватьИсключение "Нужна настоящая собственная команда формы";
КонецЕсли;
Если ИмяФормы <> "ОбщаяФорма.ПаспортСоединителяCOM85"
Или АвтоматическоеСохранениеДанныхВНастройках <> АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать
Или СохранениеДанныхВНастройках <> СохранениеДанныхФормыВНастройках.НеИспользовать Тогда
ВызватьИсключение "Нужна своя форма с отключённым сохранением данных";
КонецЕсли;
Попытка
Получено85 = ЛокальныйПаспортCOM85.ПрочитатьПаспорт85();
Если ТипЗнч(Получено85) <> Тип("Строка") Или Получено85 = "" Тогда
ВызватьИсключение "Клиентский модуль не вернул полный строковый паспорт";
КонецЕсли;
Протокол85 = Получено85;
Исключение
Протокол85 = "Паспорт COM НЕ получен. Опыт остановлен; регистрацию и подключение код не выполняет.";
ВызватьИсключение;
КонецПопытки;
КонецПроцедурыПолный модуль собственной общей команды ОткрытьПаспортCOM85
Общие → Общие команды → ОткрытьПаспортCOM85 → пустой модуль команды. Вставить ЦЕЛИКОМ, включить без параметра в свой учебный интерфейс.
&НаКлиенте; толстый управляемый клиент, настоящая ОбработкаКоманды с двумя штатными параметрами.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
#Если ТолстыйКлиентУправляемоеПриложение Тогда
Если ПараметрКоманды <> Неопределено
Или ТипЗнч(ПараметрыВыполненияКоманды) <> Тип("ПараметрыВыполненияКоманды") Тогда
ВызватьИсключение "Откройте собственную форму штатной общей командой без параметра";
КонецЕсли;
ОткрытьФорму("ОбщаяФорма.ПаспортСоединителяCOM85");
#Иначе
ВызватьИсключение "Нужен толстый управляемый клиент";
#КонецЕсли
КонецПроцедурыРазбор по шагам
Новый COMОбъект получает один собственный ProgID V85.COMConnector. Второй аргумент ИмяСервера опущен: по установленной справке объект создаётся на этом компьютере. Проверяем настоящий тип обёртки COMОбъект, а не придумываем тип для интерфейса Менеджер COM-соединений.
Обёртка предоставляет методы и свойства созданного COM-объекта. Читаем семь фактических значений только для чтения: границы диапазона портов, максимум соединений, вместимость пула, время в пуле и два порта по умолчанию. Ни одному из этих свойств код не присваивает значение.
До расчётов проверяем тип Число всех семи результатов. Для своего арифметического опыта принимаем четыре целых значения портов от 0 до 65535 и упорядоченные границы. Это условия нашего расчёта, не обещание любых заранее известных значений соединителя.
Из настоящих границ вычисляем включительную ширину: верхняя минус нижняя плюс 1. Отдельно сравниваем реальные порты агента и менеджера с диапазоном и друг с другом. Порт вне диапазона — нормальный результат Ложь, не исключение.
Наш собственный план — число 4, не четыре уже созданных соединения. Проверяем его относительно фактического PoolCapacity. Ноль у вместимости остаётся обычной числовой границей; специальное отключение пула или бесконечную вместимость не выдумываем.
Для MaxConnections установленная справка явно задаёт особый смысл 0: число одновременно существующих объектов внешнего соединения не ограничено этим параметром. Ненулевой максимум сравниваем с планом 4; он включает объекты соединений в пуле.
PoolTimeout выводим как фактическую числовую величину. Единица времени на его установленной странице не задана: нет пересчёта в секунды, миллисекунды, времени ожидания или обещания, когда соединение освободится.
Паспорт содержит все семь прочитанных значений и вычисленные результаты. Форма перед новым опытом очищает прошлый текст, проверяет полученную строку и показывает её. При ошибке сообщает о незавершённом опыте и передаёт исходное исключение; подключение или регистрацию не пытается выполнить.
Как проверить результат
В своей подготовленной Windows-конфигурации нажмите настоящую кнопку. Паспорт должен содержать все семь английских имён свойств, их реальные числа, ширину диапазона, два сравнения с диапазоном, сравнение портов между собой и два сравнения плана 4.
В отладчике остановитесь после создания Соединитель85 и после чтения семи свойств. Проверьте настоящий COMОбъект и тип Число каждого результата. Не подставляйте вместо них стандартные значения 1540, 1541 или границы из чужого примера.
Вручную пересчитайте верхняя граница − нижняя граница + 1 по наблюдаемым числам и сравните с ШиринаДиапазона85. Увиденные порты вне диапазона должны давать Ложь в сравнении и оставаться в полноценном отчёте.
Проверьте, что ПланПоПулу85 получается из 4 <= фактическая ЕмкостьПула85. ПланПоМаксимуму85 использует отдельную документированную ветку для реального MaxConnections=0 либо сравнение с ненулевым максимумом. Ни одного подключения ради этого не создавайте.
Если фактически прочитан MaxConnections=0, в отчёте должен быть пояснён только его установленный смысл. Если PoolCapacity=0, не называйте его безлимитным или доказанно отключённым пулом. Не присваивайте свойства, чтобы насильно получить эти случаи.
PoolTimeout остаётся исходным наблюдаемым числом с явным пояснением неизвестной единицы. Никакой таймер или освобождение соединений этим опытом не проверяется.
Для неподготовленного COM или ошибки типа/расчёта успешного паспорта быть не должно. Не воспроизводите отказ переустановкой/перерегистрацией рабочего компонента; техническую причину выясняет владелец своего стенда. Код останавливает опыт, не чинит окружение.
Повторное обычное нажатие создаёт новый собственный объект и новый отчёт. Это не атомарный снимок действующего пула и не наблюдение производительности. Компиляцию и настоящий ручной запуск ещё требуется выполнить.
Ожидаемый результат
Будущий успешный локальный паспорт содержит все семь фактических параметров и вычисленные сравнения. Числа и логические результаты заранее не фиксированы. Это условный числовой план, не подключение, не проверка действующего пула, свободных портов или производительности. Запуск в 1С пока не выполнен.
На что обратить внимание
ProgID V85.COMConnector — документированное имя класса, не доказательство версии зарегистрированной DLL, её разрядности или доверенности. Они подтверждаются заранее владельцем стенда, не чтением придуманных свойств COM.
Менеджер COM-соединений в справке имеет контекст Интеграция. В BSL создаётся настоящая обёртка COMОбъект, через которую доступны свойства COM. Не используйте Тип("Менеджер COM-соединений"), приведение типов или параметр с неизвестным чужим объектом.
У всех семи страниц раздел Использование объявляет Только чтение. В описании MaxConnections одновременно говорится об установке ненулевого значения только для MTA и о риске зацикливания Connect при STA. Это внутреннее расхождение справки сохраняем: урок консервативно не присваивает свойство вообще.
Установленная справка прямо говорит, что COM-объекты из 1С создаются в STA. Код не создаёт потоки, не обещает MTA или полезную параллельность и никогда не вызывает Connect, ConnectAgent или ConnectWorkingProcess.
MaxConnections=0 означает отсутствие ограничения именно этим параметром. Смысл нельзя переносить на PoolCapacity, PoolTimeout или другой числовой ноль. Лимит не показывает количество свободных мест, действующих соединений или лицензий.
PoolCapacity — максимально возможное количество соединений одновременно в пуле, не число фактически открытых/свободных объектов. Сравнение плана 4 с этим числом — условная арифметическая проверка, не обещание реального подключения или повторного использования.
HighBoundDefault/LowBoundDefault, RAgentPortDefault/RMngrPortDefault — параметры по умолчанию, не найденные настройки работающего кластера. Порты агента и менеджера могут лежать вне диапазона: код только описывает результат. Совпадение или несовпадение чисел не проверяет доступность и безопасность портов.
PoolTimeout не подписываем секундами/миллисекундами и не трактуем ноль как бесконечное время. Единицы и особое значение нуля его установленная страница не определяет.
Числовые проверки принимают выбранную нами область значений для учебного расчёта. Неподходящий фактический результат означает остановку, а не повод изменить соединитель, заменить значения константами или подключиться к сервису.
Строка(Число) и Строка(Булево) зависят от национальных установок. Проверяйте числа и смысл результатов, не побайтовое совпадение паспорта. Имена формы/команд и отключённое сохранение не являются защитой от подделки вызова.
COM-объект и паспорт живут в памяти клиента. Нет регистрации, запуска служб, адреса удалённого компьютера, учётных данных, чтения реальной базы, отправки по сети или доказанной производительности. Неподходящая подготовка/исключение — незавершённый опыт, не успех.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.