Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
31 мар 2025, 12:29

Форма перед печатью документа

Автор sali, 17 мар 2025, 07:52

0 Пользователей и 2 гостей просматривают эту тему.

antoneus

В клиентской процедуре модуля формы. Вот в этой самой первой - Подключаемый_ВыполнитьКоманду. Добавляешь ее в расширение, вызываешь после, там проверяешь какая команда вызывала процедуру, если твоя торг 12 валютная - делаешь открытие своей формы и вызов своей процедуры печати.

sali

antoneus, antoneus, я вот делаю вот так
&После("Печать")
Процедура Расш1_Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
Перем Ошибки;
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Обработки.ПечатьАктаОбОказанииУслуг.ИдентификаторПечатнойФормы(Ложь, Ложь));
Если ПечатнаяФорма <> Неопределено Тогда

ПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент;
ПечатнаяФорма.ТабличныйДокумент.КлючПараметровПечати = Обработки.ПечатьАктаОбОказанииУслуг.КлючПараметровПечати();
ПечатнаяФорма.ПолныйПутьКМакету = Обработки.ПечатьАктаОбОказанииУслуг.ПолныйПутьКМакету(Ложь);
ПечатнаяФорма.СинонимМакета = Обработки.ПечатьАктаОбОказанииУслуг.ПредставлениеПФ(Ложь, Ложь);

ДанныеОбъектовПечати = ДанныеДокументовАктОбОказанииУслуг(МассивОбъектов, Ложь);
Обработки.ПечатьАктаОбОказанииУслуг.СформироватьПФ(ПечатнаяФорма, ДанныеОбъектовПечати, ОбъектыПечати, Ложь);

КонецЕсли;

#Вставить 
ВозможныеВарианты = Обработки.ПечатьТОРГ12Валютный.МатрицаВозможныхВариантов();
Для каждого СтрокаТаблицы Из ВозможныеВарианты Цикл

ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Обработки.ПечатьТОРГ12Валютный.ИдентификаторПечатнойФормы(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле));
Если ПечатнаяФорма <> Неопределено Тогда

ПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент;
ПечатнаяФорма.ТабличныйДокумент.КлючПараметровПечати = Обработки.ПечатьТОРГ12Валютный.КлючПараметровПечати();
ПечатнаяФорма.ПолныйПутьКМакету = Обработки.ПечатьТОРГ12Валютный.ПолныйПутьКМакету();
ПечатнаяФорма.СинонимМакета = Обработки.ПечатьТОРГ12Валютный.ПредставлениеПФ(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);

ДанныеОбъектовПечати = ДанныеДокументовРегУчет(МассивОбъектов, СтрокаТаблицы.ИспользоватьФаксимиле, Истина, Ошибки);
Обработки.ПечатьТОРГ12Валютный.СформироватьПФ(ПечатнаяФорма, ДанныеОбъектовПечати, ОбъектыПечати, СтрокаТаблицы.ВключаяУслуги);

КонецЕсли;

КонецЦикла;

#КонецВставить
...
КонецПроцедуры

и все равно пишет

{ТоргВалютный Документ.РасходнаяНакладная.МодульМенеджера(279,3)}: Ожидается оператор препроцессора
что не так?

   #<<?>>КонецВставить

sali


sali

Цитата: antoneus от 17 мар 2025, 10:04делаешь открытие своей формы и вызов своей процедуры печати.
как мне сделать пересчет итогов? через оповещение передавать в обработку параметры курса????Снимок экрана (209).png

в модуле формы документа( расширение ) &НаКлиенте
&После("Подключаемый_ВыполнитьКоманду")
Процедура Расш1_Подключаемый_ВыполнитьКоманду(Команда)

// TODO: Пересмотреть нестандартное внедрение в пользу стандартного.
//УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтотОбъект, Объект);
//// УНФ
//СтатистикаИспользованияФормКлиент.ДобавитьСтатистикуКомандПечати(ЭтотОбъект, Команда);
//// Конец УНФ

ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
Если Команда.Имя = "%ТОРГ12Валютный%" Тогда 
ОткрытьФорму("Документ.РасходнаяНакладная.Форма.Расш2_ФормаВыбораКурса");
КонецЕсли;
КонецПроцедуры

sali

antoneus, почему могли стереться данные у другой печатной формы? я выбираю "торг 12 с услугами" там нет информации об организации, дата, номер и то же самое у моей печатки.  с чем это может быть связано?

antoneus

У меня что написано?

Цитата: antoneus от 17 мар 2025, 10:04делаешь открытие своей формы и вызов своей процедуры печати

Именно в таком порядке.

Что в коде?

Вызов штатной процедуры печати и после - открытие уже не нужной формы.

И Команда.Имя никогда не будет равна "%ТОРГ12Валютный%". В имени команды не может быть никаких процентов.

sali

Цитата: antoneus от 17 мар 2025, 12:46В имени команды не может быть никаких процентов.
я пробовал сделать через подобное, но убрал их сразу и написал полностью

antoneus

Ну вот, значит если у нас процедура вызвана этой командой - открываем форму, получаем валюту и курс и передаем их в свою процедуру печати, где вычисляем всякие суммы и выводим их в печатную форму.

sali

Цитата: antoneus от 17 мар 2025, 12:46Именно в таком порядке.
так надо было&НаКлиенте
&После("Подключаемый_ВыполнитьКоманду")
Процедура Расш2_Подключаемый_ВыполнитьКоманду(Команда)
    Если Команда.Имя = "ПодменюПечатьОбычное_ТОРГ12Валютный" Тогда
        ОткрытьФорму("Документ.РасходнаяНакладная.Форма.Расш2_ФормаВыбораКурса");
    КонецЕсли;         
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);

КонецПроцедуры

sali

antoneus, почему затирает ту печатку с которой я брал макет, код?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск