Как прервать формирование внешней печатной формы
1С 8.3, сделал внешнюю печатную форму для документа с использованием серверного метода. В модуле объекта обработки есть процедура:
Как сделать, чтобы печатная форма формировалась только если есть определенные данные в документе из которого она печатается, а если этих данных нет тогда выходит только сообщение для пользователя, что нужно заполнить данные. С выводом сообщения порядок. Подскажите, как прервать формирование печатной формы?
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Как сделать, чтобы печатная форма формировалась только если есть определенные данные в документе из которого она печатается, а если этих данных нет тогда выходит только сообщение для пользователя, что нужно заполнить данные. С выводом сообщения порядок. Подскажите, как прервать формирование печатной формы?
По теме из базы знаний
- Корректная двусторонняя печать табличных документов + Простой пример создания внешней печатной формы
- Создание динамически подгружаемых печатных форм на 8.2, как это было реализовано в 1С:7.7
- Подключаемые печатные формы с .DOCX макетом без Word'а
- Автоматизация печатной формы (автоформирование табличного документа на основе любой таблицы значений)
- Просто комбо, два в одном, или как напечатать два макета (стандартный и измененный) одной печатной формы
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) По иначе сообщения выводится, и печатная форма формируется с ошибкой т.к. нет нужных данных, процесс формирования печатной формы все равно продолжается.
(3) Пробовал так, работает, как нужно. Проблема только в появляющемся окошке в нем есть две кнопки Ок и Подробно если нажать подробно там текст с текстом ошибки и кодом который вызвал это окошко. Не очень это окошко дружелюбно для пользователя, что-то бы более дружелюбное.
(3) Пробовал так, работает, как нужно. Проблема только в появляющемся окошке в нем есть две кнопки Ок и Подробно если нажать подробно там текст с текстом ошибки и кодом который вызвал это окошко. Не очень это окошко дружелюбно для пользователя, что-то бы более дружелюбное.
Вопрос в том же. В процедуре Печать, вставляю Сообщение об ошибки, но вместе с ним выходит ошибка печатной формы.
Подскажите как правильно остановить печать.
Эта часть не работает.
Подскажите как правильно остановить печать.
Эта часть не работает.
Если Не ЗначениеЗаполнено(ПроверяемоеЗначение) Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
А в идеале хотелось бы передать управление в модуль конфигурации, на встроенный механизм сообщения об ошибке.
Вот сюда - УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеПроцедурыЗавершения, СписокДокументов)
Вот сюда - УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеПроцедурыЗавершения, СписокДокументов)
(15) УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ12", "ТОРГ-12 накладная (без проведения)", Табдок);
Это и используется.
Идея, заменить встроенную печатную форму на внешнюю.
Внешняя печформа должна проверять у пользователя наличие роли, можно ему печатать без проведения или нет. (есть соответсвующая роль)
В кофигурации есть КомандаПечати.ПроверкаПроведенияПередПечатью, она всегда стоит Истина.
А мне получается нужно в процедуре Печать, сделать проверку на роль, и если ее нет, то Доп параметр ПроверкаПроведенияПередПечатью = Истина перейти сюда:
Все для того, что бы было красивое системное сообщение с предложением провести не проведенный документ.... как-то так
Это и используется.
Идея, заменить встроенную печатную форму на внешнюю.
Внешняя печформа должна проверять у пользователя наличие роли, можно ему печатать без проведения или нет. (есть соответсвующая роль)
В кофигурации есть КомандаПечати.ПроверкаПроведенияПередПечатью, она всегда стоит Истина.
А мне получается нужно в процедуре Печать, сделать проверку на роль, и если ее нет, то Доп параметр ПроверкаПроведенияПередПечатью = Истина перейти сюда:
Процедура ВыполнитьПодключаемуюКомандуПечатиПодготовкаОбъектовПечати(ДополнительныеПараметры)
ОбъектыПечати = ДополнительныеПараметры.Источник;
Если ТипЗнч(ОбъектыПечати) <> Тип("Массив") Тогда
ОбъектыПечати = ОбъектыПечати(ОбъектыПечати);
КонецЕсли;
Если ОбъектыПечати.Количество() = 0 Тогда
ВызватьИсключение НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'")
КонецЕсли;
Если ДополнительныеПараметры.ОписаниеКоманды.ТипыОбъектовПечати.Количество() <> 0 Тогда // требуется проверка типа
ЕстьПечатаемыеОбъекты = Ложь;
Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
Если ДополнительныеПараметры.ОписаниеКоманды.ТипыОбъектовПечати.Найти(ТипЗнч(ОбъектПечати)) <> Неопределено Тогда
ЕстьПечатаемыеОбъекты = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ЕстьПечатаемыеОбъекты Тогда
ТекстСообщения = УправлениеПечатьюВызовСервера.СообщениеОПредназначенииКомандыПечати(ДополнительныеПараметры.ОписаниеКоманды.ТипыОбъектовПечати);
ПоказатьПредупреждение(, ТекстСообщения);
Возврат;
КонецЕсли;
КонецЕсли;
Если ДополнительныеПараметры.ОписаниеКоманды.ПроверкаПроведенияПередПечатью Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВыполнитьПодключаемуюКомандуПечатиПодключениеРасширенияРаботыСФайлами", ЭтотОбъект, ДополнительныеПараметры);
УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыПечати, ДополнительныеПараметры.Форма);
Возврат;
КонецЕсли;
ВыполнитьПодключаемуюКомандуПечатиПодключениеРасширенияРаботыСФайлами(ОбъектыПечати, ДополнительныеПараметры);
КонецПроцедуры
ПоказатьВсе для того, что бы было красивое системное сообщение с предложением провести не проведенный документ.... как-то так
(18) Если не сложно помогите с формой.
в модуле формы:
Когда указываю в форме кнопку и команду с вызовом это процедуры выдает ошибку: Недопустимое значение параметра ПараметрКоманды при вызове метода УправлениеПечатьюКлиент.ВыполнитьКомандуПечати.
Ожидалось: Массив, ЛюбаяСсылка.
Передано: Не определено
в модуле формы:
&НаКлиенте
Процедура Печать(ИмяКоманды, МассивОбъектов, ПараметрыПечати = неопределено, КоллекцияПечатныхФорм = неопределено, ОбъектыПечати = неопределено, ПараметрыВывода = неопределено) Экспорт
ВыполняемаяКоманда = Параметры;
ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;
ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ВыполняемаяКоманда.ИдентификаторКоманды;
ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ВыполняемаяКоманда.ОбъектыНазначения;
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
КонецПроцедуры // Печать()
ПоказатьКогда указываю в форме кнопку и команду с вызовом это процедуры выдает ошибку: Недопустимое значение параметра ПараметрКоманды при вызове метода УправлениеПечатьюКлиент.ВыполнитьКомандуПечати.
Ожидалось: Массив, ЛюбаяСсылка.
Передано: Не определено
(19)
&НаКлиенте
Процедура Печать(ИмяМакета, ОбъектыНазначения) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ПечатьДокумента",ЭтаФорма);
//тут должен оказаться код, который взаимодействует с пользователем
//задает вопросы, проверяет документы, проводит
//а затем запускает бсп печати
КонецПроцедуры
&НаКлиенте
Процедура ПечатьДокумента(ПараметрыПечати, ДополнительныеПараметры) Экспорт
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Название");
КоллекцияПечатныхФорм[0].ТабличныйДокумент = НекийТабличныйДокументКоторыйВыСоздаете;
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, СписокДокументов, ЭтаФорма);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот