Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт // Настройка общих параметров универсального отчета //начальный вариант оформления цветовой схемы УниверсальныйОтчет.ВариантОформления = СтандартноеОформление.Песок; // Содержит название отчета, которое будет выводиться в шапке. // Тип: Строка. // Пример: // УниверсальныйОтчет.мНазваниеОтчета = "Название отчета"; УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним); // Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; // Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета. // Тип: Строка. // Пример: // УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах"; УниверсальныйОтчет.ИмяРегистра = "-"; // Содержит признак необходимости вывода отрицательных значений показателей красным цветом. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ОтрицательноеКрасным = Истина; УниверсальныйОтчет.ОтрицательноеКрасным = Истина; // Содержит признак необходимости вывода в отчет общих итогов. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь; УниверсальныйОтчет.ВыводитьОбщиеИтоги = Истина; // Содержит признак необходимости вывода детальных записей в отчет. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина; УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Ложь; // Содержит признак необходимости отображения флага использования свойств и категорий в форме настройки. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь; УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Истина; // Содержит признак использования свойств и категорий при заполнении настроек отчета. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина; //УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = ЛОЖЬ; // Содержит признак использования простой формы настроек отчета без группировок колонок. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.мРежимФормыНастройкиБезГруппировокКолонок = Истина; // Дополнительные параметры, переданные из отчета, вызвавшего расшифровку. // Информация, передаваемая в переменной ДополнительныеПараметры, может быть использована // для реализации специфичных для данного отчета параметрических настроек. // Описание исходного текста запроса. ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | CRM_ПредложенияОбороты.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.Номенклатура) КАК НоменклатураПредставление, | CRM_ПредложенияОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПредставление, | CRM_ПредложенияОбороты.Контрагент КАК Контрагент, | ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.Контрагент) КАК КонтрагентПредставление, | CRM_ПредложенияОбороты.ДокументПредложения КАК Документ, | ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.ДокументПредложения) КАК ДокументПредставление, | CRM_ПредложенияОбороты.ДокументПредложения.Ответственный КАК Ответственный, | ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.ДокументПредложения.Ответственный) КАК ОтветственныйПредставление, | CRM_ПредложенияОбороты.КоличествоОборот КАК КоличествоОборот, | CRM_ПредложенияОбороты.СтоимостьОборот КАК СтоимостьОборот, | 0 КАК СкидкаОборот, | 1 КАК Количество, | CRM_ПредложенияОбороты.СтоимостьБезСкидокОборот КАК СтоимостьБезСкидокОборот | //ПОЛЯ_СВОЙСТВА | //ПОЛЯ_КАТЕГОРИИ |{ВЫБРАТЬ | Контрагент.*, | Номенклатура.*, | ХарактеристикаНоменклатуры.*, | Ответственный.*, | Документ.*, | КоличествоОборот, | СтоимостьОборот, | СкидкаОборот, | Количество, | (ЕСТЬNULL(ИсточникиИнформацииПриОбращении.ИсточникИнформации,ЗНАЧЕНИЕ(Справочник.ИсточникиИнформацииПриОбращенииПокупателей.ПустаяСсылка))).* КАК ИсточникИнформации | //ПСЕВДОНИМЫ_СВОЙСТВА | //ПСЕВДОНИМЫ_КАТЕГОРИИ |} |ИЗ | РегистрНакопления.CRM_Предложения.Обороты(&ДатаНач, &ДатаКон, , ) КАК CRM_ПредложенияОбороты |{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсточникИнформацииПриОбращении.СрезПоследних(&ДатаКон) КАК ИсточникиИнформацииПриОбращении |ПО CRM_ПредложенияОбороты.Контрагент = ИсточникиИнформацииПриОбращении.Контрагент} |//СОЕДИНЕНИЯ |{ГДЕ | CRM_ПредложенияОбороты.Контрагент.* КАК Контрагент, | CRM_ПредложенияОбороты.Номенклатура.* КАК Номенклатура, | CRM_ПредложенияОбороты.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры, | CRM_ПредложенияОбороты.ДокументПредложения.Ответственный.* КАК Ответственный, | CRM_ПредложенияОбороты.ДокументПредложения.* КАК Документ, | (ЕСТЬNULL(ИсточникиИнформацииПриОбращении.ИсточникИнформации,ЗНАЧЕНИЕ(Справочник.ИсточникиИнформацииПриОбращенииПокупателей.ПустаяСсылка))).* КАК ИсточникИнформации | //УСЛОВИЯ_СВОЙСТВА | //УСЛОВИЯ_КАТЕГОРИИ |} |{УПОРЯДОЧИТЬ ПО | Контрагент.*, | Номенклатура.*, | ХарактеристикаНоменклатуры.*, | Ответственный.*, | Документ.*, | (ЕСТЬNULL(ИсточникиИнформацииПриОбращении.ИсточникИнформации,ЗНАЧЕНИЕ(Справочник.ИсточникиИнформацииПриОбращенииПокупателей.ПустаяСсылка))).* КАК ИсточникИнформации | //ПСЕВДОНИМЫ_СВОЙСТВА | //ПСЕВДОНИМЫ_КАТЕГОРИИ |} | |ИТОГИ | СУММА(КоличествоОборот), | СУММА(СтоимостьОборот), | СУММА(СтоимостьБезСкидокОборот - СтоимостьОборот) КАК СкидкаОборот, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ(Документ)) КАК Количество |ПО | ОБЩИЕ |{ИТОГИ ПО | Контрагент.*, | Номенклатура.*, | ХарактеристикаНоменклатуры.*, | Ответственный.*, | Документ.*, | (ЕСТЬNULL(ИсточникиИнформацииПриОбращении.ИсточникИнформации,ЗНАЧЕНИЕ(Справочник.ИсточникиИнформацииПриОбращенииПокупателей.ПустаяСсылка))).* КАК ИсточникИнформации, | НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, ДЕНЬ) КАК ПериодДень, | НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, НЕДЕЛЯ) КАК ПериодНеделя, | НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, МЕСЯЦ) КАК ПериодМесяц, | НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, КВАРТАЛ) КАК ПериодКвартал, | НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, ГОД) КАК ПериодГод | //ПСЕВДОНИМЫ_СВОЙСТВА | //ПСЕВДОНИМЫ_КАТЕГОРИИ |}"; // В универсальном отчете включен флаг использования свойств и категорий. Если УниверсальныйОтчет.ИспользоватьСвойстваИКатегории Тогда // Добавление свойств и категорий поля запроса в таблицу полей. // Необходимо вызывать для каждого поля запроса, предоставляющего возможность использования свойств и категорий. // УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля(<ПсевдонимТаблицы>.<Поле> , <ПсевдонимПоля>, <Представление>, <Назначение>); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("CRM_ПредложенияОбороты.Номенклатура" , "Номенклатура", "Номенклатура", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("CRM_ПредложенияОбороты.ХарактеристикаНоменклатуры" , "ХарактеристикаНоменклатуры", "Характеристика номенклатуры", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("CRM_ПредложенияОбороты.Контрагент" , "Контрагент", "Контрагент", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("CRM_ПредложенияОбороты.ДокументПредложения" , "Документ", "Коммерческое предложение", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документ_CRM_КоммерческоеПредложение); // Добавление свойств и категорий в исходный текст запроса. УниверсальныйОтчет.ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса); КонецЕсли; // Инициализация текста запроса построителя отчета УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса; // Представления полей отчета. // Необходимо вызывать для каждого поля запроса. // УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить(<ИмяПоля>, <ПредставлениеПоля>); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ХарактеристикаНоменклатуры", "Характеристика номенклатуры"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Документ", "Коммерческое предложение"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ИсточникИнформации", "Источник информации при обращении покупателя"); // Добавление показателей // Необходимо вызывать для каждого добавляемого показателя. // УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>); //УниверсальныйОтчет.ДобавитьПоказатель("Задача", "Задача", Истина,); УниверсальныйОтчет.ДобавитьПоказатель("Количество", "Количество документов", Истина, "ЧЦ = 15 ; ЧДЦ = 3"); УниверсальныйОтчет.ДобавитьПоказатель("КоличествоОборот", "Количество номенклатуры", Истина, "ЧЦ = 15 ; ЧДЦ = 3",,); УниверсальныйОтчет.ДобавитьПоказатель("СтоимостьОборот", "Сумма", Истина, "ЧЦ = 15 ; ЧДЦ = 2"); УниверсальныйОтчет.ДобавитьПоказатель("СкидкаОборот", "Скидка", Истина, "ЧЦ = 15 ; ЧДЦ = 2",,); // Добавление предопределенных группировок строк отчета. // Необходимо вызывать для каждой добавляемой группировки строки. // УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>); УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Контрагент"); УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура"); // Добавление предопределенных группировок колонок отчета. // Необходимо вызывать для каждой добавляемой группировки колонки. // УниверсальныйОтчет.ДобавитьИзмерениеКолонки(<ПутьКДанным>); // Добавление предопределенных отборов отчета. // Необходимо вызывать для каждого добавляемого отбора. // УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>); УниверсальныйОтчет.ДобавитьОтбор("Контрагент"); УниверсальныйОтчет.ДобавитьОтбор("Номенклатура"); УниверсальныйОтчет.ДобавитьОтбор("Ответственный"); УниверсальныйОтчет.ДобавитьОтбор("Документ"); // Добавление предопределенных полей порядка отчета. // Необходимо вызывать для каждого добавляемого поля порядка. // УниверсальныйОтчет.ДобавитьПорядок(<ПутьКДанным>); // Установка связи подчиненных и родительских полей // УниверсальныйОтчет.УстановитьСвязьПолей(<ПутьКДанным>, <ПутьКДаннымРодитель>); //УниверсальныйОтчет.УстановитьСвязьПолей("ТочкаМаршрута","Задача"); // Установка связи полей и измерений // УниверсальныйОтчет.УстановитьСвязьПоляИИзмерения(<ИмяПоля>, <ИмяИзмерения>); // Установка представлений полей УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета); // Установка типов значений свойств в отборах отчета УниверсальныйОтчет.УстановитьТипыЗначенийСвойствДляОтбора(); // Заполнение начальных настроек универсального отчета УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь); // Добавление предопределенных отборов отчета. // Необходимо вызывать для каждого добавляемого отбора. // УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>); УниверсальныйОтчет.ДобавитьОтбор("Контрагент"); УниверсальныйОтчет.ДобавитьОтбор("Номенклатура"); УниверсальныйОтчет.ДобавитьОтбор("Ответственный"); УниверсальныйОтчет.ДобавитьОтбор("Документ"); // Добавление дополнительных полей // Необходимо вызывать для каждого добавляемого дополнительного поля. // УниверсальныйОтчет.ДобавитьДополнительноеПоле(<ПутьКДанным>, <Размещение>, <Положение>); УниверсальныйОтчет.мСтруктураФорматаПолей.Вставить("ДатаВыполнения", "ДЛФ=DDT"); УниверсальныйОтчет.мСтруктураФорматаПолей.Вставить("ДатаФактическогоВыполнения", "ДЛФ=DDT"); УниверсальныйОтчет.мМинимальнаяШиринаКолонкиПоказатель = 10; УниверсальныйОтчет.мМаксимальнаяШиринаКолонки = 80; КонецПроцедуры // УстановитьНачальныеНастройки()
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("Номенклатура", "Номенклатура"); ЭлементОформления.Область.Добавить("Номенклатура", "Номенклатура", ТипОбластиОформления.Поле); ЭлементОформления.Оформление.ГоризонтальноеПоложение.Значение = ГоризонтальноеПоложение.Лево; ЭлементОформления.Оформление.ГоризонтальноеПоложение.Использование = Истина; ЭлементОформления.Использование = Истина; ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ХарактеристикаНоменклатуры", "ХарактеристикаНоменклатуры"); ЭлементОформления.Область.Добавить("ХарактеристикаНоменклатуры", "ХарактеристикаНоменклатуры", ТипОбластиОформления.Поле); ЭлементОформления.Оформление.ГоризонтальноеПоложение.Значение = ГоризонтальноеПоложение.Лево; ЭлементОформления.Оформление.ГоризонтальноеПоложение.Использование = Истина; ЭлементОформления.Использование = Истина; УниверсальныйОтчет.мМинимальнаяШиринаКолонкиПоказатель = 7; УниверсальныйОтчет.мМаксимальнаяШиринаКолонки = 50;
// Условное оформление поля "Состояние" ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ТребуетсяЗаказать", "Требуется заказать"); ЭлементОформления.Область.Добавить("Состояние", "Состояние", ТипОбластиОформления.Поле); ЭлементОтбора = ЭлементОформления.Отбор.Добавить("Состояние"); ЭлементОтбора.ВидСравнения = ВидСравнения.Равно; ЭлементОтбора.Значение = 0; ЭлементОтбора.Использование = Истина; ЭлементОформления.Оформление.ЦветТекста.Значение = WebЦвета.Красный; ЭлементОформления.Оформление.ЦветТекста.Использование = Истина; ЭлементОформления.Оформление.Текст.Значение = "Требуется заказать"; ЭлементОформления.Оформление.Текст.Использование = Истина; ЭлементОформления.Использование = Истина; ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("РекомендуетсяЗаказать", "Рекомендуется заказать"); ЭлементОформления.Область.Добавить("Состояние", "Состояние", ТипОбластиОформления.Поле); ЭлементОтбора = ЭлементОформления.Отбор.Добавить("Состояние"); ЭлементОтбора.ВидСравнения = ВидСравнения.Равно; ЭлементОтбора.Значение = 1; ЭлементОтбора.Использование = Истина; ЭлементОформления.Оформление.ЦветТекста.Значение = WebЦвета.Коричневый; ЭлементОформления.Оформление.ЦветТекста.Использование = Истина; ЭлементОформления.Оформление.Текст.Значение = "Рекомендуется заказать"; ЭлементОформления.Оформление.Текст.Использование = Истина; ЭлементОформления.Использование = Истина; ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("НеТребуетсяЗаказывать", "Не требуется заказывать"); ЭлементОформления.Область.Добавить("Состояние", "Состояние", ТипОбластиОформления.Поле); ЭлементОтбора = ЭлементОформления.Отбор.Добавить("Состояние"); ЭлементОтбора.ВидСравнения = ВидСравнения.Равно; ЭлементОтбора.Значение = 2; ЭлементОтбора.Использование = Истина; ЭлементОформления.Оформление.ЦветТекста.Значение = WebЦвета.Зеленый; ЭлементОформления.Оформление.ЦветТекста.Использование = Истина; ЭлементОформления.Оформление.Текст.Значение = "Не требуется заказывать"; ЭлементОформления.Оформление.Текст.Использование = Истина; ЭлементОформления.Использование = Истина; ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ЗонаПоСумме", "Зона По Сумме"); ЭлементОформления.Область.Добавить("ЗонаПоСумме", "ЗонаПоСумме", ТипОбластиОформления.Поле); ЭлементОтбора = ЭлементОформления.Отбор.Добавить("ЗонаПоСумме"); ЭлементОтбора.ВидСравнения = ВидСравнения.Равно; ЭлементОтбора.Значение = "крас"; ЭлементОтбора.Использование = Истина; ЭлементОформления.Оформление.ЦветФона.Значение = WebЦвета.Красный; ЭлементОформления.Оформление.ЦветФона.Использование = Истина; ЭлементОформления.Оформление.Текст.Значение = ""; ЭлементОформления.Оформление.Текст.Использование = Истина; ЭлементОформления.Использование = Истина; ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ЗонаПоСумме", "Зона По Сумме"); ЭлементОформления.Область.Добавить("ЗонаПоСумме", "ЗонаПоСумме", ТипОбластиОформления.Поле); ЭлементОтбора = ЭлементОформления.Отбор.Добавить("ЗонаПоСумме"); ЭлементОтбора.ВидСравнения = ВидСравнения.Равно; ЭлементОтбора.Значение = "зелн"; ЭлементОтбора.Использование = Истина; ЭлементОформления.Оформление.ЦветТекста.Значение = WebЦвета.Зеленый; ЭлементОформления.Оформление.ЦветТекста.Использование = Истина; ЭлементОформления.Оформление.Шрифт.Значение = Новый Шрифт(,,Истина); ЭлементОформления.Оформление.Шрифт.Использование = Истина; ЭлементОформления.Оформление.Текст.Значение = "|||||||||||||||||"; ЭлементОформления.Оформление.Текст.Использование = Истина; ЭлементОформления.Использование = Истина;
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ДатаЗаписи", "Дата записи"); ЭлементОформления.Область.Добавить("ДатаЗаписи", "Дата записи", ТипОбластиОформления.Поле); ЭлементОформления.Оформление.Формат.Значение = "ДФ=dd.MM.yyyy"; ЭлементОформления.Оформление.Формат.Использование = Истина; ЭлементОформления.Использование = Истина;
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("Печать", "Печать"); ЭлементОформления.Область.Добавить("Печать", "Печать", ТипОбластиОформления.Поле); ЭлементОформления.Оформление.ГоризонтальноеПоложение.Значение = ГоризонтальноеПоложение.Центр; ЭлементОформления.Оформление.Формат.Значение = «БЛ=Нет; БИ=Напечатан»; ЭлементОформления.Оформление.ГоризонтальноеПоложение.Использование = Истина; ЭлементОформления.Использование = Истина;