1С 8.3 Скриншот сеанса программно
Данные > Примеры кода 1С > 1С 8.3 Пользователи, роли (права) доступа
Перейти в раздел примеры кода 1С 8.3:
Программное сохраненные скриншота в 1С 8.3:
&НаКлиенте
Процедура Скриншот_сеанса(Полный_путь_к_файлу = "") // доступна с версии 8.3.17
// Сохранение скриншота текущего сеанса пользователя (по переданному адресу)
// Установить в настройках БД: "Управление настройками обработки ошибок" -
// "Снимок окон приложения" = "Отправлять"
#Если НЕ ВебКлиент Тогда
// Получаем имя временного файла с типом: Строка
Временный_zip_файл = ПолучитьИмяВременногоФайла("zip");
// Регистрация (сохранение и отправки данных) ошибки
Отчет_об_ошибке = Новый ОтчетОбОшибке(ИнформацияОбОшибке());
Отчет_об_ошибке.Записать(Временный_zip_файл, Ложь);
// Получаем имя каталога временных файлов пользователя
Каталог_файлов = КаталогВременныхФайлов() + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
// Чтение файла ZIP
Архив_zip = Новый ЧтениеZipФайла(Временный_zip_файл);
Архив_zip.ИзвлечьВсе(Каталог_файлов, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
// Случайное число в диапазоне от 1 до 999999 для рандомного имени файла
ГенераторСлЧисел = Новый ГенераторСлучайныхЧисел();
СлучЧисло=ГенераторСлЧисел.СлучайноеЧисло(1,999999);
// Сохраняем скриншот 1С в папку
Путь_к_скриншоту = Каталог_файлов + "\screen"+СлучЧисло+".png";
КопироватьФайл(Путь_к_скриншоту, Полный_путь_к_файлу);
// Чистим мусор
УдалитьФайлы(Временный_zip_файл);
УдалитьФайлы(Каталог_файлов);
#КонецЕсли
КонецПроцедуры
Процедура Скриншот_сеанса(Полный_путь_к_файлу = "") // доступна с версии 8.3.17
// Сохранение скриншота текущего сеанса пользователя (по переданному адресу)
// Установить в настройках БД: "Управление настройками обработки ошибок" -
// "Снимок окон приложения" = "Отправлять"
#Если НЕ ВебКлиент Тогда
// Получаем имя временного файла с типом: Строка
Временный_zip_файл = ПолучитьИмяВременногоФайла("zip");
// Регистрация (сохранение и отправки данных) ошибки
Отчет_об_ошибке = Новый ОтчетОбОшибке(ИнформацияОбОшибке());
Отчет_об_ошибке.Записать(Временный_zip_файл, Ложь);
// Получаем имя каталога временных файлов пользователя
Каталог_файлов = КаталогВременныхФайлов() + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
// Чтение файла ZIP
Архив_zip = Новый ЧтениеZipФайла(Временный_zip_файл);
Архив_zip.ИзвлечьВсе(Каталог_файлов, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
// Случайное число в диапазоне от 1 до 999999 для рандомного имени файла
ГенераторСлЧисел = Новый ГенераторСлучайныхЧисел();
СлучЧисло=ГенераторСлЧисел.СлучайноеЧисло(1,999999);
// Сохраняем скриншот 1С в папку
Путь_к_скриншоту = Каталог_файлов + "\screen"+СлучЧисло+".png";
КопироватьФайл(Путь_к_скриншоту, Полный_путь_к_файлу);
// Чистим мусор
УдалитьФайлы(Временный_zip_файл);
УдалитьФайлы(Каталог_файлов);
#КонецЕсли
КонецПроцедуры
В предыдущих версиях 1С (до 8.3.17), реализация данного метода была возможна с использованием внешних компонент или с помощью PowerShell:
При запуске PowerShell (COM объект WScript.Shell) параметром передаётся скрипт выполнения снимка экрана. Скриншот сохраняется во временный каталог, отображается на экране и далее удаляется. Пример реализации:
Текст_PS = """& {[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');"
+ "$size = [Windows.Forms.SystemInformation]::VirtualScreen;"
+ "$bitmap = new-object Drawing.Bitmap $size.width, $size.height;"
+ "$graphics = [Drawing.Graphics]::FromImage($bitmap);"
+ "$graphics.CopyFromScreen($size.location,[Drawing.Point]::Empty, $size.size);"
+ "$graphics.Dispose();"
+ "$bitmap.Save('"+ИмяФайлаСкриншота+"');"
+ "$bitmap.Dispose()}""";
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник