Используем в работе БСП, для формирования печатных форм используем, подсистему печати.
Так для вывода на форму Команды печати добавляем в модуль менеджера соответствующего документа код
При этом в форме и списка и документа появиться команда печати (а если их несколько, то и подменю).
Проблемы начинаются в случае если у документа может быть некоторые специфичные печатные формы, которые печатаются только для некоторых документов (например только для документов с установленным реквизитом "ОтгрузкаВКредит"), для прочих эту печатную форму выводить не нужно.
Если потом в процедуре Печать для этого документа ничего не вернуть БСП выдаст окно с исключением, если же вернуть пустую таблицу, тоже появиться специфичное пустое окно.
Можно ли прервать процесс вывода на печать если вызов уже приходит из БСП
Так для вывода на форму Команды печати добавляем в модуль менеджера соответствующего документа код
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
...
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ДопСоглашение";
КомандаПечати.Представление = НСтр("ru = 'Доп.соглашение'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
...
КонецПроцедуры
ПоказатьПри этом в форме и списка и документа появиться команда печати (а если их несколько, то и подменю).
Проблемы начинаются в случае если у документа может быть некоторые специфичные печатные формы, которые печатаются только для некоторых документов (например только для документов с установленным реквизитом "ОтгрузкаВКредит"), для прочих эту печатную форму выводить не нужно.
Если потом в процедуре Печать для этого документа ничего не вернуть БСП выдаст окно с исключением, если же вернуть пустую таблицу, тоже появиться специфичное пустое окно.
Можно ли прервать процесс вывода на печать если вызов уже приходит из БСП
По теме из базы знаний
- Шаблоны внешних обработок (БСП, управляемые формы)
- Обзор полезных методов БСП 3.1.4
- Стандартные подсистемы БСП - параметры работы клиента и возможности диалогов
- Отправка счетов и актов за период из 1С:Бухгалтерии 3.0 программно с помощью функций БСП
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если вы работали с БСП то понимаете что скрывать там вообще не вариант, во первых вы не управляете отображением кнопки, это делает БСП, а ваша задача сводиться к указанию что для данного вида документов имеется подобная форма печати. Во вторых печать бсп подразумевает печать не только из формы документа, но из списка, в т.ч. печать нескольких выбранных документов. В таком случае понять какой из документов нам попал на печать можно уже после того как БСП передаст в процедуру печать массив ссылок.
Как вариант, в процедуре Печать модуля менеджера документа можно вставить проверку после строки:
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КоммерческоеПредложение") Тогда
// Проверка на выполнение условия печати формы
Если ОтгрузкаВКредит Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Показать
Нет, если ничего не вернуть, то уже модуль УправлениеПечатью вернет исключение. Там ситуация с отсутствием ТабличногоДокумента, воспринимается как ошибка с генерацией исключения:
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'При формировании печатной формы ""%1"" возникла ошибка. Обратитесь к администратору.'"), ИмяМакета);
ВызватьИсключение ТекстСообщенияОбОшибке;
(5) Да, вы правы. Тогда другой вариант. При вызове процедуры (которая вызывается в УправлениеПечатью.НужноПечататьМакет), где формируется печатная форма, вставить ту же проверку, и возвращать Новый ТабличныйДокумент. Тогда, если он пустой, форма печати напишет: "Печатная форма недоступна".
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот