Имя: Пароль:
1C
1С v8
Помогите с универсальным отчетом, пожалуйста.
0 new1snik
 
01.07.13
09:20
Добрый день. Делаю изменяю стандартный отчет "СтоимостнаяОценкаСкладаВЦенахНоменклатурыВнешний", нужно добавить в него колонки для второго типа цен. На форму добавил поле ввода, для выбора нового типа цен. В модуле отчета по аналогии с первым типом цен добавил в запросы нужные мне части. При формировании отчета появляются нужные столбики, но данные не заполняются. Если не сложно, то посмотрите в чем может быть причина...
http://yadi.sk/d/6l6PXVEz6MJKe
1 Галахад
 
гуру
01.07.13
09:22
Вот хорошая статья

http://infostart.ru/public/62223/
2 new1snik
 
01.07.13
09:24
(1) читал ее. Вроде в отчете все правильно сделал, но один черт, ничего не работает, а где ошибка уже не вижу - вроде все проверил.
3 Галахад
 
гуру
01.07.13
09:26
(2) В "Построителе" поля указал?
4 new1snik
 
01.07.13
09:27
(3) Да
5 new1snik
 
01.07.13
11:03
Сначала я добавил свои показатели:
УниверсальныйОтчет.ДобавитьПоказатель("ТипЦенЦена2", "Цена2", Истина, "ЧЦ=15; ЧДЦ=2", "ВВыбранномТипеЦен2", "В выбранном типе цен2 ("+мВалютаУправленческогоУчета+")");
Потом добавил в запрос новые строки для получения нужной мне информации.
Далее представление полей УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенЦена2", "Цена в выбранном типе цен2");
И при формировании отчета передавал в него своим параметры: УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("БазовыйТипЦен2"             , ТипЦен2.БазовыйТипЦен);
Если данные не выводятся, то нужно искать ошибку в запросе? Или она может возникнуть и на другом этапе?
6 new1snik
 
01.07.13
12:18
Убрал все лишнее, оставил только один запрос(надеюсь поместится код под спойлер)
Посмотри, если не сложно:
#Если Клиент Тогда

// Валюта управленческого учета организаций
Перем мВалютаУправленческогоУчета Экспорт;
   
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ НАЧАЛЬНОЙ НАСТРОЙКИ ОТЧЕТА

// Процедура установки начальных настроек отчета с использованием текста запроса
//
Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт

   // Настройка общих параметров универсального отчета

   Если ДополнительныеПараметры <> Неопределено Тогда
       УправлениеОтчетами.ВосстановитьРеквизитыОтчета(ЭтотОбъект, ДополнительныеПараметры);
   КонецЕсли;

   УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);

   УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;

   УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
   
   // Содержит признак необходимости вывода в отчет общих итогов.
   // Тип: Булево.
   // Значение по умолчанию: Истина.
   // Пример:
   // УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь;
   
   // Содержит признак необходимости вывода детальных записей в отчет.
   // Тип: Булево.
   // Значение по умолчанию: Ложь.
   // Пример:
   // УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;
   
   // Содержит признак необходимости отображения флага использования свойств и категорий в форме настройки.
   // Тип: Булево.
   // Значение по умолчанию: Истина.
   // Пример:
   // УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь;
   
   // Содержит признак использования свойств и категорий при заполнении настроек отчета.
   // Тип: Булево.
   // Значение по умолчанию: Ложь.
   // Пример:
   // УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина;

   УниверсальныйОтчет.мРежимФормыНастройкиБезГруппировокКолонок = Истина;

   // Дополнительные параметры, переданные из отчета, вызвавшего расшифровку.
   // Информация, передаваемая в переменной ДополнительныеПараметры, может быть использована
   // для реализации специфичных для данного отчета параметрических настроек.
   Режим = 0;

   Если Режим = 0 Тогда // Оперативный режим
       УниверсальныйОтчет.Показатели.Строки.Очистить();

       УниверсальныйОтчет.ДобавитьПоказатель("КоличествоОстаток", "в ед. хранения", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");
       УниверсальныйОтчет.ДобавитьПоказатель("КоличествоБазовыхЕдОстаток", "в базовых ед.", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");
       УниверсальныйОтчет.ДобавитьПоказатель("ТипЦенЦена", "Цена", Истина, "ЧЦ=15; ЧДЦ=2", "ВВыбранномТипеЦен", "В выбранном типе цен ("+мВалютаУправленческогоУчета+")");
       УниверсальныйОтчет.ДобавитьПоказатель("ТипЦенСтоимость", "Стоимость", Истина, "ЧЦ=15; ЧДЦ=2", "ВВыбранномТипеЦен", "В выбранном типе цен ("+мВалютаУправленческогоУчета+")");
       //Добавляю показатели для второго типа цен
       УниверсальныйОтчет.ДобавитьПоказатель("ТипЦенЦена2", "Цена2", Истина, "ЧЦ=15; ЧДЦ=2", "ВВыбранномТипеЦен2", "В выбранном типе цен2 ("+мВалютаУправленческогоУчета+")");
       УниверсальныйОтчет.ДобавитьПоказатель("ТипЦенСтоимость2", "Стоимость2", Истина, "ЧЦ=15; ЧДЦ=2", "ВВыбранномТипеЦен2", "В выбранном типе цен2 ("+мВалютаУправленческогоУчета+")");


       ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                      |    ТаблицаРегистра.Склад КАК Склад,
                      |    ТаблицаРегистра.Номенклатура КАК Номенклатура,
                      |    ТаблицаРегистра.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                      |    ТаблицаРегистра.КоличествоОстаток КАК КоличествоОстаток,
                      |    ТаблицаРегистра.КоличествоОстаток * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоБазовыхЕдОстаток,
                      |    ВЫБОР
                      |        КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |            ТОГДА ЦеныНоменклатурыБезХарактеристик.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        ИНАЧЕ ЦеныНоменклатуры.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |    КОНЕЦ КАК ТипЦенЦена,
                      |    ВЫБОР
                      |        КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |            ТОГДА ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатурыБезХарактеристик.Цена / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        ИНАЧЕ ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатуры.Цена / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |    КОНЕЦ КАК ТипЦенСтоимость,
                      |    ВЫБОР
                      |        КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |            ТОГДА ЦеныНоменклатурыБезХарактеристик.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        ИНАЧЕ ЦеныНоменклатуры.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |    КОНЕЦ КАК ТипЦенЦена2,
                      |    ВЫБОР
                      |        КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |            ТОГДА ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатурыБезХарактеристик.Цена / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        ИНАЧЕ ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатуры.Цена / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |    КОНЕЦ КАК ТипЦенСтоимость2
                      |{ВЫБРАТЬ
                      |    Склад.* КАК Склад,
                      |    Номенклатура.* КАК Номенклатура,
                      |    ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
                      |    КоличествоОстаток КАК КоличествоОстаток,
                      |    КоличествоБазовыхЕдОстаток КАК КоличествоБазовыхЕдОстаток,
                      |    ТипЦенЦена КАК ТипЦенЦена,
                      |    ТипЦенСтоимость КАК ТипЦенСтоимость,
                      |    ТипЦенЦена2 КАК ТипЦенЦена2,
                      |    ТипЦенСтоимость2 КАК ТипЦенСтоимость2}
                      |ИЗ
                      |    РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКон, Валюта = &ВалютаУпрУчета) КАК УпрВалюты,
                      |    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ТаблицаРегистра
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &БазовыйТипЦен {(Номенклатура).* КАК Номенклатура}) КАК ЦеныНоменклатуры
                      |        ПО ТаблицаРегистра.Номенклатура = ЦеныНоменклатуры.Номенклатура
                      |            И ТаблицаРегистра.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &БазовыйТипЦен {(Номенклатура).* КАК Номенклатура}) КАК ЦеныНоменклатуры2
                      |        ПО ТаблицаРегистра.Номенклатура = ЦеныНоменклатуры.Номенклатура
                      |            И ТаблицаРегистра.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                      |                &ДатаКон,
                      |                ТипЦен = &БазовыйТипЦен
                      |                    И ХарактеристикаНоменклатуры = &ПустаяХарактеристика {(Номенклатура).* КАК Номенклатура}) КАК ЦеныНоменклатурыБезХарактеристик
                      |        ПО ТаблицаРегистра.Номенклатура = ЦеныНоменклатурыБезХарактеристик.Номенклатура
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                      |                &ДатаКон,
                      |                ТипЦен = &БазовыйТипЦен
                      |                    И ХарактеристикаНоменклатуры = &ПустаяХарактеристика {(Номенклатура).* КАК Номенклатура}) КАК ЦеныНоменклатурыБезХарактеристик2
                      |        ПО ТаблицаРегистра.Номенклатура = ЦеныНоменклатурыБезХарактеристик.Номенклатура

                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКон, ) КАК КурсыВалютСрезПоследних
                      |        ПО (ЦеныНоменклатуры.Валюта = КурсыВалютСрезПоследних.Валюта)
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКон, ) КАК КурсыВалютСрезПоследнихБезХарактеристик
                      |        ПО (ЦеныНоменклатурыБезХарактеристик.Валюта = КурсыВалютСрезПоследнихБезХарактеристик.Валюта)
                      |{ГДЕ
                      |    ТаблицаРегистра.Склад.* КАК Склад,
                      |    ТаблицаРегистра.Номенклатура.* КАК Номенклатура,
                      |    ТаблицаРегистра.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
                      |    ТаблицаРегистра.КоличествоОстаток КАК КоличествоОстаток,
                      |    (ТаблицаРегистра.КоличествоОстаток * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоБазовыхЕдОстаток,
                      |    (ВЫБОР
                      |            КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |                ТОГДА ЦеныНоменклатурыБезХарактеристик.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |            ИНАЧЕ ЦеныНоменклатуры.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        КОНЕЦ) КАК ТипЦенЦена,
                      |    (ВЫБОР
                      |            КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |                ТОГДА ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатурыБезХарактеристик.Цена / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |            ИНАЧЕ ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатуры.Цена / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        КОНЕЦ) КАК ТипЦенСтоимость,
                      |    (ВЫБОР
                      |            КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |                ТОГДА ЦеныНоменклатурыБезХарактеристик.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |            ИНАЧЕ ЦеныНоменклатуры.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        КОНЕЦ) КАК ТипЦенЦена2,
                      |    (ВЫБОР
                      |            КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |                ТОГДА ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатурыБезХарактеристик.Цена / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |            ИНАЧЕ ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатуры.Цена / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        КОНЕЦ) КАК ТипЦенСтоимость2}
                      |{УПОРЯДОЧИТЬ ПО
                      |    Склад.* КАК Склад,
                      |    ТаблицаРегистра.Номенклатура.* КАК Номенклатура,
                      |    ТаблицаРегистра.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
                      |    КоличествоОстаток КАК КоличествоОстаток,
                      |    (ТаблицаРегистра.КоличествоОстаток * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоБазовыхЕдОстаток,
                      |    (ВЫБОР
                      |            КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |                ТОГДА ЦеныНоменклатурыБезХарактеристик.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |            ИНАЧЕ ЦеныНоменклатуры.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        КОНЕЦ) КАК ТипЦенЦена,
                      |    (ВЫБОР
                      |            КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |                ТОГДА ЦеныНоменклатурыБезХарактеристик.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |            ИНАЧЕ ЦеныНоменклатуры.Цена * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        КОНЕЦ) КАК ТипЦенЦена2,
                      |    (ВЫБОР
                      |            КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |                ТОГДА ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатурыБезХарактеристик.Цена / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |            ИНАЧЕ ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатуры.Цена / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        КОНЕЦ) КАК ТипЦенСтоимость,
                      |    (ВЫБОР
                      |            КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
                      |                ТОГДА ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатурыБезХарактеристик.Цена / ЦеныНоменклатурыБезХарактеристик.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследнихБезХарактеристик.Курс / КурсыВалютСрезПоследнихБезХарактеристик.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |            ИНАЧЕ ТаблицаРегистра.КоличествоОстаток * (ЦеныНоменклатуры.Цена / ЦеныНоменклатуры.ЕдиницаИзмерения.Коэффициент) * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент * (КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность) / (УпрВалюты.Курс / УпрВалюты.Кратность) * &КоэффициентБазовогоТипаЦен
                      |        КОНЕЦ) КАК ТипЦенСтоимость2}
                      |ИТОГИ
                      |    СУММА(КоличествоОстаток),
                      |    СУММА(КоличествоБазовыхЕдОстаток),
                      |    МАКСИМУМ(ТипЦенЦена),
                      |    СУММА(ТипЦенСтоимость),
                      |    МАКСИМУМ(ТипЦенЦена2),
                      |    СУММА(ТипЦенСтоимость2)
                      |ПО
                      |    ОБЩИЕ
                      |{ИТОГИ ПО
                      |    Склад.* КАК Склад,
                      |    ТаблицаРегистра.Номенклатура.* КАК Номенклатура,
                      |    ТаблицаРегистра.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры}";
                      КонецЕсли;
                 
   // В универсальном отчете включен флаг использования свойств и категорий.
   Если УниверсальныйОтчет.ИспользоватьСвойстваИКатегории Тогда
       
       // Добавление свойств и категорий поля запроса в таблицу полей.
       УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("ТаблицаРегистра.Номенклатура", "Номенклатура", "Номенклатура", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура);
       УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("ТаблицаРегистра.Склад", "Склад", "Склад", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Склады);

       // Добавление свойств и категорий в исходный текст запроса.
       УниверсальныйОтчет.ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса);
       
   КонецЕсли;
       
   // Инициализация текста запроса построителя отчета
   УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
   
   // Представления полей отчета.
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Склад", "Склад");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Номенклатура", "Номенклатура");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ХарактеристикаНоменклатуры", "Характеристика номенклатуры");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("КоличествоОстаток", "Количество (в ед. хранения)");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("КоличествоБазовыхЕдОстаток", "Количество (в базовых ед.)");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("НеотфактурованныйОстаток", "Количество неотфактурованных (в ед. хранения)");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("НеотфактурованныйБазовыхЕдОстаток", "Количество неотфактурованных (в базовых ед.)");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Себестоимость", "Себестоимость");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенЦена", "Цена в выбранном типе цен");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенСтоимость", "Стоимость в выбранном типе цен");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенНаценка", "Наценка в выбранном типе цен");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенРентабельность", "Рентабельность (%) в выбранном типе цен");
   ////Добавляю новые структуры
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенЦена2", "Цена в выбранном типе цен2");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенСтоимость2", "Стоимость в выбранном типе цен2");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенНаценка2", "Наценка в выбранном типе цен2");
   УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ТипЦенРентабельность2", "Рентабельность (%) в выбранном типе цен2");


   // Добавление показателей
   // Необходимо вызывать для каждого добавляемого показателя.
   // УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>);
   
   // Добавление предопределенных группировок строк отчета.
   УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Очистить();
   
   УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Склад");
   УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");
   
   // Добавление предопределенных группировок колонок отчета.
   // Необходимо вызывать для каждой добавляемой группировки колонки.
   // УниверсальныйОтчет.ДобавитьИзмерениеКолонки(<ПутьКДанным>);
   
   // Добавление предопределенных отборов отчета.
   УниверсальныйОтчет.ДобавитьОтбор("Склад");
   УниверсальныйОтчет.ДобавитьОтбор("Номенклатура");

   // Добавление предопределенных полей порядка отчета.
   // Необходимо вызывать для каждого добавляемого поля порядка.
   // УниверсальныйОтчет.ДобавитьПорядок(<ПутьКДанным>);
   
   // Установка связи подчиненных и родительских полей
   // УниверсальныйОтчет.УстановитьСвязьПолей(<ПутьКДанным>, <ПутьКДаннымРодитель>);
   
   // Установка связи полей и измерений
   // УниверсальныйОтчет.УстановитьСвязьПоляИИзмерения(<ИмяПоля>, <ИмяИзмерения>);
   
   // Установка представлений полей
   УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);
   
   // Установка типов значений свойств в отборах отчета
   УниверсальныйОтчет.УстановитьТипыЗначенийСвойствДляОтбора();
   
   // Заполнение начальных настроек универсального отчета
   УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);
   
   // Добавление дополнительных полей
   // Необходимо вызывать для каждого добавляемого дополнительного поля.
   // УниверсальныйОтчет.ДобавитьДополнительноеПоле(<ПутьКДанным>, <Размещение>, <Положение>);
   
КонецПроцедуры // УстановитьНачальныеНастройки()

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ФОРМИРОВАНИЯ ОТЧЕТА
   
// Процедура формирования отчета
//
Процедура СформироватьОтчет(ТабличныйДокумент) Экспорт

   УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ТипЦен", ТипЦен);
   УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ТипЦен2", ТипЦен2);


   Если ТипЦен.Рассчитывается Тогда
       УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("БазовыйТипЦен"             , ТипЦен.БазовыйТипЦен);
       УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("КоэффициентБазовогоТипаЦен", 1+ТипЦен.ПроцентСкидкиНаценки/100);
   Иначе
       УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("БазовыйТипЦен"             , ТипЦен);
       УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("КоэффициентБазовогоТипаЦен", 1);
   КонецЕсли;
   
   // Добавил и передал параметры для второго типа цен
   Если ТипЦен2.Рассчитывается Тогда
       УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("БазовыйТипЦен2"             , ТипЦен2.БазовыйТипЦен);
       УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("КоэффициентБазовогоТипаЦен2", 1+ТипЦен2.ПроцентСкидкиНаценки/100);
   Иначе
       УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("БазовыйТипЦен2"             , ТипЦен2);
       УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("КоэффициентБазовогоТипаЦен2", 1);
   КонецЕсли;

   УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("Неотфактурованный"         , Перечисления.СтатусыПартийТоваров.ПоОрдеру);
   УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ВалютаУпрУчета"            , мВалютаУправленческогоУчета);
   УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ПустаяХарактеристика"      , Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());

   СписокСтатусовПартии = Новый Массив;
   СписокСтатусовПартии.Добавить(Перечисления.СтатусыПартийТоваров.Купленный);
   СписокСтатусовПартии.Добавить(Перечисления.СтатусыПартийТоваров.НаКомиссию);
   СписокСтатусовПартии.Добавить(Перечисления.СтатусыПартийТоваров.ПоОрдеру);
   СписокСтатусовПартии.Добавить(Перечисления.СтатусыПартийТоваров.Продукция);
   СписокСтатусовПартии.Добавить(Перечисления.СтатусыПартийТоваров.Оборудование);

   УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("СписокСтатусовПартии", СписокСтатусовПартии);

   УниверсальныйОтчет.СформироватьОтчет(ТабличныйДокумент,,, ЭтотОбъект);

КонецПроцедуры // СформироватьОтчет()

Функция ПолучитьТекстСправкиФормы() Экспорт
   
   ТекстСправкиФормы = "";
   
   Если глЗначениеПеременной("ИспользоватьРасширеннуюАналитикуУчетаНоменклатурыИЗатрат") Тогда
       НачалоИспользования = Формат(глЗначениеПеременной("ДатаНачалаИспользованияРасширеннойАналитикиУчетаНоменклатурыИЗатрат"), "ДФ=dd.MM.yyyy");
       
       ТекстСправкиФормы = "<P>С " + НачалоИспользования + " установлено использование расширенной аналитики учета затрат."
                   + "<BR><b>Рекомендуется использовать режим - Оперативный (остатки)</b>.";
   КонецЕсли;
   
   Возврат ТекстСправкиФормы;
   
КонецФункции


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

// Процедура обработки расшифровки
//
Процедура ОбработкаРасшифровки(Расшифровка, Объект) Экспорт
   
   // Дополнительные параметры в расшифровывающий отчет можно передать
   // посредством инициализации переменной "ДополнительныеПараметры".
   
   ДополнительныеПараметры = УправлениеОтчетами.СохранитьРеквизитыОтчета(ЭтотОбъект);
   УниверсальныйОтчет.ОбработкаРасшифровкиУниверсальногоОтчета(Расшифровка, Объект, ДополнительныеПараметры);
   
КонецПроцедуры // ОбработкаРасшифровки()

// Формирует структуру для сохранения настроек отчета
//
Процедура СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками) Экспорт
   
   УниверсальныйОтчет.СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками);
   УправлениеОтчетами.СохранитьРеквизитыОтчета(ЭтотОбъект, СтруктураСНастройками);
   
КонецПроцедуры // СформироватьСтруктуруДляСохраненияНастроек()

// Заполняет настройки отчета из структуры сохраненных настроек
//
Функция ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками) Экспорт
   
   УправлениеОтчетами.ВосстановитьРеквизитыОтчета(ЭтотОбъект, СтруктураСНастройками);
   Возврат УниверсальныйОтчет.ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками, ЭтотОбъект);
   
КонецФункции // ВосстановитьНастройкиИзСтруктуры()

УниверсальныйОтчет.мРежимВводаПериода = 1;

мВалютаУправленческогоУчета = глЗначениеПеременной("ВалютаУправленческогоУчета");

#КонецЕсли