Перехват печати (Native API)

10.10.19

Разработка - Разработка внешних компонент

Внешняя компонента для перехвата печати в 1С (Native API, 8.2, 8.3)

Файлы

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

Наименование Скачано Купить файл
КомпонентаСПримером
.7z 115,14Kb
81 3 000 руб. Купить

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

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

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

Представляю вашему вниманию внешнюю компоненту для перехвата события "Печать" в 1С.

Перед печатью компонента генерирует внешнее событие, которое можно обработать.

Для использования:

В модуле управляемого приложения

Перем Hooklib; //обязательно после создания хранить контекст компоненты в глоб. переменной

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если Источник = "PrintHook" И Событие = "PrintStarting" Тогда
	    СохранитьТабДок();
    КонецЕсли; 
	
КонецПроцедуры

Процедура ПриНачалеРаботыСистемы()
	
	//в общем макете(двоичные данные) компонента в виде zip-архива (hooklib.dll и MANIFEST.xml)
	Если ПодключитьВнешнююКомпоненту("ОбщийМакет.HookLib", "Hooklib", AddInType.Native) Тогда
		Hooklib = Новый("AddIn.Hooklib.PrintHook");
		//Hooklib.ЗапретПечати = Истина;
		Hooklib.Перехват(); 
	Иначе
		Сообщить("Компонента не подключена");
	КонецЕсли; 
			                          
КонецПроцедуры

Возможен запрет на распечатывание установкой свойства Hooklib.ЗапретПечати = Истина;

В архиве компонента с исходниками(Delphi7) и конфигурация с ее использованием(8.3). В конфигурации в качестве примера использования компоненты реализовано сохранение копии распечатываемого документа (табличный документ, mxl).

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

перехват печать hook компонента

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18300 руб.

30.05.2017    56540    10    71    

47

Разработка внешних компонент Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

5084 руб.

17.09.2018    40477    118    128    

120

Разработка внешних компонент Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

5094 руб.

02.09.2010    81539    75    280    

193

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    6204    bayselonarrend    17    

54

Разработка внешних компонент Программист 1С:Предприятие 8 Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    10913    kovalevdmv    29    

83

Разработка внешних компонент Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    11449    starik-2005    40    

49
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. anig99 2864 21.07.15 13:01 Сейчас в теме
Ай, спасибо!!!! Ай, молодца!!! Обязательно попробую! Очень нужна для лечения моей параноии
2. пользователь 21.07.15 15:45
Сообщение было скрыто модератором.
...
3. пользователь 21.07.15 16:17
Сообщение было скрыто модератором.
...
4. пользователь 21.07.15 16:21
Сообщение было скрыто модератором.
...
5. пользователь 21.07.15 16:23
Сообщение было скрыто модератором.
...
6. пользователь 21.07.15 16:39
Сообщение было скрыто модератором.
...
7. пользователь 21.07.15 16:53
Сообщение было скрыто модератором.
...
8. пользователь 21.07.15 16:58
Сообщение было скрыто модератором.
...
9. script 128 21.07.15 17:44 Сейчас в теме
ВОТ ОГРОМНОЕ СПАСИБИЩЕ
10. CheBurator 3233 21.07.15 19:25 Сейчас в теме
тыщу лет подобное на клюшках формексом реализовано.
хорошо что и здесь появилось.
11. Makushimo 160 22.07.15 08:25 Сейчас в теме
12. wolfsoft 2421 22.07.15 08:52 Сейчас в теме
Не очень понятно, откуда берётся информация для сохранения печатаемого табличного документа?
13. andboss 201 22.07.15 10:20 Сейчас в теме
(12) wolfsoft, Через АктивноеОкно() и перебор элементов управляемой формы. Ничего лучшего, к сожалению, пока не придумал...
15. anig99 2864 22.07.15 16:15 Сейчас в теме
(13) да-да! Должно работать в обычных формах. А то как-то не очень правильно получится!
14. script 128 22.07.15 12:23 Сейчас в теме
Через АктивноеОкно() и перебор элементов управляемой формы

Т.е. в обычных формах работать не будет?
18. andboss 201 24.07.15 10:38 Сейчас в теме
(14) script, Если 1С разродится и сделает АктивноеОкно() в обычном приложении то заработает.
16. BorovikSV 1039 24.07.15 10:03 Сейчас в теме
(0) А не пробовали перехватывать то что фактически выводят, т.е. в момент отрисовки документа для устройства? и сохранять например в JPG, PNG или PDF?
17. andboss 201 24.07.15 10:36 Сейчас в теме
(16) BorovikSV, Пробовал. Если знакомы с WinAPI то вывод идет на PDC(Printer Device Context), просто так скопировать этот контекст невозможно, он write-only. Только разве перехватом собственно функций вывода(DrawText и проч.). Вообщем проблем там масса.
19. efin1 28.07.15 17:44 Сейчас в теме
andboss, имеет смысл перекачать компоненту, или она просто подешевела, поэтому дата публикации 27 июля?

Кстати, на почту упало сообщение, что Вы мне что-то отвечали в комментариях, но этого нет и не видно всего сообщения: "efin, перехват сохранения уже есть. Точнее была. Её поче..."

Модеры чудят.
20. andboss 201 28.07.15 20:24 Сейчас в теме
(19) efin, просто сделал дешевле. компонента та же. сейчас экспериментирую с перехватом записи в файлы (например сделать запрет сохранения через файл/сохранить как)
22. script 128 31.07.15 01:19 Сейчас в теме
(20)

а еще бы перехватить событие "Сохранить как" и "Сохранить копию". Дождемся?
23. andboss 201 31.07.15 08:06 Сейчас в теме
(22) script, сейчас экспериментирую с этим... и еще с буфером обмена
21. script 128 31.07.15 00:55 Сейчас в теме
Ну хоть так....

Для УТ 10 90% печ. форм выводится через общую форму ПечатьДокумента.
Вставил процедуру обработки внешнего события в нее, и получил подобие активного окна.... очень не нравиться, но не знаю что еще можно здесь поделать.

Правда теперь можно получить ссылку на печатаемый документ.
27. anig99 2864 18.08.15 10:54 Сейчас в теме
(21) может какая другая внешняя компонента для перебора активных окон в 1с?
24. izofen 13 31.07.15 10:56 Сейчас в теме
Как подключить компоненту. Судя по коду должна подключится сама, но она не подключается?


Процедура ПриНачалеРаботыСистемы()
	//в общем макете(двоичные данные) компонента в виде zip-архива (hooklib.dll и MANIFEST.xml)
	Если ПодключитьВнешнююКомпоненту("ОбщийМакет.HookLib", "Hooklib", AddInType.Native) Тогда
		Hooklib = Новый("AddIn.Hooklib.PrintHook");
		//Hooklib.ЗапретПечати = Истина;
		Hooklib.Перехват(); 
	Иначе
		Сообщить("Компонента не подключена");
	КонецЕсли; 
			                          
КонецПроцедуры
Показать
25. andboss 201 31.07.15 13:14 Сейчас в теме
(24) izofen, в примере конфигурации подключается из макета. можете попробовать из файла
 ПодключитьВнешнююКомпоненту("d:\...\hooklib.dll", "Hooklib", AddInType.Native) 
26. script 128 04.08.15 00:18 Сейчас в теме
У меня нормально подключилась из макета и работает в обычном приложении.
28. slauter77 20 18.09.15 17:38 Сейчас в теме
Подключить из макета не удалось. Подключилась только с диска. Рушит 1с при отправке на печать. Обычное приложение.
Прикрепленные файлы:
29. andboss 201 18.09.15 20:25 Сейчас в теме
(28) slauter77, !обязательно после создания хранить контекст компоненты в глобальной переменной
30. Andreeei 50 28.11.18 20:17 Сейчас в теме
Можете ее пересобрать для 64-bit платформы?
anvolkov1cbit; serg1c; wau8824ru; Chai Nic; +4 Ответить
31. ilnur75 16.12.20 07:30 Сейчас в теме
Объясните что за метод компоненты используется Перехват() ?
Этот метод надо прописать в коде компоненты? Можно увидеть код метода? А на с++ как этот метод будет выглядеть?

Процедура ПриНачалеРаботыСистемы()
    //в общем макете(двоичные данные) компонента в виде zip-архива (hooklib.dll и MANIFEST.xml)
    Если ПодключитьВнешнююКомпоненту("ОбщийМакет.HookLib", "Hooklib", AddInType.Native) Тогда
        Hooklib = Новый("AddIn.Hooklib.PrintHook");
        //Hooklib.ЗапретПечати = Истина;
        Hooklib.Перехват(); 
    Иначе
        Сообщить("Компонента не подключена");
    КонецЕсли; 
                                      
КонецПроцедуры
Показать
32. andboss 201 16.12.20 08:29 Сейчас в теме
(31)Перехват StartDocW. Исходники доступны для скачивания
33. ilnur75 16.12.20 08:48 Сейчас в теме
а что нужно сделать в Visual Studio 2019 чтобы посмотреть код использования метода StartDocW из ваших исходников?
или как мне использовать исходники для применения на 1С 8.3 на виндовс х64?
34. andboss 201 16.12.20 13:20 Сейчас в теме
В архиве компонента с исходниками в среде Delphi7. Можете переписать их на C++
35. mesk2016 15.04.22 09:03 Сейчас в теме
Добрый день. Кто-нибудь в итоге собрал на х64?
Для отправки сообщения требуется регистрация/авторизация