Для начала нужно подготовить справочник "ДополнительныеОтчетыИОбработки":
1) Добавляем реквизит типа "Булево" в справочник "ДополнительныеОтчетыИОбработки"
2) Размещаем элемент формы для этого реквизита на форме элемента
На этом подготовку справочника закончили и начинаем править типовые процедуры.
1) Расширяем процедуру "ВыполнитьНазначаемуюКомандуПечати" общего модуля "ДополнительныеОтчетыИОбработкиКлиент"
&ИзменениеИКонтроль("ВыполнитьНазначаемуюКомандуПечати")
// Обработчик внешней команды печати.
//
// Параметры:
// ВыполняемаяКоманда - Структура - структура из строки таблицы команд, см.
// ДополнительныеОтчетыИОбработки.ПриПолученииКомандПечати.
// Форма - ФормаКлиентскогоПриложения - форма, в которой выполняется команда печати.
//
Процедура ВыполнитьНазначаемуюКомандуПечатиИзменение(ВыполняемаяКоманда, Форма) Экспорт
// Перенос дополнительных параметров, переданных этой подсистемой, в корень структуры.
Для Каждого КлючИЗначение Из ВыполняемаяКоманда.ДополнительныеПараметры Цикл
ВыполняемаяКоманда.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
// Запись фиксированных параметров.
ВыполняемаяКоманда.Вставить("ЭтоОтчет", Ложь);
ВыполняемаяКоманда.Вставить("Вид", ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма"));
#Вставка
ДополнительныеОтчетыИОбработкиВызовСервера.УстановитьСтандартнуюОбработку(ВыполняемаяКоманда);
#КонецВставки
// Запуск метода обработки, соответствующего контексту команды.
ВариантЗапуска = ВыполняемаяКоманда.ВариантЗапуска;
Если ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") Тогда
ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
ИначеЕсли ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") Тогда
ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
Иначе
ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
КонецЕсли;
КонецПроцедуры
2) расширяем процедуру "ВыполнитьОткрытиеПечатнойФормы" общего модуля "ДополнительныеОтчетыИОбработкиКлиент"
&ИзменениеИКонтроль("ВыполнитьОткрытиеПечатнойФормы")
// Формирует табличный документ в форме подсистемы "Печать".
Процедура ВыполнитьОткрытиеПечатнойФормыИзменение(ВыполняемаяКоманда, Форма, ОбъектыНазначения) Экспорт
#Удаление
СтандартнаяОбработка = Истина;
#КонецУдаления
#Вставка
Если ВыполняемаяКоманда.Свойство("СтандартнаяОбработка") Тогда
СтандартнаяОбработка = ВыполняемаяКоманда.СтандартнаяОбработка;
Иначе
СтандартнаяОбработка = Истина;
КонецЕсли;
#КонецВставки
ДополнительныеОтчетыИОбработкиКлиентПереопределяемый.ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ОбъектыНазначения, СтандартнаяОбработка);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
МодульУправлениеПечатьюСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюСлужебныйКлиент");
МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы(
ВыполняемаяКоманда.Ссылка,
ВыполняемаяКоманда.Идентификатор,
ОбъектыНазначения,
Форма,
СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
3) Добавляем процедуру "УстановитьСтандартнуюОбработку" в общий модуль "ДополнительныеОтчетыИОбработкиВызовСервера"
Процедура УстановитьСтандартнуюОбработку(ВыполняемаяКоманда) Экспорт
Перем СсылкаДополнительнойОбработки;
// не разбирался с типом аргумента "ВыполняемаяКоманда" поэтому условно - тип Структура
Если ВыполняемаяКоманда.Свойство("Ссылка", СсылкаДополнительнойОбработки)
И ТипЗнч(СсылкаДополнительнойОбработки) = Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") Тогда
ВыполняемаяКоманда.Вставить("СтандартнаяОбработка", СсылкаДополнительнойОбработки.СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
На этом все изменения внесены.
Судя по написанному коду ERP игнорирует проверку на "непроведенность" документа если флаг "СтандартнаяОбработка" = Ложь. Это можно наблюдать из процедуры "ВыполнитьОткрытиеПечатнойФормы" общего модуля "УправлениеПечатьюСлужебныйКлиент" в которую из нашей расширяемой процедуры "ВыполнитьОткрытиеПечатнойФормы" общего модуля "ДополнительныеОтчетыИОбработкиКлиент" передается "СтандартнаяОбработка".
Можно, конечно, использовать
ДополнительныеОтчетыИОбработкиКлиентПереопределяемый.ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ОбъектыНазначения, СтандартнаяОбработка);
Но я не увидел возможность в этой процедуре контролировать флаг "СтандартнаяОбработка" какими-либо настройками.