Как отловить нажатие печать, обычные формы ут 10.3, платформа 8.3.14
из общей формы "Печать документов"

есть вариант

```1c
    Процедура КоманднаяПанель1Печать(Кнопка)
    ЭлементыФормы.ПолеДокумента.КоличествоЭкземпляров = КоличествоКопий;
    ЭлементыФормы.ПолеДокумента.Напечатать();
    КонецПроцедуры
```

но, тогда как убрать доступ к этой кнопке "Файл - Печать"?
---
Вот это, может быть, поможет: https://infostart.ru/public/380849/

Но начинать экспериментировать осторожно, прочитав все комментарии!
---
включили замер производительности и ловите.
---
Включал, не отлавливается это событие.
---
вы про кнопку печатать для вывода печатной формы.
Или про кнопку платформы для вывода на принтер? 😂
---
Или про кнопку платформы для вывода на принтер?
Именно про кнопку платформы.
---
средствами 1С это не отловить.
Есть разные махинации, но это костыли будут и за рамками 1С. Ставьте вопрос в другую плоскость.
Можно запретить сохранять не только на печать, но и вообще в буфер, только таким образом это реализовано в 1С.
---
права на чтение, просмотр дайте. Кнопка будет не доступна.
---
права на чтение, просмотр дайте
У общей формы право только одно, "Просмотр".
---
Вот это, может быть, поможет: https://infostart.ru/public/380849/

Но начинать экспериментировать осторожно, прочитав все комментарии!
---
Вот это, может быть, поможет
Очень похоже!
---
Вот это, может быть
Добавляем в модуль обычного приложения

```1c
    Процедура ПриНачалеРаботыСистемы()

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

    КонецПроцедуры
```

Добавляем в общую форму "ПечатьДокументов"

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

и работает, ограничение только на x86 платформу.
Но и оборудование можно подключать тоже только на х86 платформу!
Спасибо!
---
В ут 10.3, в доп правах(или настройках) пользователя, была настройка, которая запрещала сохранять табдок в файл. Не помню точно как она называется, что то типа блабла редактирование таблиц блабла. Возможно эта настройка запретит печать через меню?
---
Возможно эта настройка запретит печать через меню?
Задача не запрещать, а отловить попытку печати. Создать запись РС, где сохранять версии документа(1с) и документа(бумага), на печатную форму вывести QRкод по которому документ, при совпадении версий(1с и Бумага) будет выгружен в другую ИБ посредством УниверсальногоОбменаДаннымиXML(COM).
---
Попробуйте в режиме отладки, в конфигураторе зайти в меню "Отладка-Остановить". Затем в пользовательском режиме нажмите на нужную кнопку. Исполнение кода должно остановиться в месте вызова.
---
в конфигураторе зайти в меню "Отладка-Остановить". Затем в пользовательском режиме нажмите на нужную кнопку. Исполнение кода должно остановиться в месте вызова
Интересно, не знал что так можно, но код отрабатывается в платформе, и для отладки не доступен.
---
До того, что отрабатывается в платформе Вы вряд ли доберетесь. Но ведь данные получаются из кода конфигурации.
---
До того, что отрабатывается в платформе Вы вряд ли доберетесь
вот в (4) очень похоже на то что нужно, пробую.
---
при совпадении версий(1с и Бумага) - можете подробнее какие версии надо сравнивать ?
---
можете подробнее какие версии надо сравнивать
Да сравнивать и выгружать это уже сделано, а вот попытку отправить на принтер для создания или замены записи в РС то что требуется.
---
насколько я себе могу представить - хотите "ловить" ручные изменения в печатной форме? верно ?
---
Задача облегчить работу, ведь если документ не переделывался и не перепечатывался его и проверять не нужно, а можно сразу принять к учёту.
---
... проверять не нужно... - а если изначально сделали с ошибкой, а потом сами исправили ? а если изначально сделали с ошибкой и не заметили ??? а если не печатали ? а сохранили в файл ?
---
а если изначально сделали с ошибкой, а потом сами исправили
Параллельно есть обработка Сверка документов ИБ, которую отдельно выполняют раз в квартал.
---
а если изначально сделали с ошибкой и не заметили ???
Это как? можно поподробней? Ведь документ выводит 1ска, и если там будет ошибка, она будет системная, рано или поздно отловится.
---
данные внесли с ошибкой...
---
а если не печатали ?
А если не печатали - значит и записи в РС нет. и значит вопрос - откуда взялась распечатанная печатная форма????
---
Вывели на экран, сфотали мобильником/сохранили в файл и распечатали уже из экселя/другого ПО, не?
---
Вывели на экран, сфотали мобильником/сохранили в файл и распечатали уже из экселя/другого ПО, не?
Попахивает флудом, и троллями???? не )?
---
Ну, если такого быть не может, потому что не может быть никогда, то перехватывайте нажатие платформенной кнопки печати в 1С.
---
вывести QRкод по которому документ, ... будет выгружен в другую ИБ посредством - как связан QRкод и обмен данными ?
---
как связан QRкод и обмен данными
В QRкод будет заносится ТипДокумента, УИДДокумента, КлючУникальности общей формы "ПечатьДокументов", Версия документа(1с) и если такая запись в РС существует, значит документ не переделывался(Правки в печатной форме это уже криминал - их отлавливать задачи нет), а значит его можно передать в БП для принятия к учёту. Как то так.
---
Т.е. если ПФ документа ни разу не была отправлена на принтер, то такой документ просто не попадет в БП?
Занимательные тараканы :)
---
Занимательные тараканы :)
Занимательная бухгалтерия :)
---
Если уж нужен контроль документа, вернее верности его внутренностей, то для этого добавляют РС со статусом документа.
И только документа с определенным статусом может быть передан во внешнюю учетную систему, и только ответственные пользователи могут менять статус документа, а обычный пользователь не может изменить ни сам документ, ни его статус, но проще же отловить платформенный механизм печати.......
---
и только ответственные пользователи могут менять статус документа.
Меняться статус будет после удачного обмена!
---
В чем сложности определить кто и в каких статусах может менять сам документ/его отдельные реквизиты?
---
В чем сложности определить кто и в каких статусах может менять сам документ/его отдельные реквизиты?
Вот диктаторы блин, вам бы всё запрещать и закрывать. Нет такой задачи!
---
А вам бы всем полные права раздавать в БД и натягивать сову на глобус, не ограничивая при этом пользователей в правах.
Ваша задача решается тупым разграничением прав пользователей, но вы решили поставить все с ног на уши.
Если автоматизировать хаос, то будет - автоматизированный хаос.
---
этого добавляют РС со статусом документа
Помимо статуса документа будут хранится версии
(33) а обычный пользователь не может изменить ни сам документ, ни его статус, но проще же отловить платформенный механизм печати.......
Чувствуется некая нотка иронии! :D Чтобы убрать человеческий фактор почему бы и нет?
---
Помимо статуса документа будут хранится версии
да храните хоть черта лысого :)

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

Если правки вынужденные, не зависящие от пользователя, заполняющего документ, то их могут сделать и сами ответственные пользователи.
---
Задача не запрещать, а отловить попытку печати. Создать запись РС, где сохранять версии документа(1с) и документа(бумага) Тогда еще вот это обсуждение может оказаться полезным: https://forum.infostart.ru/forum9/topic10793/
---
Тогда еще вот это обсуждение может оказаться полезным
Это видел, спасибо, но это для 7ки
```1c
    scrptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
```

Попробовал через com объект, но там на x64 платформе не получилось(или ошибка вываливалась, вчера уже не помню), в (4) так же x86, ограничение, ставлю 86 платформу.
---
Это видел, спасибо, но это для 7ки Извиняюсь, проглядел.

Впрочем, и для 8.x можно использовать Script Control и даже ограничение x32 обходится: https://forum.infostart.ru/forum9/topic99538/
---
Впрочем, и для 8.x можно использовать Script Control и даже ограничение x32 обходится
Делается, только куда его приделать ума не приложу.