1С com компонента

Версия компоненты comcntr отличается от версии корневого модуля core83

Иногда, после обновления платформы, при синхронизации, может возникать ошибка, приблизительно такой текст:
Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector): Версия компоненты ‘comcntr’ (номер старой платформы) отличается от версии корневого модуля ‘core82′ (номер новой платформы).
В этом случае необходимо зарегистрировать компоненту comcntr.dll. В зависимости от операционной системы:
1) Убедитесь что есть файл «comcntr.dll» в каталоге куда установилась платформа C:\Program Files\1Cv8\номер новой платформы\bin (для x32 разрядной ОС) или C:\Program Files (x86)\1Cv8\номер новой платформы\bin
2) Например, мы установили платформу 8.3.6.2041. Нажать Пуск -> Выполнить и вбить текст для X32 разрядной ОС:
regsvr32 «C:\Program Files\1Cv8\8.3.6.2041\bin\comcntr.dll»
текст для X64 разрядной ОС:
regsvr32 «C:\Program Files (x86)\1Cv8\8.3.6.2041\bin\comcntr.dll»
У меня было 2 случая у клиента, когда после обновления платформы, при синхронизации данных между БУХ 3.0 и УТ10 выдавала такую ошибку.

Дата публикации: Июл 13, 2015 Поделиться: Поставьте вашу оценку этой статье:

Соединение «ПО Истина» в запросе #517623

  • Можно ли запустить 1С 8.2(linux) + MS SQL Server?
  • 8.2 как установить высоту таблицы у динамического списка?
  • Право просмотр на ресурс регистра накопления 8.2
  • ЗУП В документе «Отражение зарплаты в рег. учете» не заполняется статья НК
  • Как узнать сколько всего листов в книге Excel
  • ПолеТабличногоДокумента.ПриИзмененииСодержимогоОбласти(). Copy-Paste
  • Сложение итогов по группировкам в СКД… Помогите!
  • Правильная сортировка по коду, если он имеет тип строка
  • УПП настройка учетной политики. поделитесь опытом PLZ.
  • Управляемая форма отчета СКД с вариантами. Программная установка параметров.
  • Одновременное редактирование ТЧ документа разными пользователями
  • Как перенести строки из формы в табличную часть документа?
  • Загрузка из Экселя (Лист.UsedRange.Value)
  • Разбор ФИО
  • Как вести учет в Бух 2,0 — Приход в тн, реализация в литрах
  • Отказ покупателя от товаров в УТ10.3
  • Баян: Строим ОС. Дт 8.03 — Кт 10.7. Чем сделать?
  • Отчет по отпускам ЗУП 2.5.28.1

В этой статье я расскажу о многих особенностях взаимодействия между базами 1С по COM технологии, накопленных за годы развития и использования интеграционного коммерческого продукта 2iS:Интеграция нашей компании 2iS.

Термины

ОС – операционная система

COM-клиент – процесс(поток) ОС, запросивший создание COM-объекта

COM-сервер – COM-объект, созданный по запросу клиента

Com-соединитель – COM-объект V8X.ComСonnector для создания внешних соединений с базами 1С

Automation-сервер – он же OLE-сервер, COM-объект V8X.Application для создания приложений 1С

Издание платформы – подстрока до 2-й точки версии платформы (например 8.2, 8.3)

Сборка платформы – полная строка версии платформы (например 8.2.19.130, 8.2.16.352)

Подключение внешнего соединения

Рассмотрим алгоритм подключения внешнего соединения в деталях

  1. Создание COM-объекта Com-соединитель (Имя класса — V8X.ComConnector). Варианты: 📌 Реклама Отключить
  2. Внутрипроцессное (inproc)
  3. Должен быть зарегистрирован класс V8X.ComConnector той же разрядности, что и COM-клиент
  4. Если издание платформы COM-клиента совпадает с изданием платформы COM-сервера, то также требуется равенство сборки платформы COM-клиента и COM-сервера.
  5. Он регистрируется при установке платформы с опцией «Внешнее соединение». В любой момент его можно зарегистрировать командой «Regsvr32 comcntr.dll» в каталоге исполняемых файлов платформы.
  6. COM-объект создается в памяти COM-клиента
  7. Затраты на создание примерно – 0.01(первое)/0.001(второе) cек
  8. Пример
    КомСоединитель = Новый COMОбъект(“V83.ComConnector”);
    ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);
  9. Внепроцессное локальное (local)
  10. Должен быть зарегистрирован класс V8X.ComConnector любой разрядности и сборки платформы. Необходимо настроить через dcomcnfg.exe COM+ приложение с активацией «серверное приложение»/»Server apllication». Подробнее рассмотрено далее. 📌 Реклама Отключить
  11. COM-объект создается в памяти служебного хост-процесса (dllhost.exe) на компьютере COM-клиента
  12. Затраты на создание примерно – 0.06(первое)/0.03(второе) сек
  13. Пример
    КомСоединитель = Новый COMОбъект(“V83.ComConnector”);
    ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);
  14. Внепроцессное нелокальное (DCOM)
  15. На нелокальном компьютере должен быть зарегистрирован класс V8X.ComConnector любой разрядности и сборки платформы. Необходимо настроить на нелокальном компьютере через dcomcnfg.exe COM+ приложение с активацией «Cерверное приложение»/»Server apllication». Подробнее рассмотрено далее.
  16. Необходимо настроить на нелокальном компьютере роль «Сервер приложений»/»Application server» и включить нелокальный доступ COM+, выбрав опцию «Сетевой доступ к COM+»/”COM+ network access”. Подробнее рассмотрено далее. 📌 Реклама Отключить
  17. COM-объект создается в памяти служебного хост-процесса (dllhost.exe) на другом компьютере
  18. Затраты на создание примерно
  19. Экспериментальные данные

Задержка канала, мс Длительность создания COM-объекта, мс
0 60
30 700
80 2000
170 4000

На графике видно, что длительность создания этого COM-объекта прямо пропорциональна задержке канала и коэффициент пропорциональности составляет примерно 24. Можно предположить, что при создании этого COM-объекта происходит 24 вызова через канал.

  1. Пример
    КомСоединитель = Новый COMОбъект(“V83.ComConnector”, ИмяКомпьютера);
    ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения); 📌 Реклама Отключить
  2. Выполнение метода Connect (создание внешнего соединения)
  3. Создание сеанса – 1 сек
  4. Инициализация сеанса – сек
  5. ПередНачаломРаботыСистемы (только для Automation-сервера)
  6. ПриНачалеРаботыСистемы
  7. Инициализация параметров сеанса
  8. Подгрузка нужных метаданных

Затраты на COM-вызовы

Каждый раз, когда мы обращаемся во встроенном языке к свойству или методу COM-объекта (выполняем COM-вызов), происходит ряд дополнительных действий по сравнению с обращением к родному объекту встроенного языка. Если COM-сервер находится в другом локальном процессе, то при этом еще сначала выполняется перенос всех параметров из COM-клиента в COM-сервер и в конце выполняется обратный перенос параметров в COM-клиент. Для такого переноса информация естественно должна быть сериализована на стороне отправителя и затем десериализована на стороне получателя, что в совокупности с некоторыми другими действиями получило название маршалинга и демаршалинга. В нелокальном режиме (DCOM) такой перенос будет еще тратить время на сетевые коммуникации и при первом обращении к новому COM-объекту на передачу его «скелета», и поэтому задержка канала будет играть решающую роль (Подробнее о COM вызовах, DCOM в википедии, Технический обзор DCOM,) 📌 Реклама Отключить

Соотношение затрат на вызов по типам расположения COM-сервера

  1. Минимальные для внутрипроцессного Com-сервера
  2. Средние для локального внепроцессного Com-сервера
  3. От средних до больших для нелокального внепроцессного Cоm-сервера в зависимости от качества канала связи

Минимизация количества COM-вызовов

  1. Создаем базовую внешнюю обработку с набором общих методов для приема вызовов от COM-клиента на стороне COM-сервера
  2. Теперь нам не нужно изменять конфигурацию базы COM-сервера, чтобы использовать там сложный функционал.
  3. В нашем продукте мы назвали ее «Сервисный процессор». На ее передачу и инициализацию уходит около 1 сек
  4. Проектируем взаимодействие с COM-сервером по принципу «минимум COM-вызовов”, т.е. готовим все нужное на стороне COM-клиента и передаем в качестве параметров одного большого вызова» 📌 Реклама Отключить
  5. Создаем встроенную обработку для выполнения такого вызова в COM-клиенте
  6. Передача агрегатных объектов
  7. Сериализуем все входные параметры на стороне COM-клиента
  8. Десериализуем все входные параметры на стороне COM-сервера
  9. Сериализуем все выходные параметры на стороне COM-сервера
  10. Десериализуем все выходные параметры на стороне COM-клиента
  11. В нашем продукте мы назвали ее «Выполнение сервиса инфобазы»
  12. Для многократных COM-вызовов предусматриваем регулируемую частоту
  13. Например, информационные вызовы могут выполняться с изменяемой частотой

Обратная связь

При использовании принципа «минимум COM-вызовов» значительную часть времени код будет выполняться в чужом контексте, что серьезно усиливает некоторые неудобства COM-вызовов:

  1. Нельзя прервать поток COM-Клиента и его соединение с сервером приложений 1С, пока не завершится вызов COM-сервера 📌 Реклама Отключить
  2. У COM-Клиента нет информации о прогрессе выполнения вызова в COM-сервере

Для борьбы с этими неудобствами можно организовать обратную связь от COM-сервера к COM-клиенту, передав COM-Серверу ссылку на общий модуль COM-клиента и периодически вызывая через нее COM-клиент. Нужно отметить, что есть ошибки платформы (https://partners.v8.1c.ru/forum/t/1382465/m/1382465 ), проявляющиеся при создании ссылок на один общий модуль более чем в одном COM-севере сеанса. Поэтому пока лучше очищать ссылки на общий модуль во всех удерживаемых COM-серверах перед помещением в новый. В обратных вызовах можно передавать:

  1. информацию о прогрессе выполнения
  2. накопленные сообщения пользователю (получать функцией ПолучитьСообщенияПользователю(Истина))

Схема принципа “минимум COM-вызовов”

📌 Реклама Отключить

Такая схема дружественна к большим задержкам каналов связи. Поэтому она во многом похожа на вызов веб-сервиса. А следовательно используя ее для COM взаимодействия, вы значительно снижаете затраты на возможные переходы между COM и веб-сервисом в обоих направлениях.

Отладка

При использовании принципа «минимум COM-вызовов» облегчить отладку выполнения кода на COM-сервере можно, сделав опциональное модальное окно подключения к базе в COM-клиенте. В этом окне должны быть возможности задания одноразовых параметров подключения, выполнения вспомогательных функций и просмотра информации о подключенном сеансе. Ниже в качестве примера показано такое окно из нашего продукта 📌 Реклама Отключить

Чтобы включить возможность отладки внешних соединений, в подкаталоге conf нужно создать файл comcntrcfg.xml с соответствующим содержимым. В окне подключения можно сделать кнопку/флажок для программного создания такого файла. Однако много версий платформы содержат ошибку, из-за которой предметы отладки внешних соединений не видны в отладчике даже с этим корректно настроенным файлом. На платформе 8.3 эти проблемы вроде бы решены.

Также нельзя забывать о необходимости запускать конфигуратор для отладки с той же (до регистра букв) строкой соединения, что и предмет отладки. Поэтому в этом диалоге нужно сделать кнопку для запуска конфигуратора COM-сервера с правильной строкой соединения.

📌 Реклама Отключить

В какой-то мере обойти проблему невидимости предмета отладки внешнего соединения и ряд других неудобств можно путем однократного выполнения кода на толстом клиенте с заменой режима «Внешнее соединение» на «Automation-сервер» (приложение), т.е. используя COM класс V8X.Application и включенную видимость. Поэтому в окне подключения нужны параметры для выбора режима подключения.

После создания подключения на стороне COM-клиента обычно требуется подключение отладчика базы COM-сервера и установка там точки останова в нужном месте. Поэтому в окне подключения нужно расположить кнопку подключения отладчика/конфигуратора COM-сервера. Если COM-сервер запущен в режиме видимого приложения, то для подключения отладчика можно воспользоваться асинхронным вызовом исключения в нем. Из диалога с ошибкой в приложении COM-сервера через кнопку «Конфигуратор» можно будет открыть конфигуратор и в большинстве случаев сразу подключить отладчик. Если подключение отладчика таким способом недоступно, то оператору поможет отображение информации о сеансе (его номера) в базе COM-сервера. Также нужна кнопка открытия в открытом отладчике файла внешней обработки, которая будет выполняться в нем.

📌 Реклама Отключить

Управление COM классами и COM+ приложениями 1С

  1. Внешнее соединение (V8X.ComConnector)
  2. Регистрация: Regsvr32 comcntr.dll
  3. Отмена регистрации: Regsvr32 comcntr.dll /u
  4. Automation-сервер (V8X.Application)
  5. Регистрация — 1cv8.exe /regserver
  6. Отмена регистрации — 1cv8.exe /unregserver

Управление COM+ приложениями

Осуществляется через оснастку dcomcnfg.exe. Для регистрации 1С в качестве COM+ приложения необходимо открыть оснастку «dcomcnfg». В ней в ветке «Службы компонентов»-«Компьютеры»-«Мой компьютер»-«Приложения COM+»(COM+ Applications) необходимо добавить новое приложение (application). При добавлении можно указать любое имя. Далее необходимо указать пользователя, от имени которого будет работать COM+ приложение, на закладке Идентификация (Identity). Также нужно задать доступ к приложению для всех пользователей путем добавления, если отсутствует, роли с любым именем в ветке Роли (Roles), и добавления в ее ветку Пользователи (Users) пользователя Все (Everyone). После добавления приложения необходимо создать новую компоненту. Для этого в ветке «Компоненты» созданного приложения необходимо выбрать пункт меню «Создать»-«Компонент». При создании выбрать импорт уже зарегистрированных компонентов и найдите в списке (желательно 64-битную) компоненту 1С (V8x.COMConnector.1). 📌 Реклама Отключить

Далее можно изменить тип активации (внутрипроцессный/внепроцессный) на закладке Активация/Activation.

В нашем продукте имеется инструмент «Управление COM классами 1С» для просмотра/регистрации/изменения всех COM классов и COM+ приложений 1С на указанном компьютере:

Настройка DCOM-сервера

Для Windows 2008 Server нужно добавить роль «Сервер приложений» (Application server). Для этого необходимо открыть панель управления компьютером, щелкнуть правой кнопкой мыши в ветки «Роли» и выбрать пункт меню «Добавить роль». 📌 Реклама Отключить

Появится око в котором необходимо выбрать роль «Сервер приложений»/»Application server». На этапе выбора ролей сервера приложений необходимо указать пункт «Сетевой доступ к COM+»/»COM+ network access». Если это не сделать, то при попытке создания COM-объекта вы будете получать ошибку «Ошибка при вызове конструктора (COMОбъект): The component or application containing the component has been disabled».

Проблемы

  1. Высокие затраты на подключение/инициализацию
  2. Удержание com-серверов – эффективное средство борьбы
  3. Временное хранилище. Производитель не рекомендует, но деваться больше некуда. http://infostart.ru/public/331683/
  4. Повторное использование возвращаемых значений. Очищаются каждые 20 мин 📌 Реклама Отключить
  5. Разные сборки платформы клиента и сервера при одинаковом издании платформы
  6. Для обхода для каждой отличной от COM-клиента сборки платформы назначаем и настраиваем DCOM сервер
  7. Отсутствие информации о типах вложенных в COM-объекты объектов 1С (вместо типа объекта 1С везде получаем тип «COMОбъект») и отсутствие контекстной подсказки по ним
  8. Для обхода применяем принцип «минимум COM-вызовов»
  9. При передаче исключения из COM-сервера оно принимает краткую форму из-за ошибки платформы
  10. Для обхода оборачиваем каждый вызов на стороне COM-сервера в попытку и в исключении перевызываем исключение с полным описанием ошибки
  11. При создании COM-объекта ошибка “Версия компоненты ‘comcntr’ (8.X.XX.XXX) отличается от версии корневого модуля ‘core82’ (8.X.YY.YYY)”
  12. Для обхода создаем COM+ приложение с внепроцессной активацией. Тогда COM-сервер будет создаваться в отдельном процессе и совпадения версий этих модулей не потребуется. 📌 Реклама Отключить
  13. Медленные каналы (большие задержки)
  14. Каждой подсети за отдельным медленным каналом назначаем и настраиваем свой DCOM сервер и при обращении к базам за этим каналом COM-серверы создаем на этом компьютере, минимизируя количество и объемы вызовов Com-клиент<->Com-сервер
  15. Кешируем (повторно используем) COM-серверы
  16. Невозможно разорвать соединение рабочего процесса, в котором ожидается завершение вызова COM-сервера
  17. Для обхода можно использовать создание COM-объектов в выделенных хост-процессах, настроив соответствующим образом COM+ приложение, и регистрировать идентификаторы этих процессов в привязке к сеансам COM-клиентов. Тогда при необходимости завершить серверное соединение такого сеанса можно сначала убить процесс COM-сервера, а потом и сам сеанс.
  18. При обращении к COM-объекту может возникать ошибка «Неизвестная ошибка». Возможные причины: 📌 Реклама Отключить
  19. Com-сервер перестал существовать. Возможные причины:
  20. Переполнение стека
  21. Невосстановимая ошибка
  22. Хост-процесс завершился
  23. Потеря связи с нелокальным COM-сервером
  24. Совпадение имен свойств и методов без параметров объекта создает неоднозначность обращения к ним через COM
  25. Например, если у справочника есть реквизит ПолноеНаименование, то из-за наличия метода ПолноеНаименование() обращение к реквизиту ПолноеНаименование через COM может привести к вызову метода ПолноеНаименование()
  26. Для обхода используем принцип “минимум COM-вызовов”

Com-технология VS веб-сервисы в локальной сети

  1. Рассмотренные выше сложности с взаимодействием разных сборок платформы 1C, требующие для своего решения сервисный механизм
  2. Высокие затраты на подключение/инициализацию, поэтому при отсутствии кеширования неэффективно для частых мелких вызовов 📌 Реклама Отключить
  3. Привязка к семейству операционных систем (платформе) Windows

Преимущества

  1. Отсутствие необходимости изменять конфигурацию баз, к которым подключаемся
  2. Широкая функциональность
  3. Проще отладка
  4. Не требуется разворачивать и поддерживать веб-сервер

Захват клиентских лицензий

В большинстве случаев всем клиентским приложениям, частным случаем которого являются Automation-сервер и с оговорками является внешнее соединение, в одном сеансе ОС требуется всего лишь одна на всех лицензия. Однако если клиентскому приложению не удалось получить аппаратную лицензию (от локального HASP или сетевого HASP) и программную лицензию (платформы или базовой конфигурации), то предпринимается попытка получить отдельную лицензию с сервера 1С:Предприятия. Сервер 1С:Предприятия может выдать лицензию только, если в свойствах базы разрешена выдача лицензий сервером 1С:Предприятия. В таком случае каждое клиентское приложение и внешнее соединение может захватывать свою собственную лицензию. 📌 Реклама Отключить Если вы хотите подробнее узнать об описанных особенностях, вы можете бесплатно скачать конфигурацию и демонстрационную базу продукта, для чего необходимо оформить предварительный заказ на Инфостарте на продукт 2iS:Интеграция. Несмотря на наличие в конфигурации защищенного модуля, 99% программного кода конфигурации открыто, то есть Вы можете изучить реализацию описанных приемов.

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами разобрали, как сделать таймер выключения компьютера. Сегодня я хочу вас научить определять ID (Уникальный идентификатор) и номер сеанса пользователя на терминальных столах. Уметь, это нужно, для решения ситуаций, когда такой сеанс зависает и пользователь не может работать и переключиться на другую ноду RDS фермы, так как посредники подключений видят, что у него есть активная сессия. Думаю. что мой опыт, описанный в статье окажется вам полезным.

Что такое ID сеанса

Когда пользователь входит на компьютер с включенными службами удаленных рабочих столов, для него запускается сеанс. Каждый сеанс идентифицируется уникальным идентификатором сеанса. Каждый такой сеанс ассоциируется с интерактивной оконной станцией (interactive window station) «WinSta0»; поэтому каждый сеанс связан со своей собственной оконной станцией «WinSta0». Для каждой оконной станции имеется три стандартных рабочих стола: рабочий стол Winlogon, рабочий стол с заставкой и интерактивный рабочий стол.

Подробнее про WinSta0 на https://docs.microsoft.com/en-us/windows/desktop/winstation/window-station-and-desktop-creation

Когда пользователь выходит с сервера удаленных рабочих столов (RDC), то сеанс, который клиент имеет на сервере узла сеансов удаленных рабочих столов (ранее назывался сервер терминалов), удаляется. Однако если сеанс консоли служб удаленных рабочих столов не смог завершится, то оконные станции, связанные с сеансом консоли, не удаляются, все процессы продолжают висеть. Это влияет на поведение приложений в среде служб удаленных рабочих столов, когда они настроены для работы в контексте безопасности интерактивного пользователя, также известного как режим активации объекта «RunAs Interactive User». Вот тогда, то и выявляется ID сеанса, чтобы его грохнуть.

Методы определения ID сеанса пользователя RDP

Существует несколько методов, которые могут вам помочь определить номер сеанса и его ID на терминальных серверах и RDS фермах.

  • Утилита quser
  • Утилита qwinsta
  • Утилита Query session
  • Оснастка диспетчер задач
  • PowerShell командлет Get-TerminalSession
  • PowerShell командлет Get-TSSession

Определение ID сеанса через quser

И так у меня есть RDS ферма состоящая из хостов с Windows Server 2012 R2, в базе Active Directory есть пользователь Барбоскин Геннадий Викторович. Данный пользователь вошел на терминал, работал, но по какой-то причине он завис и чтобы корректно разлогинить его сессию нам необходимо вычислить ее номер сеанса и уникальный идентификатор. Попробуем это выполнить через утилиту quser.

QUSER — это утилита командной строки Windows, которая отображает информацию, о пользовательских сессиях на серверах и обычных компьютерах, удобна в случае удаленных рабочих столов. Может получать информацию локально и удаленно.

Подробнее про quser https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/query-user

Вы можете использовать эту команду, чтобы выяснить, вошел ли конкретный пользователь на конкретный сервер Session Host. Команда возвращает:

  • Имя пользователя
  • Имя сеанса на сервере Session Host
  • ID сеанса
  • Состояние сеанса (активно или отключено)
  • Время простоя (количество минут с момента последнего нажатия клавиш или движения мыши во время сеанса)
  • Дата и время входа пользователя

Откройте командную строку cmd, лучше в режиме администратора и введите команду:

quser

У вас будет выведен список всех текущих сессий на вашем терминальном сервере.Если пользователей много, то сложно сразу найти нужного, так как все идет не по алфавиту. Ранее я вам показывал, как фильтровать вывод результатов в командной строке Windows, там была команда findstr. Вводим команду:

quser | findstr barboskin.g

В итоге я вижу, что номер сеанса rdp-tcp#24 и его ID 45, статус активно, это означает, что человек работает. Видно его время входа. Тот же результат можно получить и вот такой конструкцией:

quser barboskin.g

Вы наверное спросите, почему сразу так не ввели, все просто, я лишь еще раз напомнил вам, о фильтрации в cmd, которая работает почти с любой командой, так сказать универсальный ключ.

Так же есть возможность запустить для конкретного сервера, для этого есть ключ /server

quser barboskin.g /server localhost

Определение ID сеанса через qwinsta

QWINSTA — Это утилита командной строки Windows, в задачи которой входит извлечение информации, о пользовательских сессиях на удаленных рабочих столах и выводя много полезной информации.

Для того, чтобы получить номер сеанса с ID, введите в командной строке:

qwinsta

Утилита выведет список всех авторизованных в системе пользователей, из полезной информации вы получите:

  • Сеанс — номер сеанса формата rdp-tcp#24
  • Пользователь — логин
  • ID — уникальный идентификатор сессии пользователя на терминальном столе
  • Статус — состояние сеанса (Активно или Диск (Отключено))
  • Тип
  • Устройство

Чтобы вывести определенного пользователя, введите команду:

qwinsta barboskin.g или qwinsta » findstr barboskin.g или с ключом /server. qwinsta barboskin.g /server localhost

Как узнать id пользователя через диспетчер задач

Покажу и графический метод. который позволяет вам получать ID и номер сеанса на терминальных столах. Откройте диспетчер задач и перейдите на вкладку «Пользователи». У вас будет отображен список сотрудников. Тут для удобства их можно выстроить по алфавиту. Все хорошо, но нет ID и номера сеанса.

Чтобы включить отображение нужных нам столбцов, вам необходимо щелкнуть правым кликом на область с именем столбцов. В контекстном меню поставьте галки на «Код» и «Сеанс».

В итоге у вас теперь появилась возможность легко просматривать идентификационный код сеанса и имя сеанса, в моем примере, это RDP-Tcp#24.

Как узнать id пользователя через query session

QUERY SESSION — это утилита командной строки так же выводящая информацию, о вошедших в систему пользователей. Вводите в командной строке query session, вывод утилиты копия qwinsta. Вы так же будите видеть номер сеанса, логин учетной записи, ID, статус подключения.

Получение информации о сеансе через Get-TerminalSession

PowerShell не зря называют могучим, он поистине может все. К сожалению родных командлетов, которые бы заменяли утилиты командной строки нет, но есть возможность установить дополнительные, из репозитория. Речь пойдет, о сборнике «PowerShell Community Extensions» (Pscx 3.2.2). Данный сборник включаем в себя огромный комплекс командлетов, нас будет интересовать Get-TerminalSession.

Установка «PowerShell Community Extensions» очень проста и выполняется одной командой. Перед установкой Pscx 3.2.2, вам необходимо обновить ваш PowerShell хотя бы до версии 5.1. Далее запускаете оболочку PowerShell от имени администратора и вводите команду:

Install-Module -Name Pscx -RequiredVersion 3.2.2

Про сам сборник вы можете почитать по ссылке (https://www.powershellgallery.com/packages/Pscx/3.2.2)

Пишите на терминальном сервере Get-TerminalSession, или же можете запросить удаленно Get-TerminalSession -ComputerName 192.168.1.51

Если у вас не отработает команда для удаленного вывода, то вам необходимо на удаленном компьютере разрешить выполнение скриптов PowerShell

Получение информации о сеансе через Get-TSSession

Модуль PSTerminalServices, так же позволяет взаимодействовать с терминальными профилями В состав PSTerminalServices входят вот такие командлеты:

  • Disconnect-TSSession — отключает любого подключенного пользователя от сеанса.
  • Get-TSCurrentSession — предоставляет информацию о сеансе, в котором выполняется текущий процесс.
  • Get-TSProcess — получает список процессов, запущенных в определенном сеансе или во всех сеансах.
  • Get-TSServers — перечисляет все терминальные серверы в данном домене.
  • Get-TSSession — перечисляет сессии на данном терминальном сервере.
  • Send-TSMessage — отображает окно сообщения в указанном идентификаторе сеанса.
  • Stop-TSProcess — завершает процесс, запущенный в определенном сеансе или во всех сеансах.
  • Stop-TSSession — отключает сеанс, отключая любого пользователя, который может быть подключен.

Скачать PSTerminalServices вы можете по ссылке https://github.com/imseandavis/PSTerminalServices, там будет MSI пакет, если его уже по какой-то причине не будет, то можете загрузить PSTerminalServices по ссылке слева.

Установка PSTerminalServices проста до безобразия. На первом экране нажимаем «Next».

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

Для продолжения нажимаем «Install»

Установка модуля завершена.

Теперь, чтобы модуль запускался вам нужно разрешить запуск скриптов, напоминаю, что для текущего пользователя, это можно сделать вот так:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Далее проверьте командой, что модуль PSTerminalServices доступен в системе, выполните:

Get-Module -Name PSTerminalServices -ListAvailable

Далее импортируем модуль и запускаем его:

Import-Module PSTerminalServices

На выходе вы получаете информацию, о всех ваших сеансах пользователей на терминальном столе

Для удаленного вызова введите Get-TSSession -ComputerName имя сервера. На этом у меня все. Уверен, что существуют еще методы, позволяющие вам узнать ID и номер сеанса пользователя на терминальных фермах. С вами был Иван Семин, автор и создатель IT блога Pyatilistnik.org.

Регистрация компоненты comcntr.dll (для COM соединения с базой 1С)

Cклонения по падежам  5
  НаКлиенте Процедура Команда1(Команда) ФИО = » Иванов Иван Иванович» ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = » » ; v7plus.dll — отсутствует CLSID либо отсутствует интерфейс llnitDone  0
 При выгрузке отчетности в 1С 7.7 программа ругается на v7plus.dll и указывает, что отсутствует интерфейс llritDone. Что делать? 1) Поудалять нафиг все v7plus.dll из каталогов ИБ и папок пользователей 2) Оставить только в bin каталоге и зарегить чер V82.COMConnector.1: Не найдена лицензия COM-соединением  1
 При подключении из одной базы к другой через COM внезапно стала появляться следующая ошибка: «V82.COMConnector.1: Не найдена лицензия COM-соединением», хотя никаких изменений на серверах не делалось. Релиз платформы был 8.2.13. Обновил до 14-го – не База 1С при запуске уходит в дамп и вылетает  1
  В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Внутренняя ошибка компоненты DBENG8  0
 Ошибка СУБД: Внутренняя ошибка компоненты dbeng8 по причине: Внутренняя ошибка компоненты dbeng8 Решение: 1: Тестирование исправление базы 2: Проверка базы используя chdbfl.exe 3: Обновить версию Платформы 4: Обновить dbeng8.dll в