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

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

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

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

sali

День добрый. сделал в новом расширении новую печатную форму , теперь вопрос как перед печатью этой новой формы открыть доп фому для выбора валюты и подставления курса? потом везде прописываются рубли или центы, копейки(в зависимости от выбранного курса) и идет пересчет по поставленному курсу
 
очевидно в процедуре Печать , но из модуля менеджера ведь не будет это работать.

sali

курс, как мне сказали, пользователь выставляет сам. то бишь изначально он равен 0

antoneus

Слепить для впф форму, в ней делать выбор, из нее запускать печать. Использование сделать не ВызовСерверногоМетода, а ОткрытиеФормы.

sali

antoneus, нужно именно в расширении

antoneus


sali

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

antoneus

Печать вызывается командой, которая на форме, так? Эта команда ведь не ныряет сразу в менеджер, так?

sali

antoneus, там целая матрица возможных вариантов

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

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

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
   
    ЗначениеИдентификатора = "АктОбОказанииУслуг,ТОРГ12,ТОРГ12СУслугами,Обработка.ПечатьСчетФактура.СчетФактура,%1,Обработка.ПечатьСчетФактура.УниверсальныйПередаточныйДокумент,М15,ТТН,Накладная,НакладнаяСУслугами,СчетНаОплату,ГарантийныйТалон,БланкТоварногоНаполнения";
    ЗначениеИдентификатора = СтрШаблон(ЗначениеИдентификатора, Обработки.ПечатьАктПередачиПрав.ИдентификаторПечатнойФормы());
    Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьСерийныеНомера") Тогда
       
        ЗначениеИдентификатора = СтрЗаменить(ЗначениеИдентификатора, ",ГарантийныйТалон", "");
       
    КонецЕсли;
       
    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.Идентификатор = ЗначениеИдентификатора;
    КомандаПечати.Представление = ПечатьДокументовУНФ.ПредставлениеКомплектаДокументов();
    КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
    КомандаПечати.ДополнитьКомплектВнешнимиПечатнымиФормами = Истина;
    КомандаПечати.Порядок = 1;


ВозможныеВарианты = Обработки.ПечатьТОРГ12.МатрицаВозможныхВариантов();
    Для каждого СтрокаТаблицы Из ВозможныеВарианты Цикл
       
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.Идентификатор = Обработки.ПечатьТОРГ12.ИдентификаторПечатнойФормы(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);
        КомандаПечати.Представление = Обработки.ПечатьТОРГ12.ПредставлениеПФ(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);
        КомандаПечати.ПроверкаПроведенияПередПечатью = Ложь;
        КомандаПечати.Порядок = 10;
       
        Если СтрокаТаблицы.ИспользоватьФаксимиле Тогда
           
            КомандаПечати.МестоРазмещения = "ПодменюПечатьФаксимиле";
            КомандаПечати.Порядок = КомандаПечати.Порядок + 1;
           
        КонецЕсли;
       
    КонецЦикла;
КонецПроцедуры



и как бы сам модуль менеджер, обработки "печать торг 12"Снимок экрана (207).png

sali

antoneus,
Цитата: antoneus от 17 мар 2025, 09:21Эта команда ведь не ныряет сразу в менеджер, так?
ныряет

antoneus

Цитата: sali от 17 мар 2025, 09:25antoneus,
Цитата: antoneus от 17 мар 2025, 09:21Эта команда ведь не ныряет сразу в менеджер, так?
ныряет

Врешь.

Теги:

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

Рейтинг@Mail.ru

Поиск