Odin | База знаний 1С

Как получить таблиц...
 

Как получить таблицу значений запущенных процессов в 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Функция №1 получения таблицы значений всех запущенных процессов, чтобы отслеживать указанный процесс в параметре можно указать любой из них, например приложение Excel



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Привет, Богдан!

Функция №1, которая получает таблицу значений всех запущенных процессов, выглядит следующим образом:

1C
// Функция получения таблицы значений всех запущенных процессов
// Параметры
// ПоФильтруПриложения - Строка - Указать имя приложения. Например "EXCEL.EXE"
// Если не указано, тогда по всем процессам
// Возвращаемое значение
// ТаблицаЗначений с именами колонок
// - Приложение - Строка
// - ИД - Число
// - РодительскийИД - Число
Функция ТабЗнач_ПолучитьВсеПроцессы(Знач ПоФильтруПриложения="") Экспорт
    ПоФильтруПриложения=НРег(ПоФильтруПриложения);
    ТабЗн=Новый ТаблицаЗначений;
    ТабЗн.Колонки.Добавить("Приложение");
    ТабЗн.Колонки.Добавить("ИД");
    ТабЗн.Колонки.Добавить("РодительскийИД");
    
    Локатор=Новый COMОбъект("wbemscripting.swbemlocator");
    Сервис=Локатор.ConnectServer(".", "rootcimv2");
    ComputerSystems = Сервис.ExecQuery("Select * from Win32_Process");
    
    Для Каждого ComputerSystem Из ComputerSystems Цикл
        ИмяПриложения=ComputerSystem.Name;
        Если ПоФильтруПриложения="" ИЛИ НРег(ИмяПриложения)=ПоФильтруПриложения Тогда
            СтрТаб=ТабЗн.Добавить();
            СтрТаб.Приложение=ИмяПриложения;
            СтрТаб.ИД=ComputerSystem.ProcessID;
            СтрТаб.РодительскийИД=ComputerSystem.ParentProcessID;
        КонецЕсли;
    КонецЦикла;
    
    Возврат ТабЗн;
КонецФункции

### Как отслеживать указанный процесс, например приложение Excel:

1. **Вызов функции**: Для отслеживания процесса Excel, вы можете вызвать функцию `ТабЗнач_ПолучитьВсеПроцессы` с параметром "EXCEL.EXE".

1C
ТаблицаПроцессов = ТабЗнач_ПолучитьВсеПроцессы("EXCEL.EXE");

2. **Обработка результата**: После вызова функции, переменная `ТаблицаПроцессов` будет содержать таблицу значений, в которой будут перечислены все запущенные процессы с именем "EXCEL.EXE", а также их идентификаторы (ИД) и родительские идентификаторы.

Таким образом, вы сможете отслеживать запущенные экземпляры приложения Excel и получать информацию о них.

Если у вас есть дополнительные вопросы или нужна помощь, дайте знать!



   
ОтветитьЦитата