Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Использование нескольких схем компоновки данных в одном отчете          
Vofka Подменю пользователя
сообщение 11.12.12, 13:47
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Одному отчету может принадлежать несколько схем компоновки данных. Но по какой из них тогда он будет формироваться?

Имеем отчет по продажам:



Добавим в него еще один макет с типом Схема компоновки данных. В схеме опишем какой-нибудь произвольный набор данных и настройки. Ну допустим получение остатка на складах.



Откроем отчет в предприятии и сформируем. Что мы видим? Что отчет сформировался по основной схеме компоновки данных. Как же сделать чтобы отчет формировался по Схеме_2.

Откроем основную форму отчета и добавим кнопку Переключить схему.



Для данной кнопки напишем следующую процедуру-обработчик:

    Список = Новый СписокЗначений;
    Список.Добавить("ОсновнаяСхемаКомпоновкиДанных", "Продажи");
    Список.Добавить("Схема_2", "Остатки");

    ВыбЭлемент = Список.ВыбратьЭлемент();

    Если ВыбЭлемент <> Неопределено Тогда
        СхемаКомпоновкиДанных = ПолучитьМакет(ВыбЭлемент.Значение);
    КонецЕсли;

    //Из схемы возьмем настройки по умолчанию
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

    //Помещаем в переменную данные о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    //Формируем макет, с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

    //Выполним компоновку с помощью процессора компоновки
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,
    ДанныеРасшифровки);

    //Очищаем поле табличного документа
    Результат = ЭлементыФормы.Результат;
    Результат.Очистить();

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

    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);


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



В дополнение к статье приведу один полезный, на мой взгляд, комент:

Отличный пример!
Но все можно значительно упростить! Если, например, перед формированием отчета по выбраной СКД нужно установить параметры и/или отборы или на форме есть элементы управление, которые связаны с СКД, то можно переопределить предопределенные реквизиты отчета ”СхемаКомпоновкиДанных” и ”КомпоновщикНастроек” на новую СКД. При этом вывод отчета оставить стандартным.

СхемаКомпоновкиДанных = ЭтотОбъект.ПолучитьМакет(””);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);


P.S. К тому же, если не переопределять ”КомпоновщикНастроек”, то штатные механизмы ”Конструктор настроек…” и ”Настройки…” будут завязаны но основную СКД.

[необходимо зарегистрироваться для просмотра ссылки]

Сообщение отредактировал Vofka - 11.12.12, 13:47

Спасибо сказали: logist, zetovich,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 14:35
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!