8.х Проблема с методом ДобавитьПолеРесурс в УниверсальномОтчете

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем russlix, 19 мар 2012.

  1. TopicStarter Overlay
    russlix
    Offline

    russlix

    Регистрация:
    15 авг 2008
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Код:
    Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
    УправлениеОтчетами.ВосстановитьРеквизитыОтчета(ЭтотОбъект, ДополнительныеПараметры);
    УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
    УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
    УниверсальныйОтчет.мРежимВводаПериода = 0;
    
    УниверсальныйОтчет.ОтрицательноеКрасным = ИСТИНА;
    УниверсальныйОтчет.ВыводитьОбщиеИтоги = ИСТИНА;
    УниверсальныйОтчет.ВыводитьДетальныеЗаписи = ЛОЖЬ;
    УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = ЛОЖЬ;
    
    УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = ЛОЖЬ;
    
    УниверсальныйОтчет.мРежимФормыНастройкиБезГруппировокКолонок = ЛОЖЬ;
    ТекстЗапроса = "ВЫБРАТЬ
    | ВложенныйЗапрос.Сектор,
    | ВложенныйЗапрос.Склад,
    | ВложенныйЗапрос.НоменклатурнаяГруппа,
    | ВложенныйЗапрос.План КАК План,
    | ВложенныйЗапрос.Выручка КАК Выручка,
    | ВложенныйЗапрос.Выручка / ВложенныйЗапрос.ДнейВПериоде КАК ТекущееВДень,
    | ВЫБОР
    |  КОГДА ВложенныйЗапрос.План = 0
    |   ТОГДА 0
    |  ИНАЧЕ ВложенныйЗапрос.Выручка / ВложенныйЗапрос.ДнейВПериоде * ВложенныйЗапрос.ДнейВМесяце / ВложенныйЗапрос.План * 100
    | КОНЕЦ КАК ПрогнозВыполнения,
    | ВложенныйЗапрос.План - ВложенныйЗапрос.Выручка / ВложенныйЗапрос.ДнейВПериоде / ВложенныйЗапрос.ОстатокДней КАК НадоВДень100,
    | ВложенныйЗапрос.План * 1.1 - ВложенныйЗапрос.Выручка / ВложенныйЗапрос.ДнейВПериоде / ВложенныйЗапрос.ОстатокДней КАК НадоВДень110,
    | ВложенныйЗапрос.План * 1.2 - ВложенныйЗапрос.Выручка / ВложенныйЗапрос.ДнейВПериоде / ВложенныйЗапрос.ОстатокДней КАК НадоВДень120
    |{ВЫБРАТЬ
    | Сектор.*,
    | Склад.*,
    | НоменклатурнаяГруппа.*,
    | План,
    | Выручка,
    | ТекущееВДень,
    | ПрогнозВыполнения,
    | НадоВДень100,
    | НадоВДень110,
    | НадоВДень120}
    |ИЗ
    | (ВЫБРАТЬ
    |  ВложенныйЗапрос.Сектор КАК Сектор,
    |  ВложенныйЗапрос.Склад КАК Склад,
    |  ВложенныйЗапрос.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    |  ВложенныйЗапрос.План КАК План,
    |  ВложенныйЗапрос.Выручка КАК Выручка,
    |  РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) + 1 КАК ДнейВПериоде,
    |  РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ДатаКонца, МЕСЯЦ), КОНЕЦПЕРИОДА(&ДатаКонца, МЕСЯЦ), ДЕНЬ) + 1 КАК ДнейВМесяце,
    |  ВЫБОР
    |   КОГДА РАЗНОСТЬДАТ(&ДатаКонца, КОНЕЦПЕРИОДА(&ДатаКонца, МЕСЯЦ), ДЕНЬ) + 1 < 1
    |	ТОГДА 1
    |   ИНАЧЕ РАЗНОСТЬДАТ(&ДатаКонца, КОНЕЦПЕРИОДА(&ДатаКонца, МЕСЯЦ), ДЕНЬ) + 1
    |  КОНЕЦ КАК ОстатокДней
    | ИЗ
    |  (ВЫБРАТЬ
    |   ВложенныйЗапрос.Сектор КАК Сектор,
    |   ВложенныйЗапрос.Склад КАК Склад,
    |   ВложенныйЗапрос.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    |   СУММА(ВложенныйЗапрос.План) КАК План,
    |   СУММА(ВложенныйЗапрос.Выручка) КАК Выручка
    |  ИЗ
    |   (ВЫБРАТЬ
    |	ПланыПродаж.Склад.Сектор КАК Сектор,
    |	ПланыПродаж.Склад КАК Склад,
    |	ВЫБОР
    |	 КОГДА ПланыПродаж.Номенклатура = ПланыПродаж.Номенклатура.ЭтоГруппа
    |	  ТОГДА ПланыПродаж.Номенклатура
    |	 ИНАЧЕ ПланыПродаж.Номенклатура.ВидНоменклатурнойГруппы
    |	КОНЕЦ КАК НоменклатурнаяГруппа,
    |	ПланыПродаж.Количество КАК План,
    |	NULL КАК Выручка
    |   ИЗ
    |	РегистрНакопления.ПланыПродаж КАК ПланыПродаж
    |   ГДЕ
    |	ПланыПродаж.Период МЕЖДУ &ДатаНачала И &ДатаКонца
    |
    |   ОБЪЕДИНИТЬ ВСЕ
    |
    |   ВЫБРАТЬ
    |	ПродажиТО.Склад.Сектор,
    |	ПродажиТО.Склад,
    |	ПродажиТО.Номенклатура.НоменклатурнаяГруппа.ВидНоменклатурнойГруппы,
    |	NULL,
    |	ПродажиТО.Количество
    |   ИЗ
    |	РегистрНакопления.ПродажиТО КАК ПродажиТО
    |   ГДЕ
    |	ПродажиТО.Период МЕЖДУ &ДатаНачала И &ДатаКонца
    |	И ПродажиТО.КодОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Возврат)
    |	И ПродажиТО.КодОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийВозвратТоваровОтПокупателя.Возврат)
    |	И ПродажиТО.КодОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийВозвратТоваровОтПокупателя.Ремонт)) КАК ВложенныйЗапрос
    |
    |  СГРУППИРОВАТЬ ПО
    |   ВложенныйЗапрос.Сектор,
    |   ВложенныйЗапрос.Склад,
    |   ВложенныйЗапрос.НоменклатурнаяГруппа) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос
    |{ГДЕ
    | ВложенныйЗапрос.Сектор.*,
    | ВложенныйЗапрос.Склад.*,
    | ВложенныйЗапрос.НоменклатурнаяГруппа.*}
    |ИТОГИ
    | СУММА(План),
    | СУММА(Выручка),
    | СУММА(ТекущееВДень),
    | СУММА(ПрогнозВыполнения),
    | СУММА(НадоВДень100),
    | СУММА(НадоВДень110),
    | СУММА(НадоВДень120)
    |ПО
    | ОБЩИЕ
    |{ИТОГИ ПО
    | Сектор.*,
    | Склад.*,
    | НоменклатурнаяГруппа.*,
    | План,
    | Выручка,
    | ТекущееВДень,
    | НадоВДень100,
    | НадоВДень110,
    | НадоВДень120}";
    
    
    УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
    
    УниверсальныйОтчет.ДобавитьПолеРесурс("ПроцентВыручки",	  "Выручка/22", "Процент от выручки");  
    
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Выручка","Выручка");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("НадоВДень100","Надо вДень 100");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("НадоВДень110","Надо вДень 110");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("НадоВДень120","Надо вДень 120");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("НоменклатурнаяГруппа","Номенклатурная группа");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("План","План");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ПрогнозВыполнения","Прогноз выполнения");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Сектор","Сектор");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Склад","Склад");
    УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТекущееВДень","Текущее вДень");
    
    
    
    
    УниверсальныйОтчет.ДобавитьПоказатель("План"	, "План"	, ИСТИНА, "ЧДЦ=0" ,"","");
    УниверсальныйОтчет.ДобавитьПоказатель("Выручка"	, "Выручка"	, ИСТИНА, ""  ,"","");
    УниверсальныйОтчет.ДобавитьПоказатель("ТекущееВДень"  , "Текущее вДень"  , ИСТИНА, "ЧДЦ=0" ,"","");
    УниверсальныйОтчет.ДобавитьПоказатель("ПрогнозВыполнения" , "Прогноз выполнения" , ИСТИНА, "ЧДЦ=2" ,"","");
    УниверсальныйОтчет.ДобавитьПоказатель("НадоВДень100"  , "Надо в День 100%" , ИСТИНА, "ЧДЦ=0" ,"","");
    УниверсальныйОтчет.ДобавитьПоказатель("НадоВДень110"  , "Надо в День 110%" , ИСТИНА, "ЧДЦ=0" ,"","");
    УниверсальныйОтчет.ДобавитьПоказатель("НадоВДень120"  , "Надо в День 120%" , ИСТИНА, "ЧДЦ=0" ,"","");
    
    УниверсальныйОтчет.ДобавитьПоказатель("ПроцентВыручки" , "ПроцентВыручки" , ИСТИНА, "ЧДЦ=0" ,"","");
    
    
    
    
    УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Склад");
    УниверсальныйОтчет.ДобавитьИзмерениеСтроки("НоменклатурнаяГруппа");
    УниверсальныйОтчет.ДобавитьОтбор("Сектор");
    УниверсальныйОтчет.ДобавитьОтбор("Склад");
    УниверсальныйОтчет.ДобавитьОтбор("НоменклатурнаяГруппа");
    
    УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);
    УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);
    
    УниверсальныйОтчет.УстановитьТипыЗначенийСвойствДляОтбора();
    
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("Сектор", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("Склад", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("НоменклатурнаяГруппа", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("План", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("Выручка", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("ТекущееВДень", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("ПрогнозВыполнения", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("НадоВДень100", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("НадоВДень110", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("НадоВДень120", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("ПроцентВыручки", ТипРазмещенияРеквизитовИзмерений.Отдельно, 3);
    
    КонецПроцедуры
    Проблема заключается в том, что при формировании отчета пишет ошибку Поле не найдено: ПроцентВыручки
    Что сделать чтобы отчет нормально выводил отдельно вычисляемые поля (Ресурсы)?
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ну по всей видимости что-то делать с ПроцентВыручки:)
  3. TopicStarter Overlay
    russlix
    Offline

    russlix

    Регистрация:
    15 авг 2008
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Код:
    УниверсальныйОтчет.ДобавитьПолеРесурс("ПроцентВыручки",   "Выручка/22", "Процент от выручки"); 
    Я же тут его определил для отчета.
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    А в запросе что-то не нашел:(
  5. TopicStarter Overlay
    russlix
    Offline

    russlix

    Регистрация:
    15 авг 2008
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Дело в том, что мне необходимо рассчитать итоги Поля ПроцентВыручки - в запросе итог по процентному полю считать нет смысла, т.к. он будет неверным, поэтому я решил поспользоваться ПолемРесурсом, как это делается в стандартных универсальных отчетах, как в ОтчетеПоПродажам. Там вообще нету запроса, однако ПоляРесурсы рачитываются и выводятся как надо.
  6. TopicStarter Overlay
    russlix
    Offline

    russlix

    Регистрация:
    15 авг 2008
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Добавил в Запрос Поле ПроцентВыручки.

    0, КАК ПроцентВыручки

    При формировании отчета в поле не выводятся необходимые мне данные, расчитанные в:
    Код:
    УниверсальныйОтчет.ДобавитьПолеРесурс("ПроцентВыручки",	  "Выручка/22", "Выручка/22", "Сумма(Выручка)/22");
    В чем дело?
  7. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    А единицу поставьте:)
  8. TopicStarter Overlay
    russlix
    Offline

    russlix

    Регистрация:
    15 авг 2008
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Единицу и выводит.))

    Значит нет возможности так сделать и надо делать обычным отчетом?
  9. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Затрудняюсь так сходу подсказать :(

    Даже не вижу где у вас ПроцентВыручки рассчитывается.
  10. TopicStarter Overlay
    russlix
    Offline

    russlix

    Регистрация:
    15 авг 2008
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Вот где:
    Код:
    УниверсальныйОтчет.ДобавитьПолеРесурс("ПроцентВыручки",	  "Выручка/22*100",  "Процент от выручки", "Сумма(Выручка)/22*100");        
  11. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    А почему расчет не в тексте запроса?
  12. TopicStarter Overlay
    russlix
    Offline

    russlix

    Регистрация:
    15 авг 2008
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Потомучто в запросе считать итоги по процентным полям нельзя т.к. будет не верный результат, по-этому этот итог необходимо вычислить при выводе отчета.
    Я хотел сделать этот расчет в ПолеРесурсе и натолкнулся на такую проблему.

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