Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Тип отчета «Программно» — это гибкий способ получения информации как из Системы компоновки данных, так и из объектов «1С: Предприятие» с использованием запросов.
Принцип работы основан на составлении программы выборки данных на языке программирования 1С.
Здесь мы рассмотрим два примера создания отчета методом «Программно»: с использованием Системы компоновки данных (СКД) и запросов.
Разделы
Table of Contents |
---|
Возможности
- доступ к любым объектам и методам платформы «1С: Предприятие» с соблюдением ролей пользователя;
- формирование отчетов на основе макетов СКД;
- доступ к виртуальным документам обработки Агент Плюс: Посещение, Мерчендайзинг, Задание, ПланПосещений.
Описание
При выборе типа отчета «Программно» вкладка «Текст программы» заполняется шаблоном.
В шаблоне описана структура программы и доступные глобальные параметры и методы.
Шаблон программы
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
|
//ШАБЛОН ПРОГРАММЫ:
//1. Глобальные параметры
//1.1 Параметры
// сзПараметры - СписокЗначений - Список значений из вкладки Параметры
// сзПараметры.Значение - Любой - Значение параметра
// сзПараметры.Представление - Строка - Имя параметра
// сзПараметры.Пометка - Булево - Признак "Использовать"
//1.2 Результат
// ТабличныйДокументРезультат - ТабличныйРезультат - Результат выполнения программы, при выгрузке данные из параметра будут сконвертированы в МУ.
//2. Макет схемы компоновки данных
СхемаКомпоновкиДанных = Отчеты.ЛюбойОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
//3. ВариантыНастроек
ВариантыНастроек = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // Или другой: СхемаКомпоновкиДанных.ВариантыНастроек.Найти("СвойВариант");
//3. КомпоновщикНастроек
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(ВариантыНастроек);
//4. Установка параметров. сзПараметры - глобальный параметр
Для Каждого Элемент Из сзПараметры Цикл
ПараметрОтчета = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(Элемент.Представление));
Если ПараметрОтчета <> Неопределено Тогда
ПараметрОтчета.Использование = Элемент.Пометка;
ПараметрОтчета.Значение = Элемент.Значение;
КонецЕсли;
КонецЦикла;
//5. Вывод значений параметров в отчет (шапка отчета)
ПараметрВыводитьПараметры = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьПараметрыДанных"));
ПараметрВыводитьПараметры.Использование = Истина;
ПараметрВыводитьПараметры.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить
//6. Вывод значений отбора в отчет (шапка отчета)
ПараметрВыводитьОтбор = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
ПараметрВыводитьОтбор.Использование = Истина;
ПараметрВыводитьОтбор.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить
//7. КомпоновщикМакетаКомпоновкиДанных
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Настройки = КомпоновщикНастроек.Настройки;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
//8. ПроцессорКомпоновкиДанных
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина);
//9. Результат выполнения. ТабличныйДокументРезультат - глобальный параметр
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабличныйДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
Создаем отчет с использованием макета СКД
С помощью макета СКД сформируем ведомость по товарам на мобильном складе торгового агента за период. Период задается агентом на мобильном устройстве.
Программа
Code Block | |||
---|---|---|---|
|
| |||||
//ПРОГРАММА: Ведомость по товарам на мобильном складе торгового агента за период //1. Глобальные параметры //1.1 Параметры // сзПараметры - СписокЗначений - Список значений из вкладки Параметры // сзПараметры.Значение - Любой - Значение параметра // сзПараметры.Представление - Строка - Имя параметра // сзПараметры.Пометка - Булево - Признак "Использовать" //1.2 Результат // ТабличныйДокументРезультат - ТабличныйРезультат - Результат выполнения программы, при выгрузке данные из параметра будут сконвертированы в МУ. //2. Макет схемы компоновки данных СхемаКомпоновкиДанных = Отчеты.ВедомостьПоТоварамНаСкладах.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //3. ВариантыНастроек ВариантыНастроек = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // Или другой: СхемаКомпоновкиДанных.ВариантыНастроек.Найти("СвойВариант"); //3. КомпоновщикНастроек КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроек.ЗагрузитьНастройки(ВариантыНастроек); //4. Установка параметра Период и отбора по Складу. сзПараметры - глобальный параметр ПериодОчета = Новый СтандартныйПериод; Для Каждого Элемент Из сзПараметры Цикл //4.1 Заполнение "ПериодОчета" - это период отчета. Если Элемент.Представление = "ПериодОт" Тогда ПериодОчета.ДатаНачала = Элемент.Значение; ИначеЕсли Элемент.Представление = "ПериодДо" Тогда ПериодОчета.ДатаОкончания = КонецДня(Элемент.Значение); КонецЕсли; //4.2 Отбор по складу Если Элемент.Представление = "Склад" И Элемент.Пометка Тогда Если ЗначениеЗаполнено(ВыбАгент) И ЗначениеЗаполнено(ВыбНастройкиАгента.МобильныйСклад) Тогда //МобильныйСклад, при выгрузке Склад = ВыбНастройкиАгента.МобильныйСклад; ИначеЕсли НЕ ЗначениеЗаполнено(ВыбАгент) И ЗначениеЗаполнено(Элемент.Значение) Тогда //Для теста, при нажатии на кнопку сформировать в УС. Склад = Элемент.Значение Иначе Продолжить; КонецЕсли; ДоступноеПоле = КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Склад"); ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = ДоступноеПоле.Поле; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = Склад; ЭлементОтбора.Использование = Истина; КонецЕсли; КонецЦикла; //4.3 Установка стандартного периода ПараметрОтчетаСтандартныйПериод = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период")); ПараметрОтчетаСтандартныйПериод.Использование = Истина; ПараметрОтчетаСтандартныйПериод.Значение = ПериодОчета; //5. Вывод значений параметров в отчет (шапка отчета) ПараметрВыводитьПараметры = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьПараметрыДанных")); ПараметрВыводитьПараметры.Использование = Истина; ПараметрВыводитьПараметры.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить //6. Вывод значений отбора в отчет (шапка отчета) ПараметрВыводитьОтбор = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор")); ПараметрВыводитьОтбор.Использование = Истина; ПараметрВыводитьОтбор.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить //7. КомпоновщикМакетаКомпоновкиДанных КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Настройки = КомпоновщикНастроек.Настройки; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); //8. ПроцессорКомпоновкиДанных ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина); //9. Результат выполнения. ТабличныйДокументРезультат - глобальный параметр ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
Параметры
Image Modified
Результат на мобильном устройстве
Image Modified
Создаем отчет с выборкой данных с помощью запроса
Использование языка запросов позволяет не только получать доступ к различным объектам «1С: Предприятие», но и выбирать данные их виртуальных документов обработки Агент Плюс.
С помощью запроса к информационной базе сформируем перечень документов «Посещение», созданных агентом за определенный период. Агент на мобильном устройстве может выбрать период и партнера. Выбор партнера не обязателен.
Программа
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
//ПРОГРАММА: Перечень документов Посещение, созданных агентом за определенный период
//1. Глобальные параметры
//1.1 Параметры
// сзПараметры - СписокЗначений - Список значений из вкладки Параметры
// сзПараметры.Значение - Любой - Значение параметра
// сзПараметры.Представление - Строка - Имя параметра
// сзПараметры.Пометка - Булево - Признак "Использовать"
//1.2 Результат
// ТабличныйДокументРезультат - ТабличныйРезультат - Результат выполнения программы, при выгрузке данные из параметра будут сконвертированы в МУ.
//2. Получение всех документов посещение
тзПосещение = ВОТЗЗагрузить("_Посещение");
//3. Запрос с отбором
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| тзПосещение.Дата КАК Дата,
| РАЗНОСТЬДАТ(тзПосещение.ВремяОкончания, тзПосещение.ВремяНачала, МИНУТА) КАК Время,
| тзПосещение.Партнер КАК Партнер,
| тзПосещение.Менеджер КАК Агент
|ПОМЕСТИТЬ тзПосещение
|ИЗ
| &тзПосещение КАК тзПосещение
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| тзПосещение.Дата КАК Дата,
| тзПосещение.Время КАК Время,
| тзПосещение.Партнер КАК Партнер,
| тзПосещение.Агент КАК Агент
|ИЗ
| тзПосещение КАК тзПосещение
|ГДЕ
| тзПосещение.Дата МЕЖДУ НачалоПериода(&ПериодОт,День) И КонецПериода(&ПериодДо,День)";
Запрос.УстановитьПараметр("тзПосещение", тзПосещение);
//4. Установка параметров Период и партнер. сзПараметры - глобальный параметр
Для Каждого Элемент Из сзПараметры Цикл
Если Элемент.Представление = "ПериодОт" Тогда
Запрос.УстановитьПараметр("ПериодОт", Элемент.Значение);
ИначеЕсли Элемент.Представление = "ПериодДо" Тогда
Запрос.УстановитьПараметр("ПериодДо", Элемент.Значение);
ИначеЕсли Элемент.Представление = "Партнер" И Элемент.Пометка И ЗначениеЗаполнено(Элемент.Значение) Тогда
Запрос.Текст = Запрос.Текст + Символы.ПС + "И тзПосещение.Партнер = &Партнер";
Запрос.УстановитьПараметр("Партнер", Элемент.Значение);
КонецЕсли;
КонецЦикла;
//5. Вывод результата
РезультатЗапроса = Запрос.Выполнить();
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(РезультатЗапроса);
ПостроительОтчета.Вывести(ТабличныйДокументРезультат); |
Expand | ||
---|---|---|
| ||
|