Доработать типовую печатную форму через Расширение

1. rabota.v8.1c 7 03.07.20 11:35 Сейчас в теме
Возможно ли, например, в типовой макет Акт сверки, добавить через Расширение свой Подвал с данными?
Чтобы макет остался на поддержке, без выноса его во внешние печатные формы.
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. serg33rus 21 04.07.20 16:06 Сейчас в теме
(1) А о какой конфигурации речь идет? В большинстве случаев проще и правильней свою внешнюю форму подключить. Правда придется переделывать какждый раз когда смениться форма в типовой. Но Акт сверки - это не та форма которая меняется часто.
2. oleg-x 26 03.07.20 12:12 Сейчас в теме
Зависит от того как формируется печатная форма, если там все в одной функции формируется и она возвращает табличный документ, то проще внешнюю печатную форму сделать, так как единственный способ перехватить, это заменить функцию.
trickster; alex-l19041; +2 Ответить
4. Alex_E 2353 04.07.20 16:24 Сейчас в теме
(2)
так как единственный способ перехватить, это заменить функцию.
Ойли? В расширение импортировать документ. С директивой &После в модуле менеджера документа сделать процедуру ДобавитьКомандыПечати со своим обработчиком - и ничего перехватывать не надо - в меню новый пункт и рисуем свою форму , какую хочется...)))
5. oleg-x 26 04.07.20 19:30 Сейчас в теме
(4) Вы как настоящий журналист, вырвали цитату из контекста и написали свою фигню. Нельзя изменить функцию (до или после), её можно только заменить, а вот процедуру можно. А если формирование идет в одной функции (что очень часто), то какой смысл делать расширение?
Поэтому и написано, что зависит от того как написана формирование печатной формы.
И вопрос, чем лучше делать расширение со своей печатной формой или же просто написать внешнюю печатную форму? В принципе если лень писать, то можно взять готовую и подправить как требуется.
6. Alex_E 2353 04.07.20 20:00 Сейчас в теме
(5)
Вы как настоящий журналист, вырвали цитату из контекста и написали свою фигню.
я написал много всякой фигни, можно даже тут посмотреть))))
Про нельзя До (&Перед) или &После функцию использовать (просветите, кстати попутно уж, раз так случилось, где запрещено &Перед/После для функций),так в этом конкретном случае и нужны процедуры из БСП
&После ("ДобавитьКомандыПечати")
Процедура _ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	// Товарная накладная (ТОРГ-12) с услугами
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ТОРГ12";
	КомандаПечати.Представление = НСтр("ru = 'Товарная накладная (ТОРГ-12) <свойвариант>'");
	КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
	КомандаПечати.СписокФорм    = "ФормаСписка,ФормаВыбора,ФормаДокументаОбщая,ФормаДокументаТовары";
	КомандаПечати.Порядок = 5;
	
	//итд
	
	
КонецПроцедуры

&После ("Печать")
Процедура _Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12") Тогда
.......
Показать


чтобы вся печать была в одной функции и очень часто - опять фингя...ну да ладно, Вы ж не журналисть - Вам херню пороть выыходит можно)))

ЗЫ без обид, просто не мог не ответить.....опять же гляишь про расширение чего новое узнаю...
7. oleg-x 26 04.07.20 20:16 Сейчас в теме
Перед и после это можно процедуру перехватить, а если функция, то можно только вместо. Читал как то, что можно будет часть кода заменить в расширение из стандартной процедуры, но это уже в новых версиях платформы будет или уже сделали.
Вопрос, зачем в расширение добавлять свою команду печати, если все равно придется писать свою печатную форму? Не проще внешнюю печатную форму сделать?
9. Alex_E 2353 04.07.20 20:25 Сейчас в теме
(7)
Вопрос, зачем в расширение добавлять свою команду печати,
- например если "нужной" клиенту печатной формы в документе или хочется в меню Печать вывести её в конкретной строке - например в первой
(7)
если все равно придется писать свою печатную форму?
- тут не совсем корректно сказано - "придётся писать" писать придётся что внешнюю, что встроенную, но кода в расширении может понадобится совсем чуть чуть, а для ВПФ таки практически всегда больше. Плюс отладка в расширении гораздо комфортней, чем в ВПФ.
(7)
Не проще внешнюю печатную форму сделать?
- не, не проще, я много лет использовал и использую ВПФ, но с появлением и, что особенно важно, развитием расширений, ВПФ делаю всё реже и реже - в расширении проще и быстрее получается...
12. oleg-x 26 06.07.20 10:50 Сейчас в теме
(9) Разрабатывая ВПФ, нужно иметь шаблон (экономит время). В большинстве случаев достаточно скопировать стандартные процедуры и функции из типовой или обращаться к ним, если возможно.
Проблему с отладкой уже давно решили, просто надо немного заморочиться один раз.
А вообщем как делать, решает каждый сам, кто бы что не говорил, но это не так важно. Тут главное что бы заказчик был доволен и все работало, а там хоть через компоненту. Заказчика в большинстве случаев это не волнует.
8. oleg-x 26 04.07.20 20:18 Сейчас в теме
По поводу формирования всей печатной формы в одной функции примеров много. Само получение данных для формирования может быть и в отдельной процедуре/функции, но формирование табличного документа идет в одной процедуре/функции.
10. Alex_E 2353 04.07.20 20:33 Сейчас в теме
(8) Получение табличного документа практически всегда это функция, только для её вызова в раширении или ВПФ один хрен надо писать ещё много чего, и Процедура Печать в ВПФ будет всё равно...
Печатные формы в типовых конфигурациях сейчас ... с одной функцией ... примеров много...ню ню...
Или имеются ввиду бесчисленные нетленки? Так там и макет может выводиться с сеточкой (видел много раз), работает жеж))))
А вот печать в типовых сейчас с одной функцией - это ж натить надо - тут и обработки и общие модули,вот это не часто, а практически везде...или я не прав?
11. oleg-x 26 06.07.20 10:42 Сейчас в теме
(10) Про нетленки говорить незачем, там может быть все что угодно (хотя и в типовых своего хватает). А по теме, например УТ 11 акт сверки. Есть процедура "печать".
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
			"АктСДаннымиКонтрагента",
			НСтр("ru='Акт сверки взаимных расчетов (с задолженностью по данным контрагента)'"),
			СформироватьПечатнуюФормуАктСДаннымиКонтрагента(МассивОбъектов, ОбъектыПечати));

Вот такой код вызова формирования ТабличногоДокумента.
То есть в одной функции формируется вся печатная форма. Она может вызывать разные общие модули и прочее, но формирование идет в одной функции и возвращенный табличный документ добавляется в коллекцию, а дальше отправляется на печать.
И в принципе незачем разбивать формирование ТабличногоДокумента на части в большинстве случаев.

То есть не используется множество разный функций и процедур, куда можно было бы точечно вмешаться, работать с уже готовым документом, можно, но это уже если что то добавить в конце или начале документа или добавить элемент по определенным координатам.
Если же говорить про печать в целом, то да. В типовых это в классике выглядит так:
Есть процедура "Печать", куда передаются ссылка на документ и названия печатных форм.
Далее вызывается формирование соответствующей формы.
Далее отправляется на печать.
Но это Вы и без меня знаете, но это ни как точечно не позволяет изменить формирование, например доработать макет и при формирование подставить свой макет.
А вот печать в типовых сейчас с одной функцией - это ж натить надо - тут и обработки и общие модули,вот это не часто, а практически везде...или я не прав?

По своему Вы правы, просто все это вызывается из одной функции и единственный способ это изменить, это заменить функцию (скопировать в расширение и поправить как надо).
13. rabota.v8.1c 7 15.07.20 16:26 Сейчас в теме
В итоге сделал через Расширение

- Добавил в Расширение типовой макет ПФ_MXL_АктСверкиВзаимныхРасчетов

- в модуль менеджера Расширения добавил две функции:


1.
&Вместо("ВыборкаДанныхДокумента")
Функция зсп_ВыборкаДанныхДокумента(МассивОбъектов, НастройкиПечати)

тут в структуру НастройкиПечати добавил свое Значение.


2.
&Вместо("ТекстЗапросаДанныеДокумента")
Функция зсп_ТекстЗапросаДанныеДокумента(НастройкиПечати)
	
	Результат = ПродолжитьВызов(НастройкиПечати);
	
	// добавим в типовой запрос КонтактыМенеджера
	Результат = СтрЗаменить(Результат,
		"ДокументСверки.ФИОРуководителяКонтрагента КАК ФИОРуководителяКонтрагента,",
		"ДокументСверки.ФИОРуководителяКонтрагента КАК ФИОРуководителяКонтрагента," + " " + НастройкиПечати.КонтактыМенеджера + " КАК КонтактыМенеджера," );
	
	Результат = СтрЗаменить(Результат,
		"МАКСИМУМ(ДолжностьРуководителяКонтрагента),",
		"МАКСИМУМ(ДолжностьРуководителяКонтрагента)," + " МАКСИМУМ(КонтактыМенеджера),");
	
	Возврат Результат;
	
КонецФункции
Показать


тут сделал замену запроса, добавил свое


- и на макете добавил Параметр КонтактыМенеджера
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)