Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Меркулова_Пособие_РазработкаУправляемыхПриложен...doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
18 Мб
Скачать
☆

Разработка ведомости в скд

Формируем запрос с вычисляемыми полями, рис. 10.19.

Рис.10.19. Конструктор запроса для ведомости

  1. Выбираем ресурсы (рис.10.20.)

Рис.19.20. Выбор ресурсов ведомости

Поскольку поля «товар» и «склад», «Период» должны стать входными данными для отчета, передаваемые программным способом, эти поля устанавливаем в закладке «параметры», рис.10.21.

Рис.10.21. Настройка параметров ведомости

На закладке «настройка» сначала определяем группировки отчета, рис.10.22.

Рис.10.22. Настройка группировок ведомости

Затем описываем параметры, как, во-первых, не включаемые в пользовательские

настройки, а во-вторых, значение которых формируется программным путем, т.е. как параметры данной СКД, рис.10.23.

Рис.10.23. Пользовательские настройки параметров ведомости

Формируем выбранные поля, рис.10.14.:

Рис.10.24. Окончательный выбор колонок табличной части ведомости

Поскольку данная ведомость должна быть сформирована по конкретному товару, складу, а также за период с начала функционирования БД до назначенной в основном отчете даты, необходимо установить отбор. Поскольку все поля отбора получают значение при вызове конкретизирующего отчета, следовательно, это и будут значения переданных параметров() рис.10.25).

Рис.10.25. Формирование отбора для ведомости

Наконец, назначим сортировку данных в ведомости по периоду, рис. 10.26.

Рис.10.26. Назначение сортировки данных ведомости

Данный вариант отчета по умолчанию назван «основной». Для запуска ведомости в автономном режиме добавим новый вариант отчета «автономный» копированием основного, рис.10.27.

Рис.10.27. Формирование нового варианта отчета «Автономный»

В данном варианте изменяем только настройки:

А) параметры нового варианта отчета, рис.10.28.:

Рис.10.28. Пользовательские настройки нового варианта отчета

б) Отбор нового варианта отчета, рис.10.29.:

Рис.10.29. Отбор нового варианта отчета

Теперь, если запустить отчет в пользовательском режиме, получим (рис.10.30):

Рис. 10.30. Ведомость движения товара на складе при автономном запуске

Осталось выяснить, как этот отчет будет вызываться из основного отчета, а также как осуществляется передача параметров при вызове.

Присоединение ведомости в качестве расшифровки отчета по остаткам

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

КомпоновщикМакетаКомпоновкиДанных. На вход его поступает схема компоновки данных, а также настройки(параметры, отборы и прочее), а на выходе (с помощью метода СКОМПОНОВАТЬ) формируется макет.

Далее этот макет необходимо заполнить данными. Для этого используется объект ПроцессорКомпоновкиДанных, который возвращает Результат. Но пока его выводить на экран нельзя.

Для вывода результата на экран используется объект ПроцессорВыводаКомпоновкиДанных. Он возвращает либо ТабличныйДокумент, либо форму отчета на СКД

Реализуем эти три этапа

&НаСервере

Функция ОбработатьРасшифровку(товар,Склад,КонПериода)

Ведомость=Отчеты.ВедомостьДвиженияТОвара_СКД1.Создать();

// заодно формируем заголовок ведомости программным путем

КомпоновщикНастроек=Ведомость.КомпоновщикНастроек;

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

Параметр=Настройки.ПараметрыВывода.НайтиЗначениеПараметра (Новый ПараметрКомпоновкиДанных("Заголовок"));

Параметр.Значение="Дижение товара за период до "+Строка(КонПериода);

Параметр.Использование=Истина;

Ведомость.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

// первый этап

СКД=Ведомость.СхемаКомпоновкиДанных;

ПараметрТовар=Настройки.ПараметрыДанных.Элементы.Найти("Товар");

Если ПараметрТовар<> Неопределено Тогда

ПараметрТовар.Значение=Товар;

КонецЕСли;

ПараметрСклад=Настройки.ПараметрыДанных.Элементы.Найти("Склад");

Если ПараметрСклад<> Неопределено Тогда

ПараметрСклад.Значение=Склад;

КонецЕСли;

ПараметрКонДата=Настройки.ПараметрыДанных.Элементы.Найти("КонДата");

Если ПараметрКонДата<> Неопределено Тогда

ПараметрКонДата.Значение=КонПериода;

КонецЕСли;

Ведомость.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

КомпоновщикМакета= новый КомпоновщикМакетаКомпоновкиДанных;

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

// второй этап

ПроцессорСКД=Новый ПроцессорКомпоновкиДанных;

ПроцессорСКД.Инициализировать(макет);

// третий этап

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

ТабДок=Новый ТабличныйДокумент;

ПроцессорВывода.УстановитьДокумент(ТабДок);

ЕщеТаб=ПроцессорВывода.Вывести(ПроцессорСКД);

// осталось показать результат. Но этого в серверной процедуре делать

//нельзя. Поэтому

Возврат ЕщеТаб;

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

Запускаем отчет (рис.10.31):

Рис.10.31. Основной отчет по остаткам

После вывода расшифровки (рис.10.32.):

Рис.10.32. Ведомость движения товара на складе как расшифровка основного отчета