Имя: Пароль:
1C
1С v8
Подскажите как добавить показатель в отчет на базе универсального
0 Xelga
 
13.07.12
11:05
В конфигурации управление автотранспортом нужно в отчете, сделанном  на базе универсального добавить поле Цена.
В запросе поле добавила, в итоги его включила, строку УниверсальныйОтчет.ДобавитьПоказатель добавила.
В итоге выдает ошибку - Поле не найдено "Цена". Подскажите в чем дело?

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

   // Установка связи подчиненных и родительских полей
   // УниверсальныйОтчет.УстановитьСвязьПолей(<ПутьКДанным>, <ПутьКДанным>);
   
   // Установка связи полей и измерений
   // УниверсальныйОтчет.УстановитьСвязьПоляИИзмерения(<ИмяПоля>, <ИмяИзмерения>);
   //УниверсальныйОтчет.УстановитьСвязьПоляИИзмерения("ВыполнениеЗаказовНаТС", "ЗаказНаТС");    
   
   // Заполнение начальных настроек универсального отчета
   УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);
   УниверсальныйОтчет.ДобавитьДополнительноеПоле("ТСГосНомер");
   //УниверсальныйОтчет.ДобавитьДополнительноеПоле("Цена");
1 ICWiner
 
13.07.12
11:09
Кури вот это:
http://infostart.ru/public/62223/
Независимо от того, куда вы едете — это в гору и против ветра!