Page tree

Versions Compared

Key

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

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

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

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

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

Разделы

Table of Contents

Возможности

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

Описание

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


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

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

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

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



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

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

Программа

Expand
titleНажмите, чтобы посмотреть код программы
1C Code Highlighter


//ШАБЛОН ПРОГРАММЫ:


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


Параметры

Image Modified

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

Image Modified


1C Code Highlighter //ШАБЛОН ПРОГРАММЫ:

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

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

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

Программа

Expand
titleНажмите, чтобы посмотреть код программы

обязателен.

Программа



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

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

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

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

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


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

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

Параметры


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