- Created by Александр Дегтярев, last modified on Jun 19, 2020
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 6 Next »
Тип отчета «Программно» — это гибкий способ получения информации как из Системы компоновки данных, так и из объектов «1С: Предприятие» с использованием запросов.
Принцип работы основан на составлении программы выборки данных на языке программирования 1С.
Разделы
Возможности
- доступ к любым объектам и методам платформы «1С: Предприятие» с соблюдением ролей пользователя;
- формирование отчетов на основе макетов СКД;
- доступ к виртуальным документам обработки Агент Плюс: Посещение, Мерчендайзинг, Задание, ПланПосещений.
Описание
При выборе типа отчета «Программно» вкладка «Текст программы» заполняется шаблоном.
В шаблоне описана структура программы и доступные глобальные параметры и методы.
//ШАБЛОН ПРОГРАММЫ: //1. Глобальные параметры //1.1 Параметры // сзПараметры - СписокЗначений - Список значений из вкладки Параметры // сзПараметры.Значение - Любой - Значение параметра // сзПараметры.Представление - Строка - Имя параметра // сзПараметры.Пометка - Булево - Признак "Использовать" //1.2 Результат // ТабличныйДокументРезультат - ТабличныйРезультат - Результат выполнения программы, при выгрузке данные из параметра будут сконвертированы в МУ. //2. Макет схемы компоновки данных СхемаКомпоновкиДанных = Отчеты.ЛюбойОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //3. ВариантыНастроек ВариантыНастроек = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // Или другой: СхемаКомпоновкиДанных.ВариантыНастроек.Найти("СвойВариант"); //3. КомпоновщикНастроек КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроек.ЗагрузитьНастройки(ВариантыНастроек); //4. Установка параметров. сзПараметры - глобальный параметр Для Каждого Элемент Из сзПараметры Цикл ПараметрОтчета = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(Элемент.Представление)); Если ПараметрОтчета <> Неопределено Тогда ПараметрОтчета.Использование = Элемент.Пометка; ПараметрОтчета.Значение = Элемент.Значение; КонецЕсли; КонецЦикла; //5. Вывод значений параметров в отчет (шапка отчета) ПараметрВыводитьПараметры = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьПараметрыДанных")); ПараметрВыводитьПараметры.Использование = Истина; ПараметрВыводитьПараметры.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить //6. Вывод значений отбора в отчет (шапка отчета) ПараметрВыводитьОтбор = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор")); ПараметрВыводитьОтбор.Использование = Истина; ПараметрВыводитьОтбор.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить //7. КомпоновщикМакетаКомпоновкиДанных КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Настройки = КомпоновщикНастроек.Настройки; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); //8. ПроцессорКомпоновкиДанных ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина); //9. Результат выполнения. ТабличныйДокументРезультат - глобальный параметр ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Создание отчета
Рассмотрим два примера создания отчета методом «Программно»: с использованием Системы компоновки данных (СКД) и запросов.
Используем макет СКД
С помощью макета СКД сформируем ведомость по товарам на мобильном складе торгового агента за период. Период задается агентом на мобильном устройстве.
//ШАБЛОН ПРОГРАММЫ: //1. Глобальные параметры //1.1 Параметры // сзПараметры - СписокЗначений - Список значений из вкладки Параметры // сзПараметры.Значение - Любой - Значение параметра // сзПараметры.Представление - Строка - Имя параметра // сзПараметры.Пометка - Булево - Признак "Использовать" //1.2 Результат // ТабличныйДокументРезультат - ТабличныйРезультат - Результат выполнения программы, при выгрузке данные из параметра будут сконвертированы в МУ. //2. Макет схемы компоновки данных СхемаКомпоновкиДанных = Отчеты.ВедомостьПоТоварамНаСкладах.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //3. ВариантыНастроек ВариантыНастроек = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // Или другой: СхемаКомпоновкиДанных.ВариантыНастроек.Найти("СвойВариант"); //3. КомпоновщикНастроек КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроек.ЗагрузитьНастройки(ВариантыНастроек); //4. Установка параметра Период и отбора по Складу. сзПараметры - глобальный параметр ПериодОчета = Новый СтандартныйПериод; Для Каждого Элемент Из сзПараметры Цикл //4.1 Заполнение "ПериодОчета" - это период отчета. Если Элемент.Представление = "ПериодОт" Тогда ПериодОчета.ДатаНачала = Элемент.Значение; ИначеЕсли Элемент.Представление = "ПериодДо" Тогда ПериодОчета.ДатаОкончания = КонецДня(Элемент.Значение); КонецЕсли; //4.2 Отбор по складу Если Элемент.Представление = "Склад" И Элемент.Пометка Тогда Если ЗначениеЗаполнено(ВыбАгент) И ЗначениеЗаполнено(ВыбНастройкиАгента.МобильныйСклад) Тогда //МобильныйСклад, при выгрузке Склад = ВыбНастройкиАгента.МобильныйСклад; ИначеЕсли НЕ ЗначениеЗаполнено(ВыбАгент) И ЗначениеЗаполнено(Элемент.Значение) Тогда //Для теста, при нажатии на кнопку сформировать в УС. Склад = Элемент.Значение Иначе Продолжить; КонецЕсли; ДоступноеПоле = КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Склад"); ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = ДоступноеПоле.Поле; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Склад; ЭлементОтбора.Использование = Истина; КонецЕсли; КонецЦикла; //4.3 Установка стандартного периода ПараметрОтчетаСтандартныйПериод = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период")); ПараметрОтчетаСтандартныйПериод.Использование = Истина; ПараметрОтчетаСтандартныйПериод.Значение = ПериодОчета; //5. Вывод значений параметров в отчет (шапка отчета) ПараметрВыводитьПараметры = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьПараметрыДанных")); ПараметрВыводитьПараметры.Использование = Истина; ПараметрВыводитьПараметры.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить //6. Вывод значений отбора в отчет (шапка отчета) ПараметрВыводитьОтбор = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор")); ПараметрВыводитьОтбор.Использование = Истина; ПараметрВыводитьОтбор.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить //7. КомпоновщикМакетаКомпоновкиДанных КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Настройки = КомпоновщикНастроек.Настройки; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); //8. ПроцессорКомпоновкиДанных ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина); //9. Результат выполнения. ТабличныйДокументРезультат - глобальный параметр ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Выбираем данные через запрос
Продолжение следует...
- No labels