![]() |
|
Печать() на УФ: как перетащить из модуля Команды в обычные, типовые механизмы? | ☑ | ||
---|---|---|---|---|
0
DenYuliya
11.02.19
✎
14:50
|
Добрый день.
Подскажите, плиз, что-то у меня затуп((((. Конфа и документ не типовые. Печать производится из Команды документа. А мне надо сделать так, чтобы при печати определенной печатной формы вызывался стандартный механизм печати. Если точнее - то к макету мне надо прикорячить типовую команду "Отправить сообщение", а она, в свою очередь, добавляется типовыми механизмами в Общей форме "Печать документов", которая вызывается из процедуры Печать() в модуле менеджера документа... Уф...надеюсь, понятно объяснила? Так вот, как это сделать-то по-умному? Как-то из модуля Команды вызывать функцию, находящуюся в модуле Менеджера, в ней формировать табДок и передавать его в типовую Печать()? Вызывать из модуля Команды процедуру Печать(), находящуюся в модуле менеджера? Сразу к общим модулям обращаться, передавая сформированный в модуле менеджера Табок? Помогите, плиз? У меня уже мозг вскипел с этими комбинациями((( |
|||
1
runoff_runoff
11.02.19
✎
14:53
|
&НаСервере
Процедура ...() |
|||
2
FIXXXL
11.02.19
✎
14:53
|
смотри как открывается общая форма печати, передавай нужные параметры...
|
|||
3
DenYuliya
11.02.19
✎
14:56
|
(2) я третий день в эту хрень смотрю. У меня же вопрос не в том, как открывается стандартная форма печати.
|
|||
4
DenYuliya
11.02.19
✎
14:57
|
(1) и?
|
|||
5
DenYuliya
11.02.19
✎
14:58
|
(2) Как правильно переделать Печать(), осуществляемую из Модуля Команды в типовую Печать() из модуля менеджера?
|
|||
6
novichok79
11.02.19
✎
15:07
|
(5) типа такого? модуль менеджера реализациятоваровуслуг в КА 1.1:
// Сформировать печатные формы объектов // // ВХОДЯЩИЕ: // МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать // // ИСХОДЯЩИЕ: // КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы // ОшибкиПечати - Список значений - Ошибки печати (значение - ссылка на объект, представление - текст ошибки) // ОбъектыПечати - Список значений - Объекты печати (значение - ссылка на объект, представление - имя области в которой был выведен объект) // ПараметрыВывода - Структура - Параметры сформированных табличных документов // Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт", "Акт выполненных работ (вал.)", ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати, Ложь)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктРуб") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктРуб", "Акт выполненных работ (руб.)", ПечатьАктаОбОказанииУслуг(МассивОбъектов, ОбъектыПечати, Истина)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Накладная") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Накладная", "Расходная накладная (вал.)", ПечатьДокумента(МассивОбъектов, ОбъектыПечати, Ложь)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НакладнаяРуб") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "НакладнаяРуб", "Расходная накладная (руб.)", ПечатьДокумента(МассивОбъектов, ОбъектыПечати, Истина)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "М15") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "М15", "М-15 (Накладная)", ПечатьМ15(МассивОбъектов, ОбъектыПечати)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12_БезУслуг") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ12_БезУслуг", "ТОРГ-12 (Товарная накладная)", ПечатьТОРГ12(МассивОбъектов, ОбъектыПечати, Истина)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ12", "ТОРГ-12 (Товарная накладная с услугами)", ПечатьТОРГ12(МассивОбъектов, ОбъектыПечати, Ложь)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УниверсальныйПередаточныйДокумент") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УниверсальныйПередаточныйДокумент", "Универсальный передаточный документ", ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати)); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктНаПередачуПрав") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктНаПередачуПрав", "Акт на передачу прав", ПечатьАктаНаПередачуПрав(МассивОбъектов, ОбъектыПечати)); КонецЕсли; КонецПроцедуры |
|||
7
DenYuliya
11.02.19
✎
15:15
|
Сейчас это работает так:печать всех макетов происходит из модуля Команды.
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ТабДок = Новый ТабличныйДокумент; отказ = ложь; Заголовок=""; ПечатьНаСервере(ТабДок, ПараметрКоманды, отказ, Заголовок); Если отказ Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Для этого вида движения нет печатной формы!'"), , ); Иначе ТабДок.ТолькоПросмотр = ложь; ТабДок.ОтображатьСетку = Ложь; ТабДок.АвтоМасштаб = Истина; ТабДок.Показать(Заголовок); КонецЕсли; КонецПроцедуры &НаСервере Процедура ПечатьНаСервере(ТабДок, Док, отказ, Если Док.ВидДвижения = Перечисления.ВидДвиженияБланков.Поступление Тогда ПечатьАктаПоступления(ТабДок, Док); ИначеЕсли Док.ВидДвижения = Перечисления.ВидДвиженияБланков.Уничтотожение Тогда ПечатьАктаУничтожения(ТабДок, Док); ИначеЕсли Док.ВидДвижения = Перечисления.ВидДвиженияБланков.Перемещение Тогда ПечатьАктаПеремещения(ТабДок, Док); Иначе отказ = истина; КонецЕсли; КонецПроцедуры &НаСервере Процедура ПечатьАктаПоступления(ТабДок, Док) ///тут код заполнения макета ТабДок.Вывести(); КонецПроцедуры &НаСервере Процедура ПечатьАктаУничтожения(ТабДок, Док) ///тут код заполнения макета ТабДок.Вывести(); КонецПроцедуры &НаСервере Процедура ПечатьАктаПеремещения(ТабДок, Док) ///тут код заполнения макета ТабДок.Вывести(); КонецПроцедуры А мне надо, чтобы печать макета Акта перемещения происходила типовыми средствами, из Печать() в модуле менеджера. В типовых доках это выглядит так: Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акты") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акты", "Акты об оказании услуг", ПечатьАктовОбОказанииУслуг(МассивОбъектов, ОбъектыПечати),,"Документ.ОказаниеУслуг.ПФ_MXL_Акт"); КонецЕсли; ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); КонецПроцедуры // Функция формирует табличный документ с печатными формами актов об обказании услуг // для каждой строки табличной части // // Возвращаемое значение: // Табличный документ - печатные формы актов // Функция ПечатьАктовОбОказанииУслуг(МассивОбъектов, ОбъектыПечати) ///тут код заполнения макета Возврат ТабДок; КонецПроцедуры Так вот: как мне процедуру ПечатьАктаПеремещения(ТабДок, Док) из модуля Команды переделать в типовую, аналогичную Функция ПечатьАктовОбОказанииУслуг(МассивОбъектов, ОбъектыПечати) ? Как, блин, это правильно сделать, что откуда вызывать и что куда передавать? |
|||
8
DenYuliya
11.02.19
✎
15:17
|
(6) да, типа того. Я знаю, как выглядит процедура Печать() в модуле менеджера.
Я не могу допереть, как вместо печати из Модуля команды при определенном условие начать использовать Печать() из модуля менеджера? |
|||
9
novichok79
11.02.19
✎
15:19
|
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Документ.РеализацияТоваровУслуг", "Накладная",
ПараметрКоманды, ПараметрыВыполненияКоманды.Источник, Неопределено); ??? |
|||
10
novichok79
11.02.19
✎
15:20
|
странновато как-то
|
|||
11
novichok79
11.02.19
✎
15:20
|
я бы перехватывал вызов общей формы печати, это поверхносто если посмотреть на задачу
|
|||
12
DenYuliya
11.02.19
✎
15:24
|
У меня затык между тремя вариантами, не понимаю, как правильно?
1) Вызывать из модуля команды процедуру типовую Печать(), находящуюся в модуле менеджера, примерно так: &НаСервере Процедура ПечатьНаСервере(ТабДок, Док, отказ, Заголовок="Печать документа Движения Бланков") Заголовок = "Печать: Движения Бланков "+Док.Номер; Если Док.ВидДвижения = Перечисления.ВидДвиженияБланков.Поступление Тогда ПечатьАктаПоступления(ТабДок, Док); ИначеЕсли Док.ВидДвижения = Перечисления.КонтВидДвиженияБланков.Инвентаризация Тогда Документы.КонтДвижениеБланков.Печать(,,,,) //ПечатьИнвентаризация(ТабДок, Док); Иначе отказ = истина; КонецЕсли; КонецПроцедуры Но тогда возникает вопрос, как все эти параметры печати заполнить? 2) Переходить из модуля менеджера к процедуре модуля менеджера, заполняющую ТабДок, а ее уже вызывать из Печать(), примерно так: &НаСервере Процедура ПечатьНаСервере(ТабДок, Док, отказ, Заголовок="Печать документа Движения Бланков") Заголовок = "Печать: Движения Бланков "+Док.Номер; Если Док.ВидДвижения = Перечисления.ВидДвиженияБланков.Поступление Тогда ПечатьАктаПоступления(ТабДок, Док); ИначеЕсли Док.ВидДвижения = Перечисления.ВидДвиженияБланков.Инвентаризация Тогда Документы.ДвижениеБланков.ЗаполнениеИнвентаризацииДляПечати() //ПечатьИнвентаризация(ТабДок, Док); Иначе отказ = истина; КонецЕсли; КонецПроцедуры 3) Сразу из модуля Команды вызывать процедуры из общего модуля, отвечающие за прикорячивание ОтправкиСообщения, модуль менеджера вообще не трогать (если так можно) |
|||
13
DenYuliya
11.02.19
✎
15:26
|
(10) что именно странновато? Не спорю, может надо как-то по-другому, а я не знаю?
(11) "я бы перехватывал вызов общей формы печати" - это вызывал бы Печать() в модуле менеджера из модуля команды? |
|||
14
DenYuliya
11.02.19
✎
15:27
|
(11), а, наверное это то, что в (9)? Не заметила сообщение.
Это в моем корявом объяснение третий вариант в (12) |
|||
15
DenYuliya
11.02.19
✎
15:30
|
Мне-то все равно, лишь бы работало)). Я просто совсем не понимаю, как надо, что за сверь такой - "модуль команды", и нафига он нужен.
Не, ну очевидные вещи "что такое команда" я понимаю, конечно, но никогда с ними не работала и не понимаю, зачем это сделано через Команду, а не через модуль менеджера/объекта/формы. |
|||
16
novichok79
11.02.19
✎
15:41
|
(15) потому что команду можно воткнуть куда угодно. не?
|
|||
17
novichok79
11.02.19
✎
15:42
|
(13) сделал бы свою форму печати и вызывал ее из команды, или условий накрутил в модуле команды непосредственно.
|
|||
18
novichok79
11.02.19
✎
15:42
|
это всего-лишь предположения, как бы делал я, а как бы удалось реализовать - хз
|
|||
19
DenYuliya
11.02.19
✎
15:49
|
(15) да не знаю я, что вы у меня спрашиваете, будто я сижу и за что-то агитирую))).
Я прям чес слово не знаю, потому и спрашиваю. Без сарказма. Насчет "куда угодно" - мне казалось, что она из формы вызывается, а не откуда угодно. |
|||
20
DenYuliya
11.02.19
✎
15:50
|
(17) нет, мне надо именно типовую форму печати вызывать.
|
|||
21
novichok79
11.02.19
✎
16:12
|
(19) куда угодно - это типа задел на будущее. форма - это множество элементов, элемент - команда. все логично, по-моему.
|
|||
22
Мимохожий Однако
11.02.19
✎
16:15
|
(15) Не надо задаваться вопрос "Почему?" Достаточно понять точку, в которой надо вносить минимальные изменения для решения задачи.
|
|||
23
Garykom
гуру
11.02.19
✎
16:18
|
>Конфа и документ не типовые.
Пофиг как делать, лишь бы работало как надо. Потом переделаете если будет глаза мозолить. |
|||
24
DenYuliya
11.02.19
✎
16:28
|
(22), (23) - я уже с логики сбилась, это к чему?
У меня нет никаких предпочтений, я именно не знаю, как правильно сделать-то? |
|||
25
DenYuliya
11.02.19
✎
16:33
|
Собственно, правильный ответ в (9) , он же мой третий вариант.
Сделаю, выложу листинг. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |