|
Как правильно передавать параметры печати? obs191, DrZombi, Мультук, ДенисСмирнов, zenik, Garykom, kupec, ReaLg, 2S, Fish, elka302, Ненавижу 1С, fserg84, PuhUfa, DemonShinji2, zzz_zzz_zzz, ads55
| ☑ | ||
|---|---|---|---|---|
|
0
WerLym
20.03.26
✎
20:33
|
&НаКлиенте
Процедура Ст_ПечатьЛистСогласованияПродолжение(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Отмена Тогда Возврат; ИначеЕсли Результат = КодВозвратаДиалога.ОК Тогда ПараметрыЗаписи = Новый Структура; Если Не Записать(ПараметрыЗаписи) Тогда Возврат; КонецЕсли; ПоказатьОповещениеПользователя( НСтр("ru = 'Создание:'"), ПолучитьНавигационнуюСсылку(Объект.Ссылка), Строка(Объект.Ссылка), БиблиотекаКартинок.Информация32); КонецЕсли; ПараметрыПечати = Новый Структура(); ПараметрыПечати.Вставить("Ответственный", Строка(Объект.Ответственный)); МассивДокументов = Новый Массив; МассивДокументов.Добавить(Объект.Ссылка); УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Справочник.ДокументыПредприятия", "ЛистСогласования", МассивДокументов, ЭтаФорма, ПараметрыПечати); КонецПроцедуры // Формирует и выводит на экран печатные формы. // // Параметры: // ИмяМенеджераПечати - Строка - менеджер печати для печатаемых объектов; // ИменаМакетов - Строка - идентификаторы печатных форм; // МассивОбъектов - ЛюбаяСсылка // - Массив из ЛюбаяСсылка - объекты печати; // ВладелецФормы - ФормаКлиентскогоПриложения - форма, из которой выполняется печать; // ПараметрыПечати - Структура - произвольные параметры для передачи в менеджер печати. // // Пример: // УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатнаяФорма", "СписаниеТоваров", ДокументыНаПечать, ЭтотОбъект); // Процедура ВыполнитьКомандуПечати(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ВладелецФормы, ПараметрыПечати = Неопределено) Экспорт Если Не ПроверитьКоличествоПереданныхОбъектов(МассивОбъектов) Тогда Возврат; КонецЕсли; ИмяПараметра = "СтандартныеПодсистемы.Печать.ВыполнитьКомандуПечати"; СписокПереданныхПараметров = ПараметрыПриложения[ИмяПараметра]; Если СписокПереданныхПараметров = Неопределено Тогда СписокПереданныхПараметров = Новый Массив; ПараметрыПриложения[ИмяПараметра] = СписокПереданныхПараметров; КонецЕсли; ПараметрыОткрытия = УправлениеПечатьюСлужебныйКлиент.ПараметрыОткрытияФормыПечати(); ПараметрыОткрытия.ИмяМенеджераПечати = ИмяМенеджераПечати; ПараметрыОткрытия.ИменаМакетов = ИменаМакетов; ПараметрыОткрытия.ПараметрКоманды = МассивОбъектов; ПараметрыОткрытия.ПараметрыПечати = ПараметрыПечати; ПараметрыОткрытия.ВладелецФормы = ВладелецФормы; СписокПереданныхПараметров.Добавить(ПараметрыОткрытия); ПодключитьОбработчикОжидания("ПродолжитьВыполнениеКомандыПечатиСПереданнымиПараметрами", 0.1, Истина); КонецПроцедуры как мне правильно тут передать структуру для вывода дополнительных параметров? Документооборот КОРП, редакция 3.0 (3.0.19.30) |
|||
|
1
DrZombi
гуру
23.03.26
✎
09:23
|
(0) Не уловил то, что вам надо, но свою печать я реализую так.
Для передачи параметров в процедуру печати. :) //В примере передача параметров в обработку печати. // Из обработки печати с вызовом диалога, для ввода параметров // Выполнена для БП 3.0, поэтому и указано Ожидание. В Бухгалтерии, оно теперь через фоновое задание выполняется :) Печать(Команда)&НаКлиенте Процедура Печать(Команда) ОбъектыПечати = ПолучитьИзВременногоХранилища(ОбъектыНазначения); ПараметрыПечати = ОбщегоНазначенияБПКлиент.ПолучитьЗаголовокПечатнойФормы(ОбъектыПечати); Если ПараметрыПечати = Неопределено Тогда ПараметрыПечати = Новый Структура(); КонецЕсли; СписокМакетов = УчетОСВызовСервера.ПолучитьСписокМакетовОС1(ОбъектыПечати); Если СписокМакетов <> "" Тогда пИдентификаторКоманды = "ПФ_ОС1_ПринятиеКУчетуОС"; //ДополнительныеПараметры.ИсточникДанных Печатная форма документа "Принятие к учету ОС" "ОС-1(а,б) (...)" СправочникСсылка.ДополнительныеОтчетыИОбработки ИсточникДанных = ПолучитьСсылкуНаВнешнююОбработкуПоИмениОбъектаНаСервере(пИдентификаторКоманды); //ДополнительныеОтчетыИОбработки Если ИсточникДанных = Неопределено Тогда ТекстСообщения = "Нет внешней обработки '"+пИдентификаторКоманды+"'"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); Закрыть(); Возврат; КонецЕсли; ПараметрыВывода = ПодготовитьСтруктуруПараметровВывода(); ПараметрыВывода.Вставить("НомерДоговора",Объект.НомерДоговора); ПараметрыВывода.Вставить("ДатаДоговора",Объект.ДатаДоговора); ПараметрыИсточника = Новый Структура; ПараметрыИсточника.Вставить("ИдентификаторКоманды", пИдентификаторКоманды); ПараметрыИсточника.Вставить("ОбъектыНазначения", ОбъектыПечати); ИмяМенеджераПечати = "ВнешняяОбработка."+пИдентификаторКоманды; ИменаМакетов = СписокМакетов; МассивОбъектов = ОбъектыПечати; //ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия = УправлениеПечатьюСлужебныйКлиент.ПараметрыОткрытияФормыПечати(); ПараметрыОткрытия.ИсточникДанных = ИсточникДанных; ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника; ПараметрыОткрытия.ПараметрыВывода = ПараметрыВывода; ПараметрыОткрытия.ИмяМенеджераПечати = ИмяМенеджераПечати; ПараметрыОткрытия.ИменаМакетов = ИменаМакетов; ПараметрыОткрытия.ПараметрКоманды = МассивОбъектов; ПараметрыОткрытия.ПараметрыПечати = ПараметрыПечати; ВладелецФормы = ЭтаФорма; Если ВладелецФормы = Неопределено Тогда ПараметрыОткрытия.УникальныйИдентификаторХранилища = Новый УникальныйИдентификатор; Иначе ПараметрыОткрытия.УникальныйИдентификаторХранилища = ВладелецФормы.УникальныйИдентификатор; КонецЕсли; СформированныеПечатныеФормы = УправлениеПечатьюВызовСервера.НачатьФормированиеПечатныхФорм(ПараметрыОткрытия); ПараметрыОткрытия.ВладелецФормы = ВладелецФормы; Если СОГ_ВнешниеБазыИСВызовСервера.ЗаданиеЕщеВыполняется(СформированныеПечатныеФормы.ИдентификаторЗадания) = Истина Тогда СформированныеПечатныеФормы_ = СформированныеПечатныеФормы; //Запомним параметры, для печатной формы... СформированныеПечатныеФормы_.Вставить("пТекДата", ТекущаяДата()); Элементы.ФормаПечать.Доступность = Ложь; ПодключитьОбработчикОжидания("СОГ_ОжиданияЗавершенияПечати",1,Истина); Возврат; КонецЕсли; //РезультатФоновойОперации = Новый Структура; //РезультатФоновойОперации.Вставить("Статус", "Выполнено"); //РезультатФоновойОперации.Вставить("КраткоеПредставлениеОшибки", ""); //РезультатФоновойОперации.Вставить("ПодробноеПредставлениеОшибки", ""); //РезультатФоновойОперации.Вставить("Сообщения", Новый ФиксированныйМассив(Новый Массив)); //РезультатФоновойОперации.Вставить("АдресРезультата", ПоместитьВоВременноеХранилище(СформированныеПечатныеФормы, ПараметрыОткрытия.УникальныйИдентификаторХранилища)); //УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиПослеФормированияПечатныхФорм(РезультатФоновойОперации, ПараметрыОткрытия); УправлениеПечатьюСлужебныйКлиент.ОткрытьФормуПечатьДокументов(СформированныеПечатныеФормы, ПараметрыОткрытия); КонецЕсли; Закрыть(); КонецПроцедуры ПолучитьСсылкуНаВнешнююОбработкуПоИмениОбъектаНаСервере(ИмяОбъекта)&НаСервере Функция ПолучитьСсылкуНаВнешнююОбработкуПоИмениОбъектаНаСервере(ИмяОбъекта) //Отключим всякого рода проверки безопасности от 1С... оно тут лишнее... УстановитьОтключениеБезопасногоРежима(Истина); УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ИмяОбъекта", ИмяОбъекта); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ДополнительныеОтчетыИОбработки.Ссылка КАК Ссылка |ИЗ | Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки |ГДЕ | НЕ ДополнительныеОтчетыИОбработки.ЭтоГруппа | И НЕ ДополнительныеОтчетыИОбработки.ПометкаУдаления | И ДополнительныеОтчетыИОбработки.ИмяОбъекта = &ИмяОбъекта | И ДополнительныеОтчетыИОбработки.Публикация = ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется) | |УПОРЯДОЧИТЬ ПО | Ссылка"; РезЗапроса = Запрос.Выполнить(); Если РезЗапроса.Пустой() Тогда Возврат Неопределено; КонецЕсли; Выборка = РезЗапроса.Выбрать(); Выборка.Следующий(); Возврат Выборка.Ссылка; КонецФункции ПодготовитьСтруктуруПараметровВывода()Функция ПодготовитьСтруктуруПараметровВывода() Возврат УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода(); КонецФункции |
|||
|
2
DrZombi
гуру
23.03.26
✎
09:29
|
+(0) А уже в вызываемой печатной процедуре, этот параметр стандартный в БСП "ПараметрыПечати"
Пример: // Экспортная процедура печати, вызываемая из основной программы // // Параметры: // ВХОДЯЩИЕ: // МассивОбъектовНазначения - Массив - список объектов ссылочного типа для печати документа // Как правило, содержит один элемент с ссылкой на вызвавший форму объект (документ, справочник) // // ИСХОДЯЩИЕ: // КоллекцияПечатныхФорм - ТаблицаЗначений - таблица сформированных табличных документов. // Как правило, содержит одну строку с именем текущей печатной формы // ОбъектыПечати - СписокЗначений - список объектов печати. // ПараметрыВывода - Структура - Параметры сформированных табличных документов. Содержит поля: // ДоступнаПечатьПоКомплектно - булево - по умолчанию Ложь // ПолучательЭлектронногоПисьма // ОтправительЭлектронногоПисьма Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт |
|||
|
3
DrZombi
гуру
23.03.26
✎
09:37
|
+(0) вот...
ЗаданиеЕщеВыполняется(ИдентификаторЗадания)Функция ЗаданиеЕщеВыполняется(ИдентификаторЗадания) Экспорт Если Не ЗначениеЗаполнено(ИдентификаторЗадания) Тогда Возврат Ложь; КонецЕсли; Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); Возврат Задание <> Неопределено И Задание.Состояние = СостояниеФоновогоЗадания.Активно; КонецФункции |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |