Приветствую Вас ГостьСуббота, 18.05.2024, 21:39

Каталог статей


Формирование отчета по внешним данным

Если надо сформировать отчет по внешним данным, например по данным из внешнего источника или нельзя сформировать корректный отчет, то надо использовать в качестве источника набора данных "Объект".

В качестве источника набора данных могут быть:

  • наборы записей регистров,
  • таблицы значений,
  • табличная часть,
  • результат запроса,
  • область ячеек табличного документа,
  • прикладной объект.

Получение данных из запроса и табличной частит документа

Например сформируем печатную форму с помощью СКД. Для примера так же программно вставим область с подписями из другого макета в печатную форму.

В макете СКД 2 набора данных:

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

Обработчик команды «Печать»

&НаКлиенте
Процедура Печать(Команда)
    Результат = ПечатьДокумента();
    Результат.ОтображатьСетку = Ложь;
    Результат.ОтображатьЗаголовки = Ложь;
    Результат.Показать();
КонецПроцедуры

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

    //Формируем таблицу значений для набора данных
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |СборкаКомпьютера.Дата,
    |СборкаКомпьютера.Номер,
    |СборкаКомпьютера.Мастер,
    |СборкаКомпьютера.Продукция КАК СистемныйБлок,
    |СборкаКомпьютера.Склад
    |ИЗ
    |Документ.СборкаКомпьютера КАК СборкаКомпьютера
    |ГДЕ
    |СборкаКомпьютера.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", ДокументОбъект.Ссылка); 
    Результат = Запрос.Выполнить();
    ШапкаДок = Результат.Выгрузить();

    //Формируем наборы данных для передачи в СКД
    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("СоставСБ",ДокументОбъект.ПереченьНоменклатуры); // в СоставСБ выгружаем табличную часть ПереченьНоменклатуры документа
    ВнешниеНаборыДанных.Вставить("ДокументСБ",ШапкаДок); // в ДокументСБ выгружаем результат запроса
    

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

    // Выводим в табличный документ область из дополнительного макета
    ДокументРезультат.Вывести(Область);
    
    Возврат ДокументРезультат;   
    
КонецФункции 

Категория: СКД | Добавил: leshic (03.12.2021)
Просмотров: 220 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0