Отмена команды печать в БСП

1. cushe 5 15.02.18 20:12 Сейчас в теме
Используем в работе БСП, для формирования печатных форм используем, подсистему печати.
Так для вывода на форму Команды печати добавляем в модуль менеджера соответствующего документа код
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	...
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ДопСоглашение";
	КомандаПечати.Представление = НСтр("ru = 'Доп.соглашение'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        ...
	
КонецПроцедуры
Показать

При этом в форме и списка и документа появиться команда печати (а если их несколько, то и подменю).
Проблемы начинаются в случае если у документа может быть некоторые специфичные печатные формы, которые печатаются только для некоторых документов (например только для документов с установленным реквизитом "ОтгрузкаВКредит"), для прочих эту печатную форму выводить не нужно.
Если потом в процедуре Печать для этого документа ничего не вернуть БСП выдаст окно с исключением, если же вернуть пустую таблицу, тоже появиться специфичное пустое окно.

Можно ли прервать процесс вывода на печать если вызов уже приходит из БСП
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. t.v.s. 111 15.02.18 20:26 Сейчас в теме
(1) Обходной путь - в модуле формы скрывать ненужные пункты меню. Нет кнопки - нет проблемы
8. vakham 21 14.11.23 13:39 Сейчас в теме
А удалось решить вопрос?
3. cushe 5 16.02.18 11:55 Сейчас в теме
Если вы работали с БСП то понимаете что скрывать там вообще не вариант, во первых вы не управляете отображением кнопки, это делает БСП, а ваша задача сводиться к указанию что для данного вида документов имеется подобная форма печати. Во вторых печать бсп подразумевает печать не только из формы документа, но из списка, в т.ч. печать нескольких выбранных документов. В таком случае понять какой из документов нам попал на печать можно уже после того как БСП передаст в процедуру печать массив ссылок.
4. DarkUser 16.02.18 12:02 Сейчас в теме
Как вариант, в процедуре Печать модуля менеджера документа можно вставить проверку после строки:

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КоммерческоеПредложение") Тогда

// Проверка на выполнение условия печати формы
Если ОтгрузкаВКредит Тогда
Возврат;
КонецЕсли;

КонецЕсли;
Показать
5. cushe 5 16.02.18 12:17 Сейчас в теме
Нет, если ничего не вернуть, то уже модуль УправлениеПечатью вернет исключение. Там ситуация с отсутствием ТабличногоДокумента, воспринимается как ошибка с генерацией исключения:
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'При формировании печатной формы ""%1"" возникла ошибка. Обратитесь к администратору.'"), ИмяМакета);
ВызватьИсключение ТекстСообщенияОбОшибке;
6. DarkUser 16.02.18 12:43 Сейчас в теме
(5) Да, вы правы. Тогда другой вариант. При вызове процедуры (которая вызывается в УправлениеПечатью.НужноПечататьМакет), где формируется печатная форма, вставить ту же проверку, и возвращать Новый ТабличныйДокумент. Тогда, если он пустой, форма печати напишет: "Печатная форма недоступна".
7. cushe 5 16.02.18 15:10 Сейчас в теме
Ну в общем то сейчас так и выкручиваемся, но операторы жалуются, что неудобно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот