Открытие из обработки табличного документа в общей форме "ПечатьДокументов" с помощью БСП

01.09.15

Разработка - БСП (Библиотека стандартных подсистем)

В статье описан механизм создания обработки, табличный документ из которой можно непосредственно вывести в типовую форму печати БП 3.0 и УТ 11.1 (редакция БСП начиная с 2.2.4.43, где-то начало 2015 года). С помощью данного механизма удобно отлаживать печатные формы или создавать внешние обработки, выводящие что-нибудь на печать.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Открытие ТД из формы обработки в форме ПечатьДокументов.epf
.epf 9,69Kb
10
10 Скачать (1 SM) Купить за 1 850 руб.

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

&НаКлиенте
Перем ТабДокумент;

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

&НаКлиенте
Процедура КомандаПечать(Команда)	
	ПолучитьТабличныйДокумент(ТабДокумент);
...

процедура печати в модуле обработки

// Процедура возвращает табличный документа
//
Функция ПечатьВнешняя(МассивОбъектов, ОбъектыПечати) Экспорт
	ТабДокумент = Новый ТабличныйДокумент;
	Макет = ПолучитьМакет("Макет");
	Область = Макет.ПолучитьОбласть("Заголовок");
	Область.Параметры.Дата = ТекущаяДата();
	ТабДокумент.Вывести(Область);
	
	Возврат ТабДокумент;
КонецФункции

При открытии общей формы "ПечатьДокументов", все важные процессы происходят в процедуре "ПриСозданииНаСервере" и вызываемых ею других процедурах и функциях, в целом основная загвоздка была в том, что переменная "КоллекцияПечатныхФорм" при получении данных из внешней печатной формы и стандартной процедуры печати возвращала таблицу значения, но из модуля формы на клиенте таблицу значений передать в открываемую форму нельзя, по этой причине нужно эмулировать таблицу в виде Структуры входящий в Массив. 

//Для стандартных печатных форм используется таблица значений, но создать её на клиенте нельзя
	//по этой причине воспользуемся массивом и структурой 
	КоллекцияПечатныхФормСтруктура = Новый Структура;
	КоллекцияПечатныхФормСтруктура.Вставить("СинонимМакета"        , Неопределено);
	КоллекцияПечатныхФормСтруктура.Вставить("Экземпляров"          , 1);
	КоллекцияПечатныхФормСтруктура.Вставить("ИмяМакета"            , Неопределено);
	КоллекцияПечатныхФормСтруктура.Вставить("ПолныйПутьКМакету"    , Неопределено);
	КоллекцияПечатныхФормСтруктура.Вставить("ИмяФайлаПечатнойФормы", Неопределено);
	КоллекцияПечатныхФормСтруктура.Вставить("ТабличныйДокумент"    , ТабДокумент);	
	КоллекцияПечатныхФорм = Новый Массив;
	КоллекцияПечатныхФорм.Добавить(КоллекцияПечатныхФормСтруктура);
	
	ПараметрыПечати = Новый Структура("ДополнительныеПараметры", Новый Структура);
	//если значение будет Ложь, то система попытается восстановить пользовательские настройки, которых у нас нет
	ПараметрыПечати.Вставить("ПереопределитьПользовательскиеНастройкиКоличества", Истина);	
	//заголовок печатной формы
	ПараметрыПечати.Вставить("ЗаголовокФормы", "Заголовок моей печатной формы");
	
	ПараметрыОткрытия = Новый Структура;
	//не важно, какое значение лишь бы было заполнено, иначе будет ошибка
	ПараметрыОткрытия.Вставить("ИсточникДанных"       , "ВнешняяОбработка");
	ПараметрыОткрытия.Вставить("ПараметрыПечати"      , ПараметрыПечати);	
	ПараметрыОткрытия.Вставить("КоллекцияПечатныхФорм", КоллекцияПечатныхФорм);	
	ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);	
	
КонецПроцедуры

Пример обработки можно скачать ниже.

Печатная форма печать внешняя печать

См. также

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Расскажу, как использовать полезный функционал - инструментарий разработчика «1С:Библиотека стандартных подсистем» (БСП) в своих объектах метаданных. Статья будет полезна как шпаргалка при написании собственных объектов метаданных.

27.12.2024    3871    PROSTO-1C    15    

44

БСП (Библиотека стандартных подсистем) Программист Бесплатно (free)

Синтакс-помощник БСП - справочник по Библиотеке Стандартных Подсистем, профессиональный инструмент разработчика с интуитивно понятным интерфейсом. Читайте в статье как использовать все возможности справочника и сделать работу с БСП более комфортной и эффективной.

11.12.2024    4090    gorenski    0    

8

БСП (Библиотека стандартных подсистем) Менеджеры внешних отчетов Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Абонемент ($m)

За последние лет 5 несколько раз сталкиваюсь с проблемой на разных проектах (в конфигурациях 1С:ERP, 1С:ERP УХ и многих других, основанных на БСП), когда много пользователей (около 30 тысяч) в информационной базе, время добавления доступа для пользователей занимает значительное время. Открытие списка занимает от 10 до 15 секунд, и каждое изменение списка еще примерно столько же.

1 стартмани

10.12.2024    1095    Iaskeliainen    2    

7

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Некоторые нюансы, если вы захотите создавать свои расширения. Доработка отчета "Связанные документы" для отражения документов расширения. Печатные формы с шаблоном Word.

20.11.2024    3567    milkers    3    

12

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1840    PROSTO-1C    0    

19

БСП (Библиотека стандартных подсистем) Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    1435    PROSTO-1C    4    

14

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

В статье рассмотрим пошаговую инструкцию создания дополнительного отчета с фоновым формированием результата.

04.10.2024    2413    MadRave    11    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. infostartfilipich 17.02.16 12:27 Сейчас в теме
Спасибо, пригодилось!
2. vis_tmp 32 18.11.16 09:17 Сейчас в теме
Большое спасибо - всё работает!
3. vis_tmp 32 18.11.16 09:33 Сейчас в теме
http://infostart.ru/public/402197/

А вот есть ещё похожий вариант - только там "КоллекцияПечатныхФорм" формируется не вручную, а вызовом типовой функции.
4. waol 319 20.01.17 17:19 Сейчас в теме
5. Sangre1999 51 29.03.19 11:31 Сейчас в теме
Спасибо пригодилось, единственное пришлось добавить:
КоллекцияПечатныхФормСтруктура.Вставить("ОфисныеДокументы" , "");
Оставьте свое сообщение