Программное создание скриншотов из 1С

07.05.15

Разработка - Инструментарий разработчика

Пример программного создания снимков экрана (скриншотов) непосредственно из 1С.

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

Наименование Файл Версия Размер
Скриншот.epf
.epf 9,77Kb
138
.epf 9,77Kb 138 Скачать

Суть обработки:

С помощью COM Объекта "WScript.Shell" производится запуск MS PowerShell. При запуске PowerShell параметром передаётся скрипт выполнения снимка экрана. Снимок сохраняется во временный каталог, отображается на экране и далее удаляется.

Возможное применение:

Автоматизация сбора ошибок от пользователей. Не все пользователи занают, что можно снимок экрана сделать. Из тех, кто знает, не каждый может его к письму, и/или запросу в сервис деск приложить.

Во вложении обработка-пример для обычного приложения.

Скрипт PowerShell (строка 1С):

Текст = """& {[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()}""";

скриншот снимок экрана

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122137    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7288    21    6    

39

SALE! 20%

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

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

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

10000 8000 руб.

10.11.2023    3531    11    1    

34

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177744    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99345    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

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

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18109    6    8    

39

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28108    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23601    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. set5553 08.05.15 05:15 Сейчас в теме
Интересно. а как дальше допустим по почте передавать, если "создается временный файл, а потом удаляется"? УФ тестировали?
2. terroristish 95 08.05.15 10:25 Сейчас в теме
Файл скриншота создаётся в каталоге временных файлов. После создания он загружается в элемент формы (поле картинки) и удаляется из каталога временных файлов за ненадобностью. Это логично, т.к. данная обработка не является законченным решением, а лишь служит примером, того как можно сделать скриншот программно.
По поводу использования в УФ, могу сказать, что точно так же сделать не получится. В виду того, что согласно синтаксис-помощнику, если картинка задается программно, то может быть установлена либо пустая картинка, либо или картинка из библиотеки. Конечно можно выкрутиться и всё равно, его (скриншот) отобразить, например с помощью HTML.
Сейчас добавлю пример для УФ.
6. PrinzOfMunchen 83 13.05.15 09:27 Сейчас в теме
(2) а с помощью этого скрипта можем сделать скриншот определенной области? А вообще, можно ли как нибудь табличный документ сконвертировать в картинку другим способом?
8. terroristish 95 13.05.15 14:48 Сейчас в теме
(6) PrinzOfMunchen, "а с помощью этого скрипта можем сделать скриншот определенной области?" - с помощью представленного мною скрипта - нет. Нужно скрипт править.
"можно ли как нибудь табличный документ сконвертировать в картинку" - на мой взгляд, этот вопрос, никак не связан с данной публикацией. Стандартными средствами платформы табличный документ нельзя сохранить в картинку. Смотрите в СП ТабличныйДокумент метод Записать() и/или ТипФайлаТабличногоДокумента.
20. litvinov_yu 18.06.21 16:03 Сейчас в теме
(17)

+ "$size = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds;"
//+ "$size = [Windows.Forms.SystemInformation]::VirtualScreen;"
3. eugeniezheludkov 43 12.05.15 01:46 Сейчас в теме
<Зануда>
Возможное приминение:
<\Зануда>
AleksAaron; +1 Ответить
4. terroristish 95 12.05.15 11:59 Сейчас в теме
(3) eugeniezheludkov, спасибо! Поправил.
5. Yashazz 4709 13.05.15 07:49 Сейчас в теме
Это знаете где хорошо применять? Я такое делал, когда меня попросили распечатывать яндекс-карту из 1С. Выяснилось, что API яндекса печатать не умеет, они сами-то долго мучались и через static api сделали, а в 1С вилы. В результате я выводил карту в форму, открытую модально в режиме рабочего стола (обычный интерфейс, не УФ), её скриншотил, а уж рисунок распечатывал. Тоже через WScript делал, кстати.
7. xaozai 13.05.15 09:36 Сейчас в теме
Есть ВК, которая скрины делает: http://infostart.ru/public/172868/
PowerShell не у всех есть.
9. terroristish 95 13.05.15 14:59 Сейчас в теме
(7) xaozai, Спасибо за ссылку. Особенно ценно, что компонента разработана по технологии Native API. Что PowerShell не у всех есть - согласен.
Всё таки очевидный плюс моего решения, заключается в отсутствии необходимости использования сторонних ВК.
10. echo77 1868 10.08.16 20:11 Сейчас в теме
Рекомендую, все таки проверить опечатки вордом
Не все пользователи занают,
11. zekrus 151 01.08.17 13:37 Сейчас в теме
Добрый день!
Тема весьма актуальная.
Было бы здорово организовать скриншот распакованной формы обработки (в формате внутренней строки).
Пример:
"{2,
{36,0,0,0,0,1,0,1,00000000-0000-0000-0000-000000000000,1,
{1,1,
{"ru","(вер 1.1)"}
},0,0,1,1,1,0,0,0,
{1,3ccc650e-f631-4cae-8e33-3eaac610b5f9,"ПриОткрытии"},
{0},1,
{19,
{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1,
{0,
{0,
{"B",1},0}
},9,"ФормаКоманднаяПанель",
{1,0},
{1,0},0,1,0,0,0,2,2,
{3,4,
{0}
}"
П.С.: Цель автоматическая генерация документации файла внешней обработки или отчета, парсер кода есть.
С уважением
12. Boneman 298 01.08.17 13:48 Сейчас в теме
Интересна только идея, за это звезда.
Но с практической стороны, вроде бы и бесполезная фигня. Везде где работал, у пользователей куча разношерстных баз, и типовых и нетиповых. А скриншоты в основном нужны, например когда база крашится, или вываливает ошибку, где нужно еще нажать "подробно"...и смысл наворотов вроде как бесполезен в зоопарке. Тут внешняя среда исполнения нужна, в винде.
14. feva 516 20.04.18 14:13 Сейчас в теме
(12)По большей части Вы правы.
Но нашёл применение на практике.
Есть одна большая база (овер 1000 продаж в день, 150+ юзверей бъют копытцами по клавиатуе весь день). Сделал пул самых опасных и прикрутил к парсеру нагрузки сервера отправку на клиент команды для лепки скриншота после чего грохаю сеанс. Потом админ с вещ. доком идёт бить по лицу.
mrChOP93; +1 Ответить
15. terroristish 95 20.04.18 17:53 Сейчас в теме
(14) Годное приминение
13. feva 516 20.04.18 12:56 Сейчас в теме
16. user932670 17.06.18 11:00 Сейчас в теме
Идея да хорошая, но почему скриншот экрана, не полностью, он обрезается справа и делает это не только на форме, но и в файле.
17. quares 21 27.11.18 21:23 Сейчас в теме
А как передать команду, чтобы делался скриншот только активного экрана? У меня их несколько. Это возможно?
18. Kaco 14.03.19 12:21 Сейчас в теме
Как убрать черное окно со скриншота?
19. bimy22 01.04.19 15:20 Сейчас в теме
Блин,вещь действительно крутая! Почему не было этой темы, когда я пыталась что-то подобное реализовывать :(
21. 1v7 235 26.10.21 13:33 Сейчас в теме
&НаКлиенте
Процедура Скриншот_сеанса(Полный_путь_к_файлу = "") // доступна с версии 8.3.17

    // Сохранение скриншота текущего сеанса пользователя (по переданному адресу)
    // Установить в настройках БД: "Управление настройками обработки ошибок" -
    // "Снимок окон приложения" = "Отправлять"

    #Если НЕ ВебКлиент Тогда

        // Получаем имя временного файла с типом: Строка
        Временный_zip_файл = ПолучитьИмяВременногоФайла("zip");

        // Регистрация (сохранение и отправки данных) ошибки
        Отчет_об_ошибке = Новый ОтчетОбОшибке(ИнформацияОбОшибке());
        Отчет_об_ошибке.Записать(Временный_zip_файл, Ложь);

        // Получаем имя каталога временных файлов пользователя
        Каталог_файлов = КаталогВременныхФайлов() + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");

        // Чтение файла ZIP
        Архив_zip  = Новый ЧтениеZipФайла(Временный_zip_файл);
        Архив_zip.ИзвлечьВсе(Каталог_файлов, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);

        // Случайное число в диапазоне от 1 до 999999 для рандомного имени файла
        ГенераторСлЧисел = Новый ГенераторСлучайныхЧисел();
        СлучЧисло=ГенераторСлЧисел.СлучайноеЧисло(1,999999);

        // Сохраняем скриншот 1С в папку
        Путь_к_скриншоту = Каталог_файлов + "\screen"+СлучЧисло+".png";
        КопироватьФайл(Путь_к_скриншоту, Полный_путь_к_файлу);

        // Чистим мусор
        УдалитьФайлы(Временный_zip_файл);
        УдалитьФайлы(Каталог_файлов);

    #КонецЕсли

КонецПроцедуры
Показать
rhtr; user1069316; Tokiy; +3 Ответить
Оставьте свое сообщение