Вывод отчета в стандартную форму Печать БСП с рабочими расшифровками
Сформировал отчет, нужно было вывести его в стандартную форму Печать.
Последовал совету на Инфостарте, получилось:
// создадим коллекцию печатных форм, в которую надо будет добавить нужный нам табличный документ
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("МакетСдельнаяОплата");
// Добавляем в коллекцию (тип массив) сформированный Табличный документ
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДок;
// если требуется устанавливаем параметры печати
КоллекцияПечатныхФорм[0].Экземпляров=1;
КоллекцияПечатныхФорм[0].СинонимМакета = "Сдельная оплата"; // используется для формирования имени файла при сохранении из общей формы печати документов
// .. и выводим стандартной процедурой БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);
Но не работали расшифровки отчета, не открывались ссылочные значения при клике.
Решил обработать все ячейки отчета и поменять числовую расшифровку на конкретный ссылочный объект:
ТабДок = Новый ТабличныйДокумент; СхемаКомпоновкиДанныхД = ПолучитьОбщийМакет("рсдопл_МакетСКД"); КомпоновщикНастроекД = Новый КомпоновщикНастроекКомпоновкиДанных(); КомпоновщикНастроекД.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанныхД)); КомпоновщикНастроекД.ЗагрузитьНастройки(СхемаКомпоновкиДанныхД.НастройкиПоУмолчанию); ДанныеРасшифровкиД = Новый ДанныеРасшифровкиКомпоновкиДанных(); СВД = Новый Структура("ТЗ", ТЗСотрудники); ВывестиОтчетВСКД(ТабДок, СхемаКомпоновкиДанныхД, КомпоновщикНастроекД, ДанныеРасшифровкиД, СВД); ПроставитьРасшифровку(ТабДок, ДанныеРасшифровкиД); Функция ПроставитьРасшифровку(ТабДок, ДанныеРасшифровки) // Получаем границы табличного документа ВсегоСтрок = ТабДок.ВысотаТаблицы; ВсегоКолонок = ТабДок.ШиринаТаблицы; // Внешний цикл по строкам Для НомерСтроки = 1 По ВсегоСтрок Цикл // Внутренний цикл по колонкам Для НомерКолонки = 1 По ВсегоКолонок Цикл // Получаем область ячейки по ее координатам Область = ТабДок.Область(НомерСтроки, НомерКолонки); // Проверяем значение в ячейке. // Используем свойство .Текст для сравнения видимого отображения. Расшифровка = Область.Расшифровка; Если Расшифровка = Неопределено Тогда Продолжить; КонецЕсли; ЗначениеРасшифровки = ПолучитьЗначениеРасшифровки(ДанныеРасшифровки, Расшифровка); Если ЗначениеРасшифровки <> Неопределено Тогда Область.Расшифровка = ЗначениеРасшифровки; КонецЕсли; КонецЦикла; // Конец цикла по колонкам КонецЦикла; // Конец цикла по строкам КонецФункции Функция ПолучитьЗначениеРасшифровки(ДанныеРасшифровки, Расшифровка) Экспорт Если ТипЗнч(Расшифровка) <> Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда Возврат Неопределено; Конецесли; Поля = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля(); //Тут получаем поля расшифровки, среди которых находим нужное. Для Каждого Поле ИЗ Поля Цикл Рез = Поле.значение; Тип = ТипЗнч(Рез); Если Справочники.ТипВсеСсылки().СодержитТип(Тип) ИЛИ Документы.ТипВсеСсылки().СодержитТип(Тип) Тогда Возврат Рез; КонецЕсли; КонецЦикла; КонецФункции
Все получилось!
