СКД в управляемых формах

Отзывов (17)FavoriteLoadingВ закладки

Который день бъюсь с программным выводом СКД в управляемых формах.

Есть документ ПутевойЛист, в нем создан макет типа СКД ПечатьПутевки.

В СКД добавлен  набор данных типа объект. Источником является таблица значений Заправка

В настройках СКД, определены группировки и поля

В форме документа создана команда ПоказатьЗаправку с процедурой

&НаКлиенте

Процедура ПоказатьЗаправку(Команда)

ПечатьЗаправки();

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

В процедуре ПечатьЗаправки(); получаем данные в тз Заправка и програмно выводим в СКД

&НаСервере

Процедура ПечатьЗаправки()

Заправка=ЧтениеРегистраСведений.ЗапросЗаправки(Объект.Ссылка);

ВнНбДн = Новый Структура;КомпМак=Новый КомпоновщикМакетаКомпоновкиДанных;

ПроцКД=Новый ПроцессорКомпоновкиДанных;Рез=Новый ТабличныйДокумент;

ПроцВД=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

ВнНбДн.Вставить(“Заправка”,Заправка);

СхКпДн=Документы.ПутевойЛист.ПолучитьМакет(“ПечатьПутевки”);

Нст=СхКпДн.НастройкиПоУмолчанию;

МакКомп=КомпМак.Выполнить(СхКпДн,Нст);

ПроцКД.Инициализировать(МакКомп,ВнНбДн);

ПроцВД.УстановитьДокумент(Рез);

ПроцВД.Вывести(ПроцКД);

Рез.Показать();

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

Функция получения данных в тз Заправка выглядит следующим образом

&НаСервере

Функция ЗапросЗаправки(Док)   Экспорт

Запрос = Новый Запрос;

Запрос.Текст =  “ВЫБРАТЬ

| ДвижениеТопливаОбороты.КарточкаЗаравки КАК КарточкаЗаправки,

| ДвижениеТопливаОбороты.ТопливоПриход КАК Заправка,

| ДвижениеТопливаОбороты.СтоимостьЗаправкиПриход КАК СтоимостьЗаправки

|ИЗ

| РегистрНакопления.ДвижениеТоплива.Обороты КАК ДвижениеТопливаОбороты”;

Результат = Запрос.Выполнить();

тз=Результат.Выгрузить();

Возврат тз;

КонецФункции

На первый взгляд я не нахожу ошибок, но отчет при нажатии кнопки ПоказатьЗаправку не выводится.

Перерыл почти весь инет ничего вразумительного не нашел.

 

 

 

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

17 Коммент.

  1. Когда я реализовывал отчет с внешним набором данных, то пользовался процедурой в модуле отчета ПриКомпоновкеРезультата
    в ней выполняется такой код:
    СтандартнаяОбработка = Ложь;

    ВнешниеДанные = ПолучитьДанныеВнешнихНаборов(ДатаОтчета, СписокРегионов);

    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных, Новый Структура(“ОтветственныеАптеки”,ВнешниеДанные));

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    _______
    ПолучитьДанныеВнешнихНаборов – функция возвращает таблицу значений

  2. Возможно, что проблема кроется в этой строчке:
    СхКпДн=Документы.ПутевойЛист.ПолучитьМакет(«ПечатьПутевки»);

    Попробуйте ее заменить на:
    СхКпДн=ЭтотОбъект.ПолучитьМакет(«ПечатьПутевки»); //если печать вызывается из документа
    ИЛИ
    СхКпДн=ДокументСсылка.ПолучитьМакет(«ПечатьПутевки»); //где ДокументСсылка – это ссылка на документ ПутевойЛист

  3. К сожалению, в управляемых формах это называется просто Объект, но опять же при запуске ошибка Метод объекта не обнаружен (Получитьмакет) и это логично так как форма ничего не знает о макете.

  4. Под понятием “отчет не выводится” вы имете ввиду:
    1. Показывается пустой Табличный документ;
    2. Показывается Табличный документ с оформлением СКД, но без данных;
    3. Другое.
    ?

  5. 3. Другое – ничего не показывается ни пустого ни оформленного. Полное игнорирование команды.

  6. А…. вот в чем дело. В общем тогда подход такой:
    В управляемой форме вы определяете реквизит типа ТабличныйДокумент. Ему определяете элемент управления, в котором он будет выводится.
    Теперь ваша процедура формирования на сервере табличного документа должна не вызывать Показать(), а присваивать вашему реквизиту это значение. Управляемая форма при изменении значения реквизита сама должна его обновить и показать.

    • Получилось. Большое спасибо. Вы меня выручили!
      Только вопрос остался а как это все в печатную форму вывести?

      • Посмотрите на примере конфигурации “Управление небольшой фирмой”. Там есть общая форма, в которую табличные документы выводятся на печать. Во время получения форму в качестве параметров (тип структура) передается сам таб док. А уже эта общая форма его показывает. По-моему так, если ничего не путаю.

  7. конфигурация «Управление небольшой фирмой». – извините сразу не соображу – это где взять?

    • Она была по-моему на диске ИТС, так же в ранних версиях платформы 8.2 вместе с платформой шла демонстрационная база.
      Когда книг не было по этой версии платформы, демо-базы были очень хорошим подспорьем в изучении.

  8. Когда я реализовывал отчет с внешним набором данных, то пользовался процедурой в модуле отчета ПриКомпоновкеРезультата –

    1. это в модуле формы или модуле объекта
    2. ПриКомпоновкеРезультата – это предопределенная процедура, что-то в модуле формы такой не нашел.

Оставить комментарий

RSSКомментарии в RSS

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.