Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт // Настройка общих параметров универсального отчета //начальный вариант оформления цветовой схемы УниверсальныйОтчет.ВариантОформления = СтандартноеОформление.Песок; // Содержит название отчета, которое будет выводиться в шапке. // Тип: Строка. // Пример: // УниверсальныйОтчет.мНазваниеОтчета = "Название отчета"; УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним); // Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; // Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета. // Тип: Строка. // Пример: // УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах"; УниверсальныйОтчет.ИмяРегистра = "-"; // Содержит признак необходимости вывода отрицательных значений показателей красным цветом. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ОтрицательноеКрасным = Истина; УниверсальныйОтчет.ОтрицательноеКрасным = Истина; // Содержит признак необходимости вывода в отчет общих итогов. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь; УниверсальныйОтчет.ВыводитьОбщиеИтоги = Истина; // Содержит признак необходимости вывода детальных записей в отчет. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина; УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Ложь; // Содержит признак необходимости отображения флага использования свойств и категорий в форме настройки. // Тип: Булево. // Значение по умолчанию: Истина. // Пример: // УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь; УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Истина; // Содержит признак использования свойств и категорий при заполнении настроек отчета. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина; //УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = ЛОЖЬ; // Содержит признак использования простой формы настроек отчета без группировок колонок. // Тип: Булево. // Значение по умолчанию: Ложь. // Пример: // УниверсальныйОтчет.мРежимФормыНастройкиБезГруппировокКолонок = Истина; // Дополнительные параметры, переданные из отчета, вызвавшего расшифровку. // Информация, передаваемая в переменной ДополнительныеПараметры, может быть использована // для реализации специфичных для данного отчета параметрических настроек. // Описание исходного текста запроса. ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | 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"; ЭлементОформления.Оформление.Формат.Использование = Истина; ЭлементОформления.Использование = Истина;
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("Печать", "Печать"); ЭлементОформления.Область.Добавить("Печать", "Печать", ТипОбластиОформления.Поле); ЭлементОформления.Оформление.ГоризонтальноеПоложение.Значение = ГоризонтальноеПоложение.Центр; ЭлементОформления.Оформление.Формат.Значение = «БЛ=Нет; БИ=Напечатан»; ЭлементОформления.Оформление.ГоризонтальноеПоложение.Использование = Истина; ЭлементОформления.Использование = Истина;
// OldthiefXXX //Процедура формирует и выводит отчет по переданноме запросу // Параметры : //* ПараметрыОтчета - структура // Пример параметров: //* ПараметрыОтчета = Новый Структура; //* ПараметрыОтчета .Вставить("Запрос",текст); //* ПараметрыЗапроса=Новый Структура; //* ПараметрыЗапроса.Вставить("Номенклатура",ТоварИзАртикула.Ссылка); //* ПараметрыЗапроса.Вставить("НачалоМесяца",НачалоМесяца(ДатаВедомости)); //* ПараметрыЗапроса.Вставить("КонецМесяца",КонецМесяца(ДатаВедомости)); //* ПараметрыОтчета .Вставить("ПараметрыЗапроса",ПараметрыЗапроса); Процедура УниверсальныйОтчетПоЗапросу(ПараметрыОтчета) Запрос=новый Запрос; Запрос.Текст=ПараметрыОтчета.Запрос; Для каждого ПАРАМЕТР из ПараметрыОтчета.ПараметрыЗапроса Цикл Запрос.УстановитьПараметр(ПАРАМЕТР.Ключ,ПАРАМЕТР.Значение); КонецЦикла; Тз=Запрос.Выполнить().Выгрузить(); Табл=Новый ТабличныйДокумент; Макет = ЭтотОбъект.ПолучитьМакет("Макет"); ОбластьШапкаОсновной=Макет.ПолучитьОбласть("Шапка|Основной"); ОбластьСтрокаОсновной=Макет.ПолучитьОбласть("Строка|Основной"); ОбластьИтогОсновной=Макет.ПолучитьОбласть("Итог|Основной"); ОбластьШапкаДОП=Макет.ПолучитьОбласть("Шапка|Показатели"); ОбластьСтрокаДОП=Макет.ПолучитьОбласть("Строка|Показатели"); ОбластьИтогДОП=Макет.ПолучитьОбласть("Итог|Показатели"); Табл.Вывести(ОбластьШапкаОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьШапкаДОП.Параметры.ИмяПоказателя=Колонка.Имя; Табл.Присоединить(ОбластьШапкаДОП); КонецЦикла; счетчик=0; Для каждого стр из Тз Цикл счетчик=счетчик+1; ОбластьСтрокаОсновной.Параметры.счетчик=счетчик; Табл.Вывести(ОбластьСтрокаОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьСтрокаДОП.Параметры.ЗначениеКолонки=стр[Колонка.Имя]; Табл.Присоединить(ОбластьСтрокаДОП); КонецЦикла; КонецЦикла; Табл.Вывести(ОбластьИтогОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьИтогДОП.Параметры.Итог=Тз.Итог(Колонка.Имя); Табл.Присоединить(ОбластьИтогДОП); КонецЦикла; Табл.ТолькоПросмотр=истина; Табл.Показать(); КонецПроцедуры
//ТПОтчета - Табличное поле с формы (Таблица значений) с данными ПострПечать = Новый ПостроительОтчета; ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТПОтчета); ПострПечать.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Интерфейс); ПострПечать.Выполнить(); Для каждого Колонка Из ПострПечать.ВыбранныеПоля Цикл Колонка.Представление = ТПОтчета.Колонки[Колонка.Имя].Заголовок; КонецЦикла; ПострПечать.Вывести();
//Процедура формирует и выводит отчет по переданной таблице значений // Параметры : // ТЗ - ТаблицаЗначений Процедура УниверсальныйОтчетПоТЗ(ТЗ) Табл=Новый ТабличныйДокумент; Макет = ЭтотОбъект.ПолучитьМакет("Макет"); ОбластьШапкаОсновной=Макет.ПолучитьОбласть("Шапка|Основной"); ОбластьСтрокаОсновной=Макет.ПолучитьОбласть("Строка|Основной"); ОбластьИтогОсновной=Макет.ПолучитьОбласть("Итог|Основной"); ОбластьШапкаДОП=Макет.ПолучитьОбласть("Шапка|Показатели"); ОбластьСтрокаДОП=Макет.ПолучитьОбласть("Строка|Показатели"); ОбластьИтогДОП=Макет.ПолучитьОбласть("Итог|Показатели"); Табл.Вывести(ОбластьШапкаОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьШапкаДОП.Параметры.ИмяПоказателя=Колонка.Имя; Табл.Присоединить(ОбластьШапкаДОП); КонецЦикла; счетчик=0; Для каждого стр из Тз Цикл счетчик=счетчик+1; ОбластьСтрокаОсновной.Параметры.счетчик=счетчик; Табл.Вывести(ОбластьСтрокаОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьСтрокаДОП.Параметры.ЗначениеКолонки=стр[Колонка.Имя]; Табл.Присоединить(ОбластьСтрокаДОП); КонецЦикла; КонецЦикла; Табл.Вывести(ОбластьИтогОсновной); Для Каждого Колонка из Тз.Колонки ЦИКЛ ОбластьИтогДОП.Параметры.Итог=Тз.Итог(Колонка.Имя); Табл.Присоединить(ОбластьИтогДОП); КонецЦикла; Табл.Показать(); КонецПроцедуры
//Вывести таблицу значений Процедура ПечатьТЗвТаб(ТЗ, Заголовок = "",КолонкиПоНазваниям = 0) Экспорт Перем ТТЗ; ТЗ.Выгрузить(ТТЗ); МаксШирина = 50; // максимальная ширина колонки СпШирина = СоздатьОбъект("СписокЗначений"); // список ширин колонок по таблице Для сч = 1 по ТТЗ.КоличествоКолонок() Цикл Если КолонкиПоНазваниям = 0 Тогда ИмяРек = ТТЗ.ПолучитьПараметрыКолонки(сч); Иначе ИмяРек = ""; ТТЗ.ПолучитьПараметрыКолонки(сч,,,,ИмяРек,); КонецЕсли; СпШирина.ДобавитьЗначение(СтрДлина(ИмяРек)*1.2); // с поправкой на размер шрифта КонецЦикла; // просто печать таблицы - вывод всех строк и колонок // числовые значения - по правому краю. Автоподбор ширины - в пределах МаксШирина Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ПечатьТЗ"); Если СокрЛП(Заголовок) <> "" Тогда Таб.ВывестиСекцию("Шапка"); КонецЕсли; // заголовки таблицы Таб.ВывестиСекцию("Строка|Общая"); Для сч=1 по ТТЗ.КоличествоКолонок() Цикл Если КолонкиПоНазваниям = 0 Тогда ИмяРек = ТТЗ.ПолучитьПараметрыКолонки(сч); Иначе ИмяРек = ""; Ном = ""; ТТЗ.ПолучитьПараметрыКолонки(сч,,,,ИмяРек,); КонецЕсли; Таб.ПрисоединитьСекцию("Строка|Столбец"); КонецЦикла; ВысотаШапки = Таб.ВысотаТаблицы(); // данные таблицы по строкам ТТЗ.ВыбратьСтроки(); Пока ТТЗ.ПолучитьСтроку()=1 Цикл Ном = ТТЗ.НомерСтроки; Таб.ВывестиСекцию("Строка|Общая"); Выс = Таб.ВысотаТаблицы(); Для сч=1 по ТТЗ.КоличествоКолонок() Цикл ИмяРек=ТТЗ.ПолучитьЗначение(Ном,сч); Таб.ПрисоединитьСекцию("Строка|Столбец"); Если ТипЗначения(ИмяРек) = 1 Тогда Обл = Таб.Область("R"+Выс+"C"+(Сч+1)); // ячейка в которую поместили данные Обл.ГоризонтальноеПоложение(2); // числа - вправо КонецЕсли; НачШирина = СпШирина.ПолучитьЗначение(Сч); Ширина = СтрДлина(ИмяРек); СпШирина.УстановитьЗначение(Сч,Макс(НачШирина,Ширина)); КонецЦикла; КонецЦикла; Для сч = 1 по СпШирина.РазмерСписка() Цикл Обл = Таб.Область("R"+ВысотаШапки+"C"+(Сч+1)); // форматируем ширину таблицы Ширина = Мин(МаксШирина,2+СпШирина.ПолучитьЗначение(Сч)); Обл.ШиринаСтолбца(Ширина); // форматируем заголовок Обл.Полужирный(1); КонецЦикла; Таб.Показать(Заголовок); Таб.ТолькоПросмотр(1); КонецПроцедуры
Процедура глВывестиТаблицуЗначений(ТаблицаЗначений, Заголовок = "") Экспорт Перем Таб, ИИ, ЖЖ, НазваниеКолонки, ТипКолонки, Ширина, Значение, Сообщение; Таб = СоздатьОбъект("Таблица"); Если ТипЗначенияСтр(ТаблицаЗначений) <> "ТаблицаЗначений" Тогда Сообщение = "В процедуру ""глВывестиТаблицуЗначений()"" передана переменная не типа ""ТаблицаЗначений"", "+ "а типа """+СокрЛП(ТипЗначенияСтр(ТаблицаЗначений))+""""; Таб.Область(1, 1, 1, 1).Текст = Сообщение; Таб.Область(1, 1, 1, 1).ШиринаСтолбца(СтрДлина(Сообщение)); Таб.ТолькоПросмотр(1); Таб.Показать("Не таблица значений: "+Заголовок); Возврат; КонецЕсли; Для ЖЖ = 1 по ТаблицаЗначений.КоличествоКолонок() цикл ТаблицаЗначений.ПолучитьПараметрыКолонки(ЖЖ,,,, НазваниеКолонки); Таб.Область(1, ЖЖ, 1, ЖЖ).Текст = СокрЛП(НазваниеКолонки); Таб.Область(1, ЖЖ, 1, ЖЖ).РамкаОбвести(5, 5, 5, 5); Таб.Область(1, ЖЖ, 1, ЖЖ).ВертикальноеПоложение(3); Таб.Область(1, ЖЖ, 1, ЖЖ).ГоризонтальноеПоложение(3); Таб.Область(1, ЖЖ, 1, ЖЖ).РазмерШрифта(7); Таб.Область(1, ЖЖ, 1, ЖЖ).Полужирный(1); Ширина = Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(); Ширина = Макс(Ширина, СтрДлина(СокрЛП(НазваниеКолонки))); Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(Ширина); КонецЦикла; Для ИИ = 1 по ТаблицаЗначений.КоличествоСтрок() цикл Для ЖЖ = 1 по ТаблицаЗначений.КоличествоКолонок() цикл Значение = ТаблицаЗначений.ПолучитьЗначение(ИИ, ЖЖ); Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Текст = Значение; Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Расшифровка(Значение, 0); Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).РамкаОбвести(3, 0, 3, 0); Ширина = Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(); Ширина = Макс(Ширина, СтрДлина(СокрЛП(Строка(Значение)))); Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(Ширина); ТаблицаЗначений.ПолучитьПараметрыКолонки(ЖЖ, ТипКолонки); ; Если ТипКолонки = "Число" тогда Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).ГоризонтальноеПоложение(2); КонецЕсли; Если ИИ = ТаблицаЗначений.ТекущаяСтрока() тогда Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).ЦветФона(255, 0, 0); КонецЕсли; КонецЦикла; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать("Таблица значений: "+Заголовок); КонецПроцедуры