8.х Универсальный отчет

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Dmitrij, 8 фев 2010.

  1. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Дорабатываю отчет

    Код:
    Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
    
    // Настройка общих параметров универсального отчета
    
    // Содержит название отчета, которое будет выводиться в шапке.
    // Тип: Строка.
    // Пример:
    // УниверсальныйОтчет.мНазваниеОтчета = "Название отчета";
    УниверсальныйОтчет.мНазваниеОтчета = СокрЛП("Отчет передача (возврат) в производство");
    
    // Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки.
    // Тип: Булево.
    // Значение по умолчанию: Истина.
    // Пример:
    // УниверсальныйОтчет.мВыбиратьИмяРегистра = Истина;
    УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
    
    // Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета.
    // Тип: Строка.
    // Пример:
    // УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах";
    УниверсальныйОтчет.ИмяРегистра = "";
    
    // Содержит признак необходимости вывода отрицательных значений показателей красным цветом.
    // Тип: Булево.
    // Значение по умолчанию: Ложь.
    // Пример:
    // УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
    УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
    
    
    // Содержит признак необходимости вывода в отчет общих итогов.
    // Тип: Булево.
    // Значение по умолчанию: Ложь.
    // Пример:
    // УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь;
    
    // Содержит признак необходимости вывода детальных записей в отчет.
    // Тип: Булево.
    // Значение по умолчанию: Ложь.
    // Пример:
    // УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;
    
    // Содержит признак необходимости отображения флага использования свойств и категорий в форме настройки.
    // Тип: Булево.
    // Значение по умолчанию: Истина.
    // Пример:
    // УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь;
    УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь;
    
    // Содержит признак использования свойств и категорий при заполнении настроек отчета.
    // Тип: Булево.
    // Значение по умолчанию: Истина.
    // Пример:
    // УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина;
    //УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина;
    
    // Содержит признак использования простой формы настроек отчета без группировок колонок.
    // Тип: Булево.
    // Значение по умолчанию: Ложь.
    // Пример:
    // УниверсальныйОтчет.мРежимФормыНастройкиБезГруппировокКолонок = Истина;
    
    // Дополнительные параметры, переданные из отчета, вызвавшего расшифровку.
    // Информация, передаваемая в переменной ДополнительныеПараметры, может быть использована
    // для реализации специфичных для данного отчета параметрических настроек.
    
    // Описание исходного текста запроса.
    // При написании текста запроса рекомендуется следовать правилам, описанным в следующем шаблоне текста запроса:
    //
    //ВЫБРАТЬ
    //	<ПсевдонимТаблицы.Поле> КАК <ПсевдонимПоля>,
    //	ПРЕДСТАВЛЕНИЕ(<ПсевдонимТаблицы>.<Поле>),
    //	<ПсевдонимТаблицы.Показатель> КАК <ПсевдонимПоказателя>
    //	//ПОЛЯ_СВОЙСТВА
    //	//ПОЛЯ_КАТЕГОРИИ
    //{ВЫБРАТЬ
    //	<ПсевдонимПоля>.*,
    //	<ПсевдонимПоказателя>,
    //	Регистратор,
    //	Период,
    //	ПериодДень,
    //	ПериодНеделя,
    //	ПериодДекада,
    //	ПериодМесяц,
    //	ПериодКвартал,
    //	ПериодПолугодие,
    //	ПериодГод
    //	//ПОЛЯ_СВОЙСТВА
    //	//ПОЛЯ_КАТЕГОРИИ
    //}
    //ИЗ
    //	<Таблица> КАК <ПсевдонимТаблицы>
    //	//СОЕДИНЕНИЯ
    //{ГДЕ
    //	<ПсевдонимТаблицы.Поле>.* КАК <ПсевдонимПоля>,
    //	<ПсевдонимТаблицы.Показатель> КАК <ПсевдонимПоказателя>,
    //	<ПсевдонимТаблицы>.Регистратор КАК Регистратор,
    //	<ПсевдонимТаблицы>.Период КАК Период,
    //	НАЧАЛОПЕРИОДА(<ПсевдонимТаблицы>.Период, ДЕНЬ) КАК ПериодДень,
    //	НАЧАЛОПЕРИОДА(<ПсевдонимТаблицы>.Период, НЕДЕЛЯ) КАК ПериодНеделя,
    //	НАЧАЛОПЕРИОДА(<ПсевдонимТаблицы>.Период, ДЕКАДА) КАК ПериодДекада,
    //	НАЧАЛОПЕРИОДА(<ПсевдонимТаблицы>.Период, МЕСЯЦ) КАК ПериодМесяц,
    //	НАЧАЛОПЕРИОДА(<ПсевдонимТаблицы>.Период, КВАРТАЛ) КАК ПериодКвартал,
    //	НАЧАЛОПЕРИОДА(<ПсевдонимТаблицы>.Период, ПОЛУГОДИЕ) КАК ПериодПолугодие,
    //	НАЧАЛОПЕРИОДА(<ПсевдонимТаблицы>.Период, ГОД) КАК ПериодГод
    //	//ПОЛЯ_СВОЙСТВА
    //	//ПОЛЯ_КАТЕГОРИИ
    //}
    //{УПОРЯДОЧИТЬ ПО
    //	<ПсевдонимПоля>.*,
    //	<ПсевдонимПоказателя>,
    //	Регистратор,
    //	Период,
    //	ПериодДень,
    //	ПериодНеделя,
    //	ПериодДекада,
    //	ПериодМесяц,
    //	ПериодКвартал,
    //	ПериодПолугодие,
    //	ПериодГод
    //	//УПОРЯДОЧИТЬ_СВОЙСТВА
    //	//УПОРЯДОЧИТЬ_КАТЕГОРИИ
    //}
    //ИТОГИ
    //	АГРЕГАТНАЯ_ФУНКЦИЯ(<ПсевдонимПоказателя>)
    //	//ИТОГИ_СВОЙСТВА
    //	//ИТОГИ_КАТЕГОРИИ
    //ПО
    //	ОБЩИЕ
    //{ИТОГИ ПО
    //	<ПсевдонимПоля>.*,
    //	Регистратор,
    //	Период,
    //	ПериодДень,
    //	ПериодНеделя,
    //	ПериодДекада,
    //	ПериодМесяц,
    //	ПериодКвартал,
    //	ПериодПолугодие,
    //	ПериодГод
    //	//ПОЛЯ_СВОЙСТВА
    //	//ПОЛЯ_КАТЕГОРИИ
    //}
    //АВТОУПОРЯДОЧИВАНИЕ
    ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |	ПДБ_МатериалыВПроизводстве.Исполнитель,
    |	ПДБ_МатериалыВПроизводстве.МОЛ,
    |	ПДБ_МатериалыВПроизводстве.Номенклатура,
    |	ПДБ_МатериалыВПроизводстве.ВыпущеннаяПродукция КАК ВыпущеннаяПродукция,
    |	ПДБ_МатериалыВПроизводстве.Брак КАК Брак,
    |	ПДБ_МатериалыВПроизводстве.ОбщееКоличество КАК ОбщееКоличество,
    |	ПДБ_МатериалыВПроизводстве.Регистратор КАК Регистратор,
    |	ПДБ_МатериалыВПроизводстве.операция,
    |	ПДБ_МатериалыВПроизводстве.ОбщееКоличество - ПДБ_МатериалыВПроизводстве.ВыпущеннаяПродукция - ПДБ_МатериалыВПроизводстве.Брак КАК КонечныйОстаток,
    |	ПДБ_МатериалыВПроизводстве.Период
    |{ВЫБРАТЬ
    |	Исполнитель.*,
    |	МОЛ.*,
    |	Номенклатура.*,
    |	ВыпущеннаяПродукция,
    |	Брак,
    |	ОбщееКоличество,
    |	КонечныйОстаток,
    |	ПДБ_МатериалыВПроизводстве.Регистратор.*,
    |	ПДБ_МатериалыВПроизводстве.операция,
    |	Период}
    |ИЗ
    |	РегистрНакопления.ПДБ_МатериалыВПроизводстве КАК ПДБ_МатериалыВПроизводстве
    |{ГДЕ
    |	ПДБ_МатериалыВПроизводстве.Исполнитель.*,
    |	ПДБ_МатериалыВПроизводстве.МОЛ.*,
    |	ПДБ_МатериалыВПроизводстве.Номенклатура.*}
    |
    |СГРУППИРОВАТЬ ПО
    |	ПДБ_МатериалыВПроизводстве.Исполнитель,
    |	ПДБ_МатериалыВПроизводстве.МОЛ,
    |	ПДБ_МатериалыВПроизводстве.Номенклатура,
    |	ПДБ_МатериалыВПроизводстве.ВыпущеннаяПродукция,
    |	ПДБ_МатериалыВПроизводстве.Брак,
    |	ПДБ_МатериалыВПроизводстве.ОбщееКоличество,
    |	ПДБ_МатериалыВПроизводстве.Регистратор,
    |	ПДБ_МатериалыВПроизводстве.операция,
    |	ПДБ_МатериалыВПроизводстве.ОбщееКоличество - ПДБ_МатериалыВПроизводстве.ВыпущеннаяПродукция - ПДБ_МатериалыВПроизводстве.Брак,
    |	ПДБ_МатериалыВПроизводстве.Период
    |
    |УПОРЯДОЧИТЬ ПО
    |	Регистратор
    |{УПОРЯДОЧИТЬ ПО
    |	Исполнитель.*,
    |	МОЛ.*}
    |ИТОГИ
    |	СУММА(ВыпущеннаяПродукция),
    |	СУММА(Брак),
    |	СУММА(ОбщееКоличество),
    |	СУММА(КонечныйОстаток)
    |ПО
    |	ОБЩИЕ
    |{ИТОГИ ПО
    |	Исполнитель.*,
    |	Номенклатура.*,
    |	МОЛ.*,
    |	Регистратор.*}
    |АВТОУПОРЯДОЧИВАНИЕ";
    
    
    
    //// В универсальном отчете включен флаг использования свойств и категорий.
    //Если УниверсальныйОтчет.ИспользоватьСвойстваИКатегории Тогда
    //	
    //	// Добавление свойств и категорий поля запроса в таблицу полей.
    //	// Необходимо вызывать для каждого поля запроса, предоставляющего возможность использования свойств и категорий.
    //	
    //	// УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля(<ПсевдонимТаблицы>.<Поле> , <ПсевдонимПоля>, <Представление>, <Назначение>);
    //	УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля( "РегЗаказы.Номенклатура" ,               "Номенклатура",               "Номенклатура",                ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура);
    //	//УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля( "РегЗаказы.ХарактеристикаНоменклатуры" , "ХарактеристикаНоменклатуры", "Характеристика номенклатуры", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры);
    //	
    //	// Добавление свойств и категорий в исходный текст запроса.
    //	УниверсальныйОтчет.ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса);
    //	
    //КонецЕсли;
    
    // Инициализация текста запроса построителя отчета
    
    
    УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;       
    
    // Представления полей отчета.
    // Необходимо вызывать для каждого поля запроса.
    // УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить(<ИмяПоля>, <ПредставлениеПоля>);
    //УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "Испонитель",          "Испонитель");
    //УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "МОЛ",            "МОЛ");
    //УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "ХарактеристикаНоменклатуры", "Характеристика номенклатуры");
    //УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "ЕдиницаИзмерения",           "Единица измерения");
    //УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "СерияНоменклатуры",          "Серия номенклатуры");
    
    // Добавление показателей
    // Необходимо вызывать для каждого добавляемого показателя.
    // УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>);
    УниверсальныйОтчет.ДобавитьПоказатель("ОбщееКоличество", "Выдали", Истина, "ЧЦ=15; ЧДЦ=3");
    УниверсальныйОтчет.ДобавитьПоказатель("ВыпущеннаяПродукция", "Вернули", Истина, "ЧЦ=15; ЧДЦ=3");
    УниверсальныйОтчет.ДобавитьПоказатель("Брак", "Брак", Истина, "ЧЦ=15; ЧДЦ=3");
    УниверсальныйОтчет.ДобавитьПоказатель("КонечныйОстаток", "Конечный остаток", Истина, "ЧЦ=15; ЧДЦ=3");
    
    // Добавление предопределенных группировок строк отчета.
    // Необходимо вызывать для каждой добавляемой группировки строки.
    // УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>);
    //УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Склад");
    УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Исполнитель");
    УниверсальныйОтчет.ДобавитьИзмерениеСтроки("МОЛ");
    УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");
    //УниверсальныйОтчет.ДобавитьИзмерениеСтроки("ДокументРезерва");
    
    // Добавление предопределенных группировок колонок отчета.
    // Необходимо вызывать для каждой добавляемой группировки колонки.
    // УниверсальныйОтчет.ДобавитьИзмерениеКолонки(<ПутьКДанным>);
    
    // Добавление предопределенных отборов отчета.
    // Необходимо вызывать для каждого добавляемого отбора.
    // УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>);
    //УниверсальныйОтчет.ДобавитьОтбор("Склад");
    УниверсальныйОтчет.ДобавитьОтбор("Номенклатура");
    УниверсальныйОтчет.ДобавитьОтбор("Исполнитель");
    УниверсальныйОтчет.ДобавитьОтбор("МОЛ");
    
    
    //УниверсальныйОтчет.ДобавитьОтбор("ДокументРезерва");
    
    // Установка связи подчиненных и родительских полей
    // УниверсальныйОтчет.УстановитьСвязьПолей(<ПутьКДанным>, <ПутьКДанным>);
    
    // Установка представлений полей
    // УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);
    УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);
    
    // Установка типов значений свойств в отборах отчета
    УниверсальныйОтчет.УстановитьТипыЗначенийСвойствДляОтбора();
    
    // Заполнение начальных настроек универсального отчета
    УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);
    
    // Добавление дополнительных полей
    // Необходимо вызывать для каждого добавляемого дополнительного поля.
    // УниверсальныйОтчет.ДобавитьДополнительноеПоле(<ПутьКДанным>);
    
    КонецПроцедуры // УстановитьНачальныеНастройки()
    
    
    
    Все работает хорошо, только одна проблема границы по дате не работают те допустим стоят границы с 010110 по тек дату, а выводятся данные полностью все
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Конечно не будет, не указано условие для периода.
    После выборки надо указать явное условие
    Код:
    |ГДЕ
    |	ПДБ_МатериалыВПроизводстве.Период МЕЖДУ &ДатаНачала И &ДатаКонца
    
    
  3. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    я пробовал тогда отчет вообще не вормируется
  4. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Для начала попробуйте убрать выборку построителя и протестировать запрос с указанием условия периода.
    Если данные не собираются по периоду, проверьте регистратор в регистре накопления, установлены ли периоды?
  5. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Все разобрался в универсальном отчете два параметра по периодам датанач датакон и датаначала датаконца первые безограничений вторые ограничевают так что в запросе надо указывать Между датаначала и ДатаКонца
  6. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    На самом деле используются все параметры в универсальном отчете, но у них свои особенности, подробнее о параметрах описано в статье на сайте infostart, который на данный момент не доступен, так что пока дать ссылку не могу.
    А вообще, если Вы дорабатываете "Универсальный отчет", то помните что это крайне не рекомендуется. Так же на сайте infostart можете поискать статью "Как быстро разработать отчет", в данной статье Вы найдёте все правила написания отчетов на основании объекта "УниверсальныйОтчет".
    Удачи!
  7. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Я с помощью этих статей и разрабатывал данный отчет

Поделиться этой страницей