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

07.05.15

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

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

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Скриншот.epf
.epf 9,77Kb
145 1 850 руб. Купить

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

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

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

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

С помощью 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()}""";

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

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

См. также

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

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

15500 руб.

02.09.2020    204490    1125    410    

1025

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    36217    209    104    

197

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

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

16000 руб.

10.11.2023    16643    72    39    

89

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    24212    63    28    

92

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

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

9360 руб.

17.05.2024    34980    125    53    

167

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    1916    1    0    

8

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

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

6000 руб.

07.02.2018    107515    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. set5553 08.05.15 05:15 Сейчас в теме
Интересно. а как дальше допустим по почте передавать, если "создается временный файл, а потом удаляется"? УФ тестировали?
2. terroristish 97 08.05.15 10:25 Сейчас в теме
Файл скриншота создаётся в каталоге временных файлов. После создания он загружается в элемент формы (поле картинки) и удаляется из каталога временных файлов за ненадобностью. Это логично, т.к. данная обработка не является законченным решением, а лишь служит примером, того как можно сделать скриншот программно.
По поводу использования в УФ, могу сказать, что точно так же сделать не получится. В виду того, что согласно синтаксис-помощнику, если картинка задается программно, то может быть установлена либо пустая картинка, либо или картинка из библиотеки. Конечно можно выкрутиться и всё равно, его (скриншот) отобразить, например с помощью HTML.
Сейчас добавлю пример для УФ.
6. PrinzOfMunchen 84 13.05.15 09:27 Сейчас в теме
(2) а с помощью этого скрипта можем сделать скриншот определенной области? А вообще, можно ли как нибудь табличный документ сконвертировать в картинку другим способом?
8. terroristish 97 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 45 12.05.15 01:46 Сейчас в теме
<Зануда>
Возможное приминение:
<\Зануда>
AleksAaron; +1 Ответить
4. terroristish 97 12.05.15 11:59 Сейчас в теме
(3) eugeniezheludkov, спасибо! Поправил.
5. Yashazz 4863 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 97 13.05.15 14:59 Сейчас в теме
(7) xaozai, Спасибо за ссылку. Особенно ценно, что компонента разработана по технологии Native API. Что PowerShell не у всех есть - согласен.
Всё таки очевидный плюс моего решения, заключается в отсутствии необходимости использования сторонних ВК.
10. echo77 1926 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 302 01.08.17 13:48 Сейчас в теме
Интересна только идея, за это звезда.
Но с практической стороны, вроде бы и бесполезная фигня. Везде где работал, у пользователей куча разношерстных баз, и типовых и нетиповых. А скриншоты в основном нужны, например когда база крашится, или вываливает ошибку, где нужно еще нажать "подробно"...и смысл наворотов вроде как бесполезен в зоопарке. Тут внешняя среда исполнения нужна, в винде.
14. feva 535 20.04.18 14:13 Сейчас в теме
(12)По большей части Вы правы.
Но нашёл применение на практике.
Есть одна большая база (овер 1000 продаж в день, 150+ юзверей бъют копытцами по клавиатуе весь день). Сделал пул самых опасных и прикрутил к парсеру нагрузки сервера отправку на клиент команды для лепки скриншота после чего грохаю сеанс. Потом админ с вещ. доком идёт бить по лицу.
mrChOP93; +1 Ответить
15. terroristish 97 20.04.18 17:53 Сейчас в теме
(14) Годное приминение
13. feva 535 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. by_1Cnik 253 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_файл);
        УдалитьФайлы(Каталог_файлов);

    #КонецЕсли

КонецПроцедуры
Показать
VasilyErmak; abryazgin; rhtr; user1069316; Tokiy; +5 Ответить
22. SergDobrodelov 716 03.12.24 23:43 Сейчас в теме
(21) В коде ошибка
КопироватьФайл(Путь_к_скриншоту, ПолныйПутьКФайлу);
Оставьте свое сообщение