Анализ журналов аудита подсистемы печати Windows в 1С:Предприятие

13.06.18

Администрирование - Мониторинг

Пример использования библиотеки "Работа с PowerShell из 1С" для получения событий аудита подсистемы печати Windows с последующим анализом количества распечатанных документов в различных разрезах.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Демонстрационная конфигурация
.cf 44,09Kb
6 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Введение 

В реальной жизни, периодически возникают задачи оценки загруженности принтеров в различных разрезах. В ОС Windows имеются инструменты, позволяющие регистрировать события, связанные с печатью документов, однако их последующая обработка и анализ требуют определенных усилий. С другой стороны, платформа 1С:Предприятие обладает развитыми инструментами для хранения данных и построения отчетов, однако не обладает развитыми средствами для сбора информации, в частности из журналов событий Windows. Таким образом настоящая статья является одним из примеров того, как можно при помощи компонента для работы с PowerShell из 1С совместить плюсы обеих систем для решения практической задачи. 

Описание 

Пример реализован в виде демонстрационной конфигурации. Функционал примера, может быть протестирован при использовании совместно с продуктивной версией библиотеки для работы с PowerShell либо при использовании тестовой базы online.

ВАЖНО!

Конфигурация в аттачменте НЕ ВКЛЮЧАЕТ компонент для работы с PowerShell. Для получения полной функциональности его нужно приобрести отдельно.

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

 

Настраиваем аудит событий печати 

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

  

Включаем журнал аудита событий печати 

В оснастке Event Viewer выбираем Applications and Services Logs->Microsoft->Windows->Print Service->Operational. 

В панели Action (находится справа) нажимаем Enable Log (см. рис. 1.). 

В производственной среде данную настройку можно сделать при помощи групповых политик. 

 

Настраиваем принтеры для генерации событий аудита 

В панели управления выбираем Devices and Printers. 

Выбираем нужный нам принтер (для тестов используем Microsoft XPS Writer, который установлен по умолчанию) и переходим к его свойствам (прваой кнопкой мыши на принтере->Printer Properties) (см. рис. 2.). 

Выбираем вкладку Security и переходим к дополнительным свойствам (кнопка Advanced) (см. рис 3.). 

В открывшемся окне переходим на вкладку Auditing и добавляем запись параметров аудита. 

В окне добавления записи аудита выбираем пользователя или группу, для которой будет осуществляться аудитнашем случае Everyone), выбираем тип событий - Success (успех) и тип разрешений Print (Печать) (см. рис. 4.). 

Далее сохраняем сделанные настройки.  

 

Проверка генерации событий аудита 

Открываем notepad. 

Распечатываем документ на принтере, который мы настроили ранее. 

Если все настроено корректно, в журнале Applications and Services Logs->Microsoft->Windows->Print Service->Operational появятся соответствующие события, среди которых будет событие с кодом 307. 

 

Импорт данных в 1С:Предприятие 

Как можно увидеть (см. рис. 5.), в событии с кодом 307 есть информация о пользователе, который распечатал документ, компьютере, с которого пользователь осуществлял печать, имени принтера, на который осуществлялась печать, а также количестве распечатанных страниц. В принципе этой информации нам достаточно и теперь, необходимо передать ее в 1С:Предприятие для последующей обработки и анализа.  

Возможно несколько вариантов организации импорта, однако в нашем случае мы воспользуемся компонентом для работы с PowerShell из 1С:Предприятие. 

  

Скрипт PowerShell 

Недолгий поиск дает нам заготовку скрипта PowerShell, которую мы можем использовать для извлечения необходимых нам событий из журнала Windows (https://gist.github.com/9to5IT/9619820). 

Немного модифицировав скрипт под нашу задачу, получим что-то типа: 

 

param 

( 

$computer, 

$EventStartTime,  

$EventEndTime 

) 

 

if ($EventStartTime -eq $null) 

{ 

         $EventStartTime = (([System.DateTime]::Now.addDays(-1)).Date) 

} 

else 

{ 

        $EventStartTime = [System.DateTime]::ParseExact($EventStartTime,'yyyyMMddHHmmss',$null)  

} 

 

if ($eventEndTime -eq $null) 

{ 

        $eventEndTime = [System.DateTime]::Now 

} 

else 

{ 

        $EventEndTime = [System.DateTime]::ParseExact($EventEndTime,'yyyyMMddHHmmss',$null)  

} 

 

$aPrinterList = @() 

 

$Results = Get-WinEvent -Computer $computer -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307; StartTime=$EventStartTime; EndTime=$EventEndTime; } 

 

ForEach($Result in $Results) 

{  

        $ProperyData = [xml]$Result.ToXml()  

 

        $hItemDetails = New-Object -TypeNamepsobject -Property @{  

        DocName = $ProperyData.Event.UserData.DocumentPrinted.Param2  

        UserName = $ProperyData.Event.UserData.DocumentPrinted.Param3  

        MachineName = $ProperyData.Event.UserData.DocumentPrinted.Param4  

        PrinterName = $ProperyData.Event.UserData.DocumentPrinted.Param5  

        PageCount = $ProperyData.Event.UserData.DocumentPrinted.Param8  

        TimeCreated = $Result.TimeCreated.ToString("yyyyMMddHHmmss") } 

        $aPrinterList += $hItemDetails 

}  

 

return $aPrinterList 

 

Разрешаем удаленное подключение к серверу печати посредством PowerShell 

 

Поскольку скрипт использует удаленное подключение к серверу печати, необходимо разрешить удаленное администрирование сервера печати через PowerShell. 

 

Это можно сделать запустив команду winrm quickconfig из консоли с правами администратора или выполнив командлет Enable-PSRemoting из консоли PowerShell, запущеной с правами администратора.В производственной среде данную настройку можно сделать при помощи групповых политик. 

 

 

1C:Предприятие 

Создаем общий макет и помещаем туда созданный ранее скрипт.  

Создаем объекты конфигурации, которые необходимы для хранения полученных данных (см. рис. 6.).  

Создаем процедуру импорта данных. Фрагмен ткода, иллюстрирующий работу с компонентом представлен ниже: 

 

// Инициализируем компонент PowerShell 

Компонент = PS.ЗагрузитьКомпонент(); 

Конвейер = PS.СоздатьКонвейерКоманд(Компонент); 

Конвейер.ReceiveTimeout = ПолучитьТаймаутЗапроса(); 

 

// Получаем текст скрипта PowerShell 

Текст =PSСлужебный.ПолучитьТекстИзОбщегоМакета("PSРаботаСПринтерами"); 

 

// Формируемпараметры 

МассивПараметров = НовыйМассив; 

МассивПараметров.Добавить(ПолучитьНаименованиеСервераПечати(СерверПечати)); 

МассивПараметров.Добавить(Формат(ДатаНачала, "ДФ=yyyyMMddHHmmss")); 

МассивПараметров.Добавить(Формат(ДатаОкончания, "ДФ=yyyyMMddHHmmss")); 

 

// Выполняемскрипт 

Результаты = PS.ВыполнитьPowerShell(Текст, МассивПараметров, Компонент, Конвейер); 

 

ЕслиPS.БылиОшибки(Компонент, Конвейер) Тогда 

Ошибки = PS.ПолучитьОшибки(Компонент, Конвейер); 

Попытка 

Рез = 1/0; 

Исключение 

ЕслиТипЗнч(Ошибки.Objects.Object.Property) = Тип("Массив") Тогда 

ВызватьИсключениеОшибки.Objects.Object.Property[0].Exception; 

Иначе 

ВызватьИсключениеОшибки.Objects.Object.Property.Exception; 

КонецЕсли; 

КонецПопытки; 

КонецЕсли; 

 

// Обновляем/добавляемданные 

ПринтерыСервер.ОбновитьИнформациюОРаспечатанныхДокументах(СерверПечати, ДатаНачала, Результаты); 

 

// Освобождаемресурсы 

PS.ВыгрузитьКомпонент(Компонент); 

 

Тестируем работу online 

Создаем демонстрационную базу online. 

Задаем таймаут выполнения запроса, равным скажем 300000 (см. рис. 7.). Это максимальное время ожидание ответа от сервера PowerShell в миллисекундах (время работы скрипта). 

Создаем элемент справочника Серверы печати (см. рис. 8.). 

Распечатываем несколько документов на тестовый принтер. 

Запускаем обработку импорта данных. 

Смотрим результаты в отчете (см. рис. 9.). 

Вступайте в нашу телеграмм-группу Инфостарт

PowerShell;печать документов

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

31720 руб.

27.03.2025    78403    53    40    

63

Мониторинг Системный администратор Программист 1С:Предприятие 8 Россия Платные (руб)

Обработка позволяет использовать подобные КОРП-функциональности механизмы контроля расхода памяти (сеансом на 1 вызов и рабочими процессами), реагируя завершением "тяжелых" вызовов, перезапуском рабочих процессов при чрезмерном потреблении этого важного ресурса.

3660 руб.

03.05.2023    6859    5    0    

6

Мониторинг Системный администратор 1С 8.3 Бесплатно (free)

Рассмотрим разнообразные подходы к мониторингу 1С. Организация мониторинга публикаций на IIS при помощи ELK. Мониторинг состояния базы при помощи zabbix и rac. Прямые запросы при помощи самописных скриптов из zabbix.

03.03.2026    917    user1287977    0    

5

Мониторинг Системный администратор Программист Бесплатно (free)

Объясняем, как связка Prometheus и Grafana помогает выстроить прозрачный и масштабируемый мониторинг: от первых шагов до продвинутых сценариев работы. Учимся собирать метрики, подключать экспортеры, настраивать Push-gateway, визуализировать данные и строить собственные дашборды. Разбираемся, как контролировать сотни и тысячи показателей, включая бизнес-метрики, и как настроить интеграцию Prometheus с 1С. Материал расширяет технический кругозор и демонстрирует, как поднять рабочий мониторинг за 15 минут.

02.03.2026    1168    ptica    1    

6

Перенос данных 1C Мониторинг Программист 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

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

1 стартмани

29.01.2026    615    1    Triplexx    0    

2

Мониторинг Системный администратор Программист Бесплатно (free)

Описания проблем и решений при настройке мониторинга. Мои подготовительные мероприятия.

23.01.2026    903    ImHunter    5    

2

Технологический журнал Мониторинг Системный администратор Программист Бесплатно (free)

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

29.12.2025    7214    leongl    0    

18

HighLoad оптимизация Мониторинг Системный администратор Программист Бесплатно (free)

Делимся опытом поддержки баз 1С с более чем 6 000 одновременно работающих пользователей и рассказываем о ключевых подходах к контролю высоконагруженных систем. Рассмотрим реальные кейсы и дадим ответ на вопрос о том,: что точно надо контролировать. Сравним ElasticSearch и ClickHouse, дадим ссылки на статьи и репозитарии для быстрого старта, а также посмотрим на примеры рабочих столов для анализа логов технологического журнала в ElasticSearch.

19.12.2025    2638    Sergey.Noskov    3    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. zorven 05.05.16 09:58 Сейчас в теме
Отличный софт для анализа журналов событий Windows,Event Log Explorer™ это эффективное средство для просмотра и анализа событий, хранящихся в журналах операционных систем семейства Microsoft Windows. Программа позволяет существенно ускорить и упростить решение задач анализа журналов событий, таких как журнал безопасности, журнал приложений, журнал системы, журнал установки и других.Скачать можно через http://eventlogxp.com/rus/.
2. zekrus 152 13.06.18 08:50 Сейчас в теме
Доброе утро!
Тема весьма актуальная, но почему нет полной версии (демо не работает)?
// Этот модуль не содержит какого либо функционала т. к. поставляется с ДЕМО версией

Функция ЗагрузитьКомпонент(Порт = 0, КоличествоПотоков = 3, Таймаут = 15) Экспорт
	
	
КонецФункции

С уважением
3. blackhole321 1306 13.06.18 09:16 Сейчас в теме
(2)Доброе, для того, чтобы версия стала полностью работоспособной, необходим компонент https://infostart.ru/public/274486/.
Вроде-как в описании об этом прямо говорится. Если что - могу пульнуть стартмани обратно.
4. zekrus 152 13.06.18 12:50 Сейчас в теме
(3) Лучше было бы добавить в имени файла комментарий - без компонента "PS". Конфа в мусорке если честно.
5. blackhole321 1306 13.06.18 13:09 Сейчас в теме
(4)Так годится?
Со стартмани сейчас порешаем.
Для отправки сообщения требуется регистрация/авторизация