Обработка ПодключаемыеКоманды.ПараметрыРазмещения()
Есть обработка, своего рода журнал, но все данные собираются в неё из регистров сведений и в ней же ведется учет.
Есть печатные формы, которые выводятся в стандартную форму печати. Печатная форма содержит в себе общую информацию, собираемую в закладках формы.
Проблема как вывести в командную панель печать, если она не привязана к документам?
Если смотреть типовой код, то печать берут с объектов
ПриСозданииНаСервере
Модуль Менеджера
Как добавить печать через подключаемые команды?
ИЛИ
Как добавить сюда ПараметрыВывода.ПараметрыОтправки? (Есть постоянный список получателей для этих форм печати).
Тогда можно будет отказаться от подключаемых команд, т.к. вывод на печать все равно идет через стандратную форму печати
Есть печатные формы, которые выводятся в стандартную форму печати. Печатная форма содержит в себе общую информацию, собираемую в закладках формы.
Проблема как вывести в командную панель печать, если она не привязана к документам?
Если смотреть типовой код, то печать берут с объектов
ПриСозданииНаСервере
ОбъектыПечати = Новый Массив;
ОбъектыПечати.Добавить(Метаданные.Документы.МаршрутныйЛистПроизводства);
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
ПараметрыРазмещения.Источники = ОбъектыПечати;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
Модуль Менеджера
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Документы.МаршрутныйЛистПроизводства.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Как добавить печать через подключаемые команды?
ИЛИ
Как добавить сюда ПараметрыВывода.ПараметрыОтправки? (Есть постоянный список получателей для этих форм печати).
Тогда можно будет отказаться от подключаемых команд, т.к. вывод на печать все равно идет через стандратную форму печати
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИмяМакета);
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ПечатьСервер(ИмяМакета,СинонимМакета,Организация,СписокСотрудниковНаПечать);
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = СинонимМакета;
ЗаполнитьПолучателей(КоллекцияПечатныхФорм,СинонимМакета);
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);
ПоказатьПо теме из базы знаний
Найденные решения
(12)Получилось выкрутится следующим образом
А дальше пришлось добавлять в расширение Общую форму ПечатьДокументов в которой содержится необходимая процедура (ОбработкаВыбора), где и задал вручную ПараметрыВывода:
&НаКлиенте
Процедура ПечатьКлиент(ИмяМакета,СинонимМакета,СписокСотрудниковНаПечать = Неопределено)
Если ЗначениеЗаполнено(Организация) Тогда
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИмяМакета);
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ПечатьСервер(ИмяМакета,СинонимМакета,Организация,СписокСотрудниковНаПечать);
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = СинонимМакета;
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);
Иначе
Сообщение = Новый СообщениеПользователю();
Сообщение.Поле = "Организация";
Сообщение.Текст = "Поле не заполнено";
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
ПоказатьА дальше пришлось добавлять в расширение Общую форму ПечатьДокументов в которой содержится необходимая процедура (ОбработкаВыбора), где и задал вручную ПараметрыВывода:
&НаКлиенте
Процедура Расш1_ОбработкаВыбораПеред(ВыбранноеЗначение, ИсточникВыбора)
Если НастройкиПечатныхФорм.Количество() = 1 Тогда
Если НастройкиПечатныхФорм[0].Название = "Пример 1"
ИЛИ НастройкиПечатныхФорм[0].Название = "Пример 2"
ИЛИ НастройкиПечатныхФорм[0].Название = "Пример 3" Тогда
СписокАдресатов = Новый СписокЗначений;
СписокАдресатов.Добавить("123@yandex.ru","Тест 123");
СписокАдресатов.Добавить("231@yandex.ru","Тест 231");
ПараметрыВывода.ПараметрыОтправки.Получатель = СписокАдресатов;
ПараметрыВывода.ПараметрыОтправки.Тема = НастройкиПечатныхФорм[0].Название;
ПараметрыВывода.ПараметрыОтправки.Текст = НастройкиПечатныхФорм[0].Название;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Уточните, пожалуйста, из постановки задачи не совсем понятно. Какова цель использования механизма подключаемых команд, учитывая, что планируется использовать их они не совсем так, как задумывалось разработчиками конфигурации? Почему бы просто не добавить свое подменю "Печать", куда включить собственную команду формы, реализующую нужный Вам алгоритм печати?
(2) Я бы и рад собственной выводить, что я и делал
(1)
Но при таком варианте вывода я не могу указать ПараметрыВывода
но это можно сделать через подключаемые, где явно можно указать получателей письма
(1)
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИмяМакета);
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ПечатьСервер(ИмяМакета,СинонимМакета,Организация,СписокСотрудниковНаПечать);
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = СинонимМакета;
ЗаполнитьПолучателей(КоллекцияПечатныхФорм,СинонимМакета);
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ПечатьСервер(ИмяМакета,СинонимМакета,Организация,СписокСотрудниковНаПечать);
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = СинонимМакета;
ЗаполнитьПолучателей(КоллекцияПечатныхФорм,СинонимМакета);
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);
Но при таком варианте вывода я не могу указать ПараметрыВывода
но это можно сделать через подключаемые, где явно можно указать получателей письма
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
(11) Ну как я понимаю, оно срабатывает при нажатии на команду "Отправить по почте" и до открытия формы нового электронного письма. Можно проанализировать параметр "ПечатныеФормы" (таблица печатных форм и их наименований), и если он содержит нужную Вам печатную форму, заполнить получателей в параметре процедуры "ПараметрыОтправки".
(12)Получилось выкрутится следующим образом
А дальше пришлось добавлять в расширение Общую форму ПечатьДокументов в которой содержится необходимая процедура (ОбработкаВыбора), где и задал вручную ПараметрыВывода:
&НаКлиенте
Процедура ПечатьКлиент(ИмяМакета,СинонимМакета,СписокСотрудниковНаПечать = Неопределено)
Если ЗначениеЗаполнено(Организация) Тогда
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИмяМакета);
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ПечатьСервер(ИмяМакета,СинонимМакета,Организация,СписокСотрудниковНаПечать);
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = СинонимМакета;
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);
Иначе
Сообщение = Новый СообщениеПользователю();
Сообщение.Поле = "Организация";
Сообщение.Текст = "Поле не заполнено";
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
ПоказатьА дальше пришлось добавлять в расширение Общую форму ПечатьДокументов в которой содержится необходимая процедура (ОбработкаВыбора), где и задал вручную ПараметрыВывода:
&НаКлиенте
Процедура Расш1_ОбработкаВыбораПеред(ВыбранноеЗначение, ИсточникВыбора)
Если НастройкиПечатныхФорм.Количество() = 1 Тогда
Если НастройкиПечатныхФорм[0].Название = "Пример 1"
ИЛИ НастройкиПечатныхФорм[0].Название = "Пример 2"
ИЛИ НастройкиПечатныхФорм[0].Название = "Пример 3" Тогда
СписокАдресатов = Новый СписокЗначений;
СписокАдресатов.Добавить("123@yandex.ru","Тест 123");
СписокАдресатов.Добавить("231@yandex.ru","Тест 231");
ПараметрыВывода.ПараметрыОтправки.Получатель = СписокАдресатов;
ПараметрыВывода.ПараметрыОтправки.Тема = НастройкиПечатныхФорм[0].Название;
ПараметрыВывода.ПараметрыОтправки.Текст = НастройкиПечатныхФорм[0].Название;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
В модуле "УправлениеПечатьюПереопределяемый"
В модуле менеджера обработки
В Форме
Процедура ПередДобавлениемКомандПечати(ИмяФормы, КомандыПечати, СтандартнаяОбработка) Экспорт
Если ИмяФормы = "Обработка.ПроизвольныйСписокДокументов.Форма.Форма" Тогда // ПроизвольныйСписокДокументов - Имя обработки.
Обработки.ПроизвольныйСписокДокументов.ДобавитьКомандыПечати(КомандыПечати);
КонецЕсли;
КонецПроцедуры
ПоказатьВ модуле менеджера обработки
// Заполняет список команд печати.
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
// Перемещение товаров
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "_ДемоЗаказПокупателя";
КомандаПечати.Представление = НСтр("ru = 'Заказ'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ТипыОбъектовПечати = Новый Массив;
КомандаПечати.ТипыОбъектовПечати.Добавить(Тип("ДокументСсылка._ДемоЗаказПокупателя"));
КонецПроцедуры
ПоказатьВ Форме
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
ПараметрыРазмещения.Источники = Новый ОписаниеТипов("ДокументСсылка._ДемоЗаказПокупателя, ДокументСсылка._ДемоСчетНаОплатуПокупателю"); // Описание типов ссылок, входящих в динамический список.
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект,ПараметрыРазмещения);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
Показать
(19) В том то и дело, что нет у меня документа, Обработка автономная и к документам не привязана. А оперирует она данными регистров сведений, которые через эту же обработку вводятся и корректируются.
То что можно перенести команды печати из документов, при наличии ссылки на документ, это понятно, только в моём случае переносить нечего.
То что можно перенести команды печати из документов, при наличии ссылки на документ, это понятно, только в моём случае переносить нечего.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот