Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Тип отчета «Программно» — это гибкий способ получения информации как из Системы компоновки данных, так и из объектов «1С: Предприятие» с использованием запросов.

Принцип работы основан на составлении программы выборки данных на языке программирования 1С.

Здесь мы рассмотрим два примера создания отчета методом «Программно»: с использованием Системы компоновки данных (СКД) и запросов.

Разделы

Table of Contents

Возможности

  • доступ к любым объектам и методам платформы «1С: Предприятие» с соблюдением ролей пользователя;
  • формирование отчетов на основе макетов СКД;
  • доступ к виртуальным документам обработки Агент Плюс: Посещение, Мерчендайзинг, Задание, ПланПосещений.

Описание

При выборе типа отчета «Программно» вкладка «Текст программы» заполняется шаблоном.


Шаблон программы

В шаблоне описана структура программы и доступные глобальные параметры и методы.

Подробнее о глобальном списке значений «сзПараметры» можете узнать в статье «Список значений параметров».

Code Block
languagejava
titleШаблон программы
linenumberstrue
collapsetrue
	//ШАБЛОН ПРОГРАММЫ: 
	
	//1. Глобальные параметры
	//1.1 Параметры
	//	сзПараметры					- СписокЗначений	- Список значений из вкладки Параметры
	//	сзПараметры.Значение		- Любой				- Значение параметра
	//	сзПараметры.Представление   - Строка			- Имя параметра
	//	сзПараметры.Пометка         - Булево			- Признак "Использовать"
	//1.2 Результат
	//	ТабличныйДокументРезультат  - ТабличныйРезультат - Результат выполнения программы, при выгрузке данные из параметра будут сконвертированы в МУ. 
	                                                   
	//2. Макет схемы компоновки данных
	СхемаКомпоновкиДанных = Отчеты.ЛюбойОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	
	//3. ВариантыНастроек 
	ВариантыНастроек = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // Или другой: СхемаКомпоновкиДанных.ВариантыНастроек.Найти("СвойВариант");	
	
	//3. КомпоновщикНастроек
	КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
	КомпоновщикНастроек.ЗагрузитьНастройки(ВариантыНастроек);	
	
	//4. Установка параметров. сзПараметры - глобальный параметр                                              
	Для Каждого Элемент Из сзПараметры Цикл 
		ПараметрОтчета = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(Элемент.Представление));
		Если ПараметрОтчета <> Неопределено Тогда
			ПараметрОтчета.Использование = Элемент.Пометка;
			ПараметрОтчета.Значение 	 = Элемент.Значение;
		КонецЕсли;
	КонецЦикла;
	
	//5. Вывод значений параметров в отчет (шапка отчета)
	ПараметрВыводитьПараметры = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьПараметрыДанных"));
	ПараметрВыводитьПараметры.Использование = Истина;
	ПараметрВыводитьПараметры.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить
	
	//6. Вывод значений отбора в отчет (шапка отчета)
	ПараметрВыводитьОтбор = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
	ПараметрВыводитьОтбор.Использование = Истина;
	ПараметрВыводитьОтбор.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить
	
	//7. КомпоновщикМакетаКомпоновкиДанных 
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	Настройки = КомпоновщикНастроек.Настройки;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
	
	//8. ПроцессорКомпоновкиДанных
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина);
	
	//9. Результат выполнения. ТабличныйДокументРезультат - глобальный параметр
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ТабличныйДокументРезультат); 
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);



Создаем отчет с использованием макета СКД

С помощью макета СКД сформируем ведомость по товарам на мобильном складе торгового агента за период. Период задается агентом на мобильном устройстве.

Программа



Code Block
languagejava
titleТекст программы «Ведомость по товарам на мобильном складе торгового агента за период»
linenumberstrue
collapsetrue
//ПРОГРАММА: Ведомость по товарам на мобильном складе торгового агента за период 

//1. Глобальные параметры
//1.1 Параметры
//    сзПараметры                    - СписокЗначений    - Список значений из вкладки Параметры
//    сзПараметры.Значение        - Любой                - Значение параметра
//    сзПараметры.Представление   - Строка            - Имя параметра
//    сзПараметры.Пометка         - Булево            - Признак "Использовать"
//1.2 Результат
//    ТабличныйДокументРезультат  - ТабличныйРезультат - Результат выполнения программы, при выгрузке данные из параметра будут сконвертированы в МУ. 
                                                   
//2. Макет схемы компоновки данных
СхемаКомпоновкиДанных = Отчеты.ВедомостьПоТоварамНаСкладах.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

//3. ВариантыНастроек 
ВариантыНастроек = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // Или другой: СхемаКомпоновкиДанных.ВариантыНастроек.Найти("СвойВариант");    

//3. КомпоновщикНастроек
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
КомпоновщикНастроек.ЗагрузитьНастройки(ВариантыНастроек);    

//4. Установка параметра Период и отбора по Складу. сзПараметры - глобальный параметр                                              
ПериодОчета = Новый СтандартныйПериод;
Для Каждого Элемент Из сзПараметры Цикл 
    //4.1 Заполнение "ПериодОчета" - это период отчета.
    Если Элемент.Представление = "ПериодОт" Тогда
        ПериодОчета.ДатаНачала =    Элемент.Значение;
    ИначеЕсли Элемент.Представление = "ПериодДо" Тогда
        ПериодОчета.ДатаОкончания = КонецДня(Элемент.Значение);
    КонецЕсли;
    //4.2 Отбор по складу
    Если Элемент.Представление = "Склад" И Элемент.Пометка  Тогда
    
        Если ЗначениеЗаполнено(ВыбАгент) И ЗначениеЗаполнено(ВыбНастройкиАгента.МобильныйСклад) Тогда
            //МобильныйСклад, при выгрузке
            Склад = ВыбНастройкиАгента.МобильныйСклад;
        ИначеЕсли НЕ ЗначениеЗаполнено(ВыбАгент) И ЗначениеЗаполнено(Элемент.Значение) Тогда
             //Для теста, при нажатии на кнопку сформировать в УС.
            Склад = Элемент.Значение
        Иначе
            Продолжить;
        КонецЕсли;

        ДоступноеПоле = КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Склад");
        ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение     = ДоступноеПоле.Поле;
        ЭлементОтбора.ВидСравнения         = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение     = Склад;
        ЭлементОтбора.Использование     = Истина;
        
    КонецЕсли;
КонецЦикла;
//4.3 Установка стандартного периода
ПараметрОтчетаСтандартныйПериод = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
ПараметрОтчетаСтандартныйПериод.Использование = Истина;
ПараметрОтчетаСтандартныйПериод.Значение       = ПериодОчета;

//5. Вывод значений параметров в отчет (шапка отчета)
ПараметрВыводитьПараметры = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьПараметрыДанных"));
ПараметрВыводитьПараметры.Использование = Истина;
ПараметрВыводитьПараметры.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить

//6. Вывод значений отбора в отчет (шапка отчета)
ПараметрВыводитьОтбор = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
ПараметрВыводитьОтбор.Использование = Истина;
ПараметрВыводитьОтбор.Значение = ТипВыводаТекстаКомпоновкиДанных.Выводить; //Или ТипВыводаТекстаКомпоновкиДанных.НеВыводить

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

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

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


Параметры

Результат на мобильном устройстве


Создаем отчет с выборкой данных с помощью запроса

Использование языка запросов позволяет не только получать доступ к различным объектам «1С: Предприятие», но и выбирать данные их виртуальных документов обработки Агент Плюс.

С помощью запроса к информационной базе сформируем перечень документов «Посещение», созданных агентом за определенный период. Агент на мобильном устройстве может выбрать период и партнера. Выбор партнера не обязателен.

Программа



Code Block
languagejava
titleТекст программы «Перечень документов «Посещение», созданных агентом за определенный период»
linenumberstrue
collapsetrue
//ПРОГРАММА: Перечень документов Посещение, созданных агентом за определенный период  

//1. Глобальные параметры
//1.1 Параметры
//    сзПараметры                    - СписокЗначений    - Список значений из вкладки Параметры
//    сзПараметры.Значение        - Любой                - Значение параметра
//    сзПараметры.Представление   - Строка            - Имя параметра
//    сзПараметры.Пометка         - Булево            - Признак "Использовать"
//1.2 Результат
//    ТабличныйДокументРезультат  - ТабличныйРезультат - Результат выполнения программы, при выгрузке данные из параметра будут сконвертированы в МУ. 

//2. Получение всех документов посещение
тзПосещение = ВОТЗЗагрузить("_Посещение");

//3. Запрос с отбором
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    тзПосещение.Дата КАК Дата,
               |    РАЗНОСТЬДАТ(тзПосещение.ВремяОкончания, тзПосещение.ВремяНачала, МИНУТА) КАК Время,
               |    тзПосещение.Партнер КАК Партнер,
               |    тзПосещение.Менеджер КАК Агент
               |ПОМЕСТИТЬ тзПосещение
               |ИЗ
               |    &тзПосещение КАК тзПосещение
               |;
               |
               |////////////////////////////////////////////////////////////////////////////////
               |ВЫБРАТЬ
               |    тзПосещение.Дата КАК Дата,
               |    тзПосещение.Время КАК Время,
               |    тзПосещение.Партнер КАК Партнер,
               |    тзПосещение.Агент КАК Агент
               |ИЗ
               |    тзПосещение КАК тзПосещение
               |ГДЕ
               |    тзПосещение.Дата МЕЖДУ НачалоПериода(&ПериодОт,День) И КонецПериода(&ПериодДо,День)";

Запрос.УстановитьПараметр("тзПосещение", тзПосещение);


//4. Установка параметров Период и партнер. сзПараметры - глобальный параметр                                              
Для Каждого Элемент Из сзПараметры Цикл 
    Если Элемент.Представление = "ПериодОт" Тогда
        Запрос.УстановитьПараметр("ПериодОт", Элемент.Значение);
    ИначеЕсли Элемент.Представление = "ПериодДо" Тогда
        Запрос.УстановитьПараметр("ПериодДо", Элемент.Значение);
    ИначеЕсли Элемент.Представление = "Партнер" И Элемент.Пометка И ЗначениеЗаполнено(Элемент.Значение) Тогда
        Запрос.Текст = Запрос.Текст + Символы.ПС + "И тзПосещение.Партнер = &Партнер";
        Запрос.УстановитьПараметр("Партнер", Элемент.Значение);            
    КонецЕсли;
КонецЦикла;

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

Параметры


Результат на мобильном устройстве