WMI-обозреватель

05.06.13

База данных - Инструменты администратора БД

Небольшая обработка для отладки WQL запросов WMI.

Скачать файлы

Наименование Файл Версия Размер
WMIОбозреватель.epf
.epf 17,71Kb
54
.epf 17,71Kb 54 Скачать

WMI-обозреватель

Что такое WMI?

Windows Management Instrumentation (WMI) в дословном переводе — это инструментарий управления Windows. Если говорить более развернуто, то WMI — это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. Звучит страшно, а на самом деле это достаточно богатый набор инструментов, основные функции которого:

  • Получать данные о системах (диски, процессоры, процессы, журналы событий и многое-другое)
  • Выполнять широкий спектр административные задачи: от завершения процесса, до управления DHCP и DNS
  • Создавать скрипты, срабатывающие при наступлении каких-либо событий в системе
  • Получать данные счетчиков производительности 

В WMI есть иерархическая адресация всех ресурсов - что-нибудь типа WinMgmts:{impersonationLevel=impersonate}!//myServer/root/cimv2:Win32_LogicalDisk), но вместе с иерархическим доступом к ресурсам есть и SQL-подобный язык получения данных. Этот язык обычно называется WQL и в сети есть множество примеров его использования. На инфостарте можно обратить внимание на следующие статьи:

В MSDN можно ознакомиться начиная со следующих статей:

Типичный запрос WQL выглядит так:

SELECT CommandLine, Handle, Name FROM Win32_Process

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

CommandLine Handle Name
  0 System Idle Process
  4 System
  224 smss.exe
  320 csrss.exe
  372 csrss.exe
  380 wininit.exe
  412 winlogon.exe
  476 services.exe
  484 lsass.exe
  492 lsm.exe
  588 svchost.exe
  656 svchost.exe
  744 svchost.exe
  792 svchost.exe
  840 svchost.exe
  880 svchost.exe
  920 svchost.exe
  508 svchost.exe
  1096 spoolsv.exe
  1156 hasplms.exe
  1236 svchost.exe
  1316 vmtoolsd.exe
  1680 TPAutoConnSvc.exe
  1900 dllhost.exe
  1980 msdtc.exe
taskhost.exe 1724 taskhost.exe
TPAutoConnect.exe -q -i vmware -a COM1 -F 30 616 TPAutoConnect.exe

Зачем нужен WMI-обозреватель?

WMI документирована хорошо, но отлаживать WQL запросы непосредственно в 1С не было возможности, а пользоваться внешними утилитами ради пары строк запроса вовсе не хочется. Для этой цели я сделал простенький WMI-обозреватель.

Пользовательский интерфейс WMI-обозревателя

Интерфейс состоит из 2 закладок: Запрос и Настройки. На закладке Запрос есть только поле для ввода запроса. По умолчанию запрос выполняется на текущем ПК в файловой версии и на сервере предприятия (от имени rphost) в клиент-серверной версии. По кнопке "Выполнить запрос" появляется таблица с результатами.

Если настройки по умолчанию не устраивают, переходим на вторую закладку. Там можно настроить:

  • Имя сервера с которого снимаются данные
  • Если установлен флажок "Собирать системные свойства", то в таблице будут выданы внутренние свойства каждой записи. Обычно это не требуется.
  • Если установлен флажок "Получать путь", то в таблице будут выдана колонка с иерархическим путём записи. Имеет смысл, если этот путь нужен для отладки запроса.
  • Если установлен флажок "Собирать методы", то в таблице первой колонкой будет поле "Methods". Если два раза кликнуть мышкой или нажать Enter на этой колонке, то будет выдан табличный документ с методами, которые можно применять в программном коде к значению WMI данной строки

Картинки:

 

Как можно использовать WMI-обозреватель?

Здесь я приведу просто набор запросов и пояснение, что можно получить этим запросом. Проверяйте, экспериментируйте.

Запрос Пояснение
SELECT Handle, Name, VirtualSize FROM Win32_Process WHERE VirtualSize>100000000 AND CreationDate > "20130604000000.000000+420" Выводится ID процесса, название процесса, размер адресуемого пространства для процессов, созданных позднее 4 июня 2013 года (в моём часовом поясе)
SELECT * FROM Win32_Service WHERE PathName LIKE "%ragent%" Все службы 1С со всеми данными по ним
SELECT Name, Capacity, FreeSpace FROM Win32_Volume Диски, их размер и свободное место
SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor Текущая загрузка процессора
SELECT PercentDiskTime, AvgDiskQueueLength, DiskReadBytesPerSec, DiskWriteBytesPerSec FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk Текущая загрузка диска
Select * From meta_class Выполняется долго, содержит очень много колонок! Выводит все классы WMI

 

Как устроен WMI-обозреватель?

Весь WMI обозреватель благополучно поместился в одну управляемую форму (прямо скажу - не сильно сложную). Если по каким-то причинам Вы не можете скачать решение, то программный код этой формы приведен ниже.

&НаКлиенте
Процедура РезультатЗапросаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   
// При двойном клике на медоды, выводим их в табличный документ
   
Если Поле.Имя = "РезультатЗапросаMethods" Тогда
       
Методы = Элемент.ТекущиеДанные.Methods;
        Если
Методы.Количество()>0 Тогда
           
ТабличныйДокумент = Новый ТабличныйДокумент;
           
СчСтрок = 1;
            Для каждого
Метод Из Методы Цикл
               
ТабличныйДокумент.Область(СчСтрок, 1, СчСтрок, 1).Текст = Метод;
               
СчСтрок = СчСтрок + 1;
            КонецЦикла;
           
ТабличныйДокумент.Показать();
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьЗапрос(Команда)
   
ВыполнитьЗапросНаСервере();
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// Серверные методы формы

&НаСервере
Процедура ВыполнитьЗапросНаСервере()

   
WMIЗапрос = ПолучитьCOMОбъектWMI(Объект.ИмяСервера);

   
// "*" желательно заменить для ускорения на конкретный список полей
   
WMIРезультаты = WMIЗапрос.ExecQuery(Объект.ТекстЗапроса);

   
РезультатЗапроса = ПреобразоватьРезультатыWMIвТаблицуЗначений(WMIРезультаты,
       
Объект.СобиратьСистемныеСвойства,
       
Объект.СобиратьМетоды,
       
Объект.ПолучатьПуть,
        Ложь);
   
//РезультатЗапроса.Колонки.Удалить("Значение"); // В ней содержатся "COMОбъект", которые не выводятся

   
ВывестиТаблицуЗначений("РезультатЗапроса", РезультатЗапроса);

КонецПроцедуры

// Перезаполняет реквизит формы из таблицы значений.
// Предполагается, что реквизит уже есть на форме. Перезаполнение происходит
// полностью вместе с пересозданием колонок. Так медленнее, зато проще.
//
// Параметры:
//  ИмяРеквизита - Строка - Имя заполняемого реквизита формы
//  ЗначениеРеквизита -  ТаблицаЗначений - чем заполнять реквизит
//
&НаСервере
Процедура ВывестиТаблицуЗначений(ИмяРеквизита, ЗначениеРеквизита)

   
ЭлементФормы = Элементы[ИмяРеквизита];
   
ПутьКДанным = ЭлементФормы.ПутьКДанным;

   
МассивДобавляемыхРеквизитов = Новый Массив;
   
МассивУдаляемыхРеквизитов = Новый Массив;

    Для каждого
ТекРеквизит из ПолучитьРеквизиты(ПутьКДанным) Цикл
       
МассивУдаляемыхРеквизитов.Добавить(ТекРеквизит.Путь + "." + ТекРеквизит.Имя);
       
ИмяЭлементаВТаблице = ИмяРеквизита + ТекРеквизит.Имя;
       
Элемент = Элементы.Найти(ИмяЭлементаВТаблице);
        Если не
Элемент = Неопределено Тогда
           
Элементы.Удалить(Элемент);
        КонецЕсли;
    КонецЦикла;

    Для Каждого
Колонка Из ЗначениеРеквизита.Колонки Цикл
       
ДобавляемыйРеквизит = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ПутьКДанным, Колонка.Имя);
       
МассивДобавляемыхРеквизитов.Добавить(ДобавляемыйРеквизит);
    КонецЦикла;

   
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,МассивУдаляемыхРеквизитов);
   
ЗначениеВРеквизитФормы(ЗначениеРеквизита, ПутьКДанным);

    Для Каждого
ТекРеквизит Из МассивДобавляемыхРеквизитов Цикл

       
ИмяЭлементаВТаблице = ИмяРеквизита + ТекРеквизит.Имя;
       
Элемент = Элементы.Добавить(ИмяЭлементаВТаблице, Тип("ПолеФормы"), ЭлементФормы);
       
Элемент.Вид = ВидПоляФормы.ПолеВвода;
       
Элемент.ПутьКДанным = ПутьКДанным + "." + ТекРеквизит.Имя;
       
Элемент.ТолькоПросмотр = Истина;

    КонецЦикла;

КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// Блок функций WMI, если хотите использовать их в своих программах, то лучше
// вынести в отдельный модуль. Модуль лучше сделать серверным, потому что
// используются таблицы значений. Не забудьте удалить директивы компиляции.

// Возвращает настроенный COM-объект WMI
//
// Параметры:
//  ИмяСервера - Строка, имя или IP-адрес компьютера с которого будут получаться
//              значения счетчиков производительности. Можно не указывать, если
//              значения получаются со своего компьютера
//  ИмяСервераИсполнителя -  Строка, имя или IP-адрес компьютера на котором создаётся
//              COM объект. Обычно можно не указывать
//  ТочкаПодключения - Строка - по умолчанию "root\cimv2", но можно указать и своё
//
// Возвращаемое значение:
//  COMОбъект - objWMIService
//
&НаСервереБезКонтекста
Функция ПолучитьCOMОбъектWMI(Знач ИмяСервера = Неопределено, Знач ИмяСервераИсполнителя = Неопределено, Знач ТочкаПодключения = Неопределено) Экспорт

   
//http://msdn.microsoft.com/en-us/library/windows/desktop/aa389763(v=vs.85).aspx
   
Если Не ЗначениеЗаполнено(ИмяСервераИсполнителя) Тогда
       
Locator = Новый COMОбъект("WbemScripting.SWbemLocator");
    Иначе
       
Locator = Новый COMОбъект("WbemScripting.SWbemLocator", ИмяСервераИсполнителя);
    КонецЕсли;

    Если Не
ЗначениеЗаполнено(ИмяСервера) Тогда
       
ИмяСервера = ".";
    КонецЕсли;

    Если Не
ЗначениеЗаполнено(ТочкаПодключения) Тогда
       
ТочкаПодключения = "root\cimv2";
    КонецЕсли;

   
objWMIService = Locator.ConnectServer(ИмяСервера, ТочкаПодключения);
    Возврат
objWMIService;

КонецФункции

// Преобразует результаты WMI-запроса в таблицу значений
//
// Параметры:
//  РезультатыWMI - COMОбъект - "сырые" результаты WMI-запроса
//  СобиратьСистемныеСвойства - Булево - признак необходимости сбора системных свойств, необязательный, по умолчанию Ложь
//  СобиратьМетоды - Булево - признак необходимости доступных методов, необязательный, по умолчанию Ложь
//  ПолучатьПуть - Булево - получать или не получать колонку с полным путем к значению в терминах WMI, по умолчанию Истина.
//  ПолучатьЗначениеWMI - Булево - получать или не получать колонку с самим значением WMI строки, по умолчанию Истина
//
// Возвращаемое значение:
//  ТаблицаЗначений - Преобразованная таблица значений (нетипизированная, потому что добывать типы сложно)
//
// Примечание:
// 1. ПолучатьЗначение следует устанавливать в Ложь, если планируется вывод на форму (COM-объект,
// содержащийся в колонке нормально не выводится), в Истина, если планируется вызов методов или другая доп. логика
// 2. ПолучатьПуть можно установить в Ложь, если нужно минимизировать передачу данных
&НаСервереБезКонтекста
Функция ПреобразоватьРезультатыWMIвТаблицуЗначений(РезультатыWMI,
        Знач
СобиратьСистемныеСвойства = Ложь,
        Знач
СобиратьМетоды = Ложь,
        Знач
ПолучатьПуть = Истина,
        Знач
ПолучатьЗначениеWMI = Истина) Экспорт

   
ТаблицаWMI = Новый ТаблицаЗначений;
    Если
ПолучатьЗначениеWMI Тогда
       
ТаблицаWMI.Колонки.Добавить("Значение");
    КонецЕсли;
    Если
ПолучатьПуть Тогда
       
ТаблицаWMI.Колонки.Добавить("Path");
    КонецЕсли;
    Если
СобиратьМетоды Тогда
       
ТаблицаWMI.Колонки.Добавить("Methods");
    КонецЕсли;

    Для Каждого
ЗначениеWMI Из РезультатыWMI Цикл
       
СтрокаТаблицыWMI = ТаблицаWMI.Добавить();
        Если
ПолучатьЗначениеWMI Тогда
           
СтрокаТаблицыWMI.Значение = ЗначениеWMI;
        КонецЕсли;
       
Свойства = ПолучитьСтруктуруИзЗначенияWMI(ЗначениеWMI.Properties_);

       
ДобавитьСтруктуруВСтрокуТаблицаЗначений(СтрокаТаблицыWMI, Свойства);
        Если
СобиратьСистемныеСвойства Тогда
           
СистемныеСвойства = ПолучитьСтруктуруИзЗначенияWMI(ЗначениеWMI.SystemProperties_);
           
ДобавитьСтруктуруВСтрокуТаблицаЗначений(СтрокаТаблицыWMI, СистемныеСвойства);
        КонецЕсли;
        Если
ПолучатьПуть Тогда
           
СтрокаТаблицыWMI.Path = ЗначениеWMI.Path_.Path;
        КонецЕсли;

        Если
СобиратьМетоды Тогда

           
СтрокаТаблицыWMI.Methods = Новый Массив;

           
// Описания методов возвращаем для людей, поэтому описание "человеколюбивое"
           
Для Каждого МетодWMI из ЗначениеWMI.Methods_ Цикл

               
ОписаниеМетода = "Метод: " + МетодWMI.Name;
                Если
МетодWMI.InParameters <> Неопределено Тогда
                    Для Каждого
ПараметрWMI из МетодWMI.InParameters.Properties_ Цикл
                       
КвалификаторыПраметра = ПолучитьСтруктуруИзЗначенияWMI(ПараметрWMI.Qualifiers_);
                       
ОписаниеМетода = ОписаниеМетода + Символы.ПС + "Входной параметр: " + ПараметрWMI.Name;
                    КонецЦикла;
                КонецЕсли;

                Если
МетодWMI.OutParameters <> Неопределено Тогда
                    Для Каждого
ПараметрWMI из МетодWMI.OutParameters.Properties_ Цикл
                       
КвалификаторыПраметра = ПолучитьСтруктуруИзЗначенияWMI(ПараметрWMI.Qualifiers_);
                       
ОписаниеМетода = ОписаниеМетода + Символы.ПС + "Выходной параметр: " + ПараметрWMI.Name;
                    КонецЦикла;
                КонецЕсли;

               
СтрокаТаблицыWMI.Methods.Добавить(ОписаниеМетода);

            КонецЦикла;

        КонецЕсли;

    КонецЦикла;

    Возврат
ТаблицаWMI;

КонецФункции

// Преобразует строку результатов WMI в структуру
//
// Параметры:
//  ЗначениеWMI - COMОбъект - строка результатов WMI-запроса
//
// Возвращаемое значение:
//  Структура - Коллекция значнний строки результатов WMI-запроса
//
&НаСервереБезКонтекста
Функция ПолучитьСтруктуруИзЗначенияWMI(ЗначениеWMI)

   
Рез = Новый Структура;
    Для каждого
СвойствоWMI из ЗначениеWMI Цикл
        Если
ТипЗнч(СвойствоWMI.Value) = Тип("COMSafeArray") Тогда
           
Рез.Вставить(СвойствоWMI.Name, СвойствоWMI.Value.Выгрузить());// возможно массив надо будет переделать
       
Иначе
           
Рез.Вставить(СвойствоWMI.Name, СвойствоWMI.Value);
        КонецЕсли
    КонецЦикла;

    Возврат
Рез;

КонецФункции

// Добавляет все значения структуры в строку ТЗ. Если не хватает колонок - добавляет нетипизированную
//
// Параметры:
//  ТекущаяСтрокаТаблицы - СтрокаТаблицыЗначений - Строка в которую записываются данные
//  ДобавляемаяСтруктура - Структура - структура с значениями
//
// Возвращаемое значение:
//  Структура - Коллекция значнний строки результатов WMI-запроса
//
&НаСервереБезКонтекста
Процедура ДобавитьСтруктуруВСтрокуТаблицаЗначений(ТекущаяСтрокаТаблицы, ДобавляемаяСтруктура)

   
ТаблицаЗначений = ТекущаяСтрокаТаблицы.Владелец();
   
Колонки = ТаблицаЗначений.Колонки;
    Для Каждого
ЭлементСтруктуры Из ДобавляемаяСтруктура Цикл
        Если Неопределено =
Колонки.Найти(ЭлементСтруктуры.Ключ) Тогда
           
Колонки.Добавить(ЭлементСтруктуры.Ключ);
        КонецЕсли;
       
ТекущаяСтрокаТаблицы[ЭлементСтруктуры.Ключ] = ЭлементСтруктуры.Значение;
    КонецЦикла

КонецПроцедуры

Напоследок

  • Это не супер-пупер инструмент, а скорее наколеночная демонстрация работы с WMI, просто, к сожалению, я не нашёл аналога в существующих разработках.
  • Проверено в 1С 8.2 и 1С 8.3 в управляемых формах.
  • Очевидно, что при правильно настроенном rphost могут возникнуть проблемы с правами (rphost должен быть почти бесправен).
  • Код этой обработки можете свободно использовать в своих разработках.
  • Замечания и предложения принимаются :)

 

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2756    11    1    

30

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    3243    10    1    

31

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177340    1070    0    

846

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27144    78    146    

59

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11706    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31040    31    18    

47

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61228    87    59    

72

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10893    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7133 11.06.13 09:42 Сейчас в теме
Поддержка WQL (WMI) реализована в консоли запросов (ИР) с конструктором запроса и отображением справочной информации по классам/свойствам. https://www.youtube.com/watch?v=bFDDJqToPTM
tol_l; juker; speshuric; +3 Ответить
2. speshuric 1326 11.06.13 13:00 Сейчас в теме
(1) tormozit, Я очень рад, что эта возможность появилась в ИР. Всем заинтересованным рекомендую для ознакомления/использования
3. CaSH_2004 372 23.08.14 21:07 Сейчас в теме
Из пожеланий: явно нужен обычный режим, не все работают в УФ.
4. speshuric 1326 17.09.14 01:43 Сейчас в теме
(3) Ну так, вон, Сергей утянул в свои тулзы, они не в УФ. Я дальше и не стал ничего делать, у Сергея всё отлично работает, меня устраивает.
5. veterskv 10.03.17 11:46 Сейчас в теме
Замечательная статья, но вопрос. Можно ли с помощью WMI повлиять на настройки принтера? Не на параметры страницы табличного документа, а именно на настройки принтера.
Необходимо: выводить документ с настройками:
2 копии
разобрать на копии = Истина
2 страницы на лист (страницы - портрет, лист - ландшафт)
двусторонняя печать

Сложность в том, что когда задаешь параметры для ТабДок средствами 1С, то упорно получается: (страницы - портрет, лист - портрет) или (страницы - ландшафт, лист - портрет), т.е. лист всегда портрет.
А если устанавливать параметры через настройки принтера, то все получается как надо.
6. zekrus 151 04.05.18 13:03 Сейчас в теме
Добрый день!
Тема весьма актуальная.
Было бы еще замечательно добавить дерево запросов, с возможностью сохранения в файл (по аналогии с консолью запросов).
П.С. никто не в курсе какой запрос нужен для получения сеансов пользователей - нужны логины (пытаюсь учитывать перекуры за день)?
С уважением
7. tormozit 7133 04.05.18 13:36 Сейчас в теме
(6) А (1) Чем не устраивает?
8. zekrus 151 04.05.18 13:52 Сейчас в теме
(7) Прокси-сервер отказывается принимать соединения - https://www.youtube.com/watch?v=bFDDJqToPTM
9. tormozit 7133 04.05.18 17:07 Сейчас в теме
(8) А в (0) он соглашается принимать соединения?
11. zekrus 151 05.05.18 06:00 Сейчас в теме
10. tormozit 7133 04.05.18 20:05 Сейчас в теме
(8) Если возникла проблема с этим инструментом то рекомендую описать ее подробно на форуме основного сайта ИР.
12. zekrus 151 05.05.18 06:00 Сейчас в теме
(10) Дело не в инструменте (а в ссылке на него, слово ИР для меня не знакомо). Ютюб на работе закрыт. Попробовал поиском найти "инструмент разработчика" так в публикации нет упоминатий в описании об работе с WMI. И сюда то я пришел по этому же поиску "WMI" с яндекса (правьте и к вам придут с яндекса).
13. M_Volkov 5 16.11.20 18:03 Сейчас в теме
Смотрю функцию:
	Результат = Ложь;	Адрес = "";
	wmi = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2");
	oColPings=wmi.ExecQuery("Select * From Win32_PingStatus where Address = '" + ИмяКомпьютера + "' and ResolveAddressNames = True");
	 Для Каждого objStatus Из oColPings Цикл 
		Если objStatus.StatusCode = 0 Тогда
			Адрес = objStatus.ProtocolAddressResolved;
			Результат = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Возврат Результат;
Показать
Работает, но дает Адрес не IP-адрес, а ИмяКомпьютера.ИмяДомена. Менял objStatus.ProtocolAddressResolved на objStatus.IPAddress - дает Истина. Чем заменить?
Оставьте свое сообщение