Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 08:45

1С 8.3. БП3. Как программно реализовать пакетную печатную печать для конкретного документа (разные макеты)?

Автор gulnyr, 22 янв 2023, 15:36

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

gulnyr

Нужно при нажатии отдельной кнопки "печать" сделать печать нескольких макетов для конкретного

документа. Например, есть макет "Зарплата" (2 экземпляра), и макет "Счета" (3 экземпляра).

Нашел такой простенький код:
СсылкаНаОбъект.ПолучитьОбъект().Печать("Зарплата", 2, Истина); //2 экземпляра макета "Зарплата"
СсылкаНаОбъект.ПолучитьОбъект().Печать("Счета", 3, Истина); //3 экземпляра макета "Счета"

Но здесь после выбора документа выходит ошибка метода "печать" (пишет что такого метода не

существует).

Нашел второй, более длинный код:
&НаСервере
Процедура ПакетнаяПечатьНаСервере(Пакет)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");

СхемаКомпоновкиДанных = ОбработкаОбъект.ПолучитьМакет("Зарплата");
// Получим настройки по умолчанию.
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// Сформируем макет компоновки данных.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
// Выполним компоновку данных.
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
// Выведем результат компоновки в табличный документ.
ДокументРезультат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

СхемаКомпоновкиДанных = ОбработкаОбъект.ПолучитьМакет("Счета");
// Получим настройки по умолчанию.
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// Сформируем макет компоновки данных.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
// Выполним компоновку данных.
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
// Выведем результат компоновки в табличный документ.
ДокументРезультат1 = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат1);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Пакет = Новый ПакетОтображаемыхДокументов;
// Документы, находящиеся в этом пакете, печатаются в 2 экземплярах
Пакет.КоличествоЭкземпляров = 2;
// Добавляем документы в пакет
ЭлементПакета1 = Пакет.Состав.Добавить();
ЭлементПакета1.Данные = ПоместитьВоВременноеХранилище(ДокументРезультат,

УникальныйИдентификатор);

// Добавляем вложенный пакет для третьего документа
ВложенныйПакет = Новый ПакетОтображаемыхДокументов;
// Документ во вложенном пакете печатается в 3 экземплярах
ВложенныйПакет.КоличествоЭкземпляров = 3;
// Добавляем документ во вложенный пакет
ЭлементВложенногоПакета1 = ВложенныйПакет.Состав.Добавить();
ЭлементВложенногоПакета1.Данные = ПоместитьВоВременноеХранилище(ДокументРезультат1,

УникальныйИдентификатор);

ЭлементПакета2 = Пакет.Состав.Добавить();
ЭлементПакета2.Данные = ВложенныйПакет;


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

&НаКлиенте
Процедура ПакетнаяПечать(Команда)
Пакет = Неопределено;
ПакетнаяПечатьНаСервере(Пакет);
Пакет.Напечатать();
КонецПроцедуры

Здесь тоже выходит ошибка: "Недопустимое значение параметра (параметр номер '1')".

Как правильно реализовать печать нескольких макетов для конкретного документа?

Максим75

gulnyr,
чтобы такое срабатывало
СсылкаНаОбъект.ПолучитьОбъект().Печать("Зарплата", 2, Истина); //2 экземпляра макета "Зарплата"
СсылкаНаОбъект.ПолучитьОбъект().Печать("Счета", 3, Истина); //3 экземпляра макета "Счета"

Печать должна быть экспортной

Теги:

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

Рейтинг@Mail.ru

Поиск