Имя: Пароль:
1C
1С v8
Отбор по свойствам номенклатуры. Конф. "Управление торговым предприятием для Украины", ред. 1.2.
0 gtovt
 
27.07.15
15:01
Вопрос такого характера есть установка цен номенклатуры, далее заполнить по ценам номенклатуры когда нажимаю открывается окно обработки "Формирование цен" и есть четыре отбора: Тип цен, Номенклатура, Номенклатурная группа, Ценовая группа ну и возможность добавить дополнительные отборы.
Вопрос: как бы туда можно было добавить свойства номенклатуры, например у меня сезон и год выпуска товара. В программировании 1с не силен, если надо могу в код залезть. Очень прошу помощи.
1 gtovt
 
27.07.15
15:13
Вот как и куда вставлять "РегистрСведений.ЗначенияСвойствОбъектов"

#Если Клиент Тогда

////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ

Перем мКоманда Экспорт;

Перем мСписокНоменклатуры Экспорт;
Перем мКонтрагент Экспорт;

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

// Заполняет параметры построителя отчета.
//
Процедура ЗаполнитьОбщиеПараметрыПостроителяОтчета()

    ДопКолонка   = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    //ВыводитьКоды = Истина;
    Если ДопКолонка <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить Тогда
        ИмяКолонкиКодов = Строка(ДопКолонка);
    //Иначе
    //    ВыводитьКоды = Ложь;
    КонецЕсли;

    ПостроительОтчета.Параметры.Вставить("ДатаЦенСкидок", ДатаЦенСкидок);
    ПостроительОтчета.Параметры.Вставить("ПустаяСтрока", "");
    ПостроительОтчета.Параметры.Вставить("ДопКолонка", ДопКолонка);
    ПостроительОтчета.Параметры.Вставить("Артикул", Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул);
    ПостроительОтчета.Параметры.Вставить("Код", Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код);

КонецПроцедуры // ЗаполнитьОбщиеПараметрыПостроителяОтчета()

// Формирует и заполняет построитель отчета по регистру "ЦеныНоменклатуры"
//
Процедура ЗаполнитьПостроительОтчетаПоЦенамНоменклатуры(ВключатьНезаполненные, ЗаполнятьТолькоТекстЗапроса) Экспорт

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

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

    ТекстЗапроса = ТекстЗапроса + "
    |{ГДЕ
    |    Тип.Ссылка.*                                            КАК ТипЦен,
    |    Ном.Ссылка.*                                            КАК Номенклатура,
    |    НоменклатурнаяГруппа.Ссылка.*                           КАК НоменклатурнаяГруппа,
    |    ЦеноваяГруппа.Ссылка.*                                  КАК ЦеноваяГруппа,
    |    Ном.Родитель.*                                          КАК Группа
    |    //СВОЙСТВА
    |    //КАТЕГОРИИ
    |}
    |
    |УПОРЯДОЧИТЬ ПО
    |    Номенклатура,
    |    ХарактеристикаНоменклатуры,
    |    ТипЦен
    |    //СВОЙСТВА
    |
    |ИТОГИ ПО
    |    Номенклатура ТОЛЬКО ИЕРАРХИЯ
    |АВТОУПОРЯДОЧИВАНИЕ
    |";

    ПостроительОтчета.Текст = ТекстЗапроса;

    Если Не ЗаполнятьТолькоТекстЗапроса Тогда

        // Соответствие имен полей в запросе и их представлений в отчете
        СтруктураПредставлениеПолей = Новый Структура(
        "    ТипЦен,
        |    Номенклатура,
        |    НоменклатурнаяГруппа,
        |    ЦеноваяГруппа",
        "Тип цен",
        "Номенклатура",
        "Номенклатурная группа",
        "Ценовая группа");

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

        // отборы по умолчанию
        Пока ПостроительОтчета.Отбор.Количество() > 0 Цикл
            ПостроительОтчета.Отбор.Удалить(0);
        КонецЦикла;

        МассивОтбора = Новый Массив;

        Если ТипыЦенСкидок.Количество() = 0 Тогда
            МассивОтбора.Добавить("ТипЦен");
        Иначе
            ЭлементОтбора = ПостроительОтчета.Отбор.Добавить("ТипЦен",, "Тип цен");
            ЭлементОтбора.ВидСравнения  = ВидСравнения.ВСписке;
            ЭлементОтбора.Значение.ЗагрузитьЗначения(ТипыЦенСкидок.ВыгрузитьКолонку("ТипЦенСкидок"));
            ЭлементОтбора.Использование = Истина;
        КонецЕсли;
        
        Если мСписокНоменклатуры = Неопределено Тогда
            МассивОтбора.Добавить("Номенклатура");
        Иначе
            ЭлементОтбора = ПостроительОтчета.Отбор.Добавить("Номенклатура",, "Номенклатура");
            ЭлементОтбора.ВидСравнения  = ВидСравнения.ВСписке;
            ЭлементОтбора.Значение      = мСписокНоменклатуры;
            ЭлементОтбора.Использование = Истина;
        КонецЕсли;
        
        МассивОтбора.Добавить("НоменклатурнаяГруппа");
        МассивОтбора.Добавить("ЦеноваяГруппа");
        
        УправлениеОтчетами.ЗаполнитьОтбор(МассивОтбора, ПостроительОтчета);

        ЗаполнитьОбщиеПараметрыПостроителяОтчета();

    КонецЕсли;

КонецПроцедуры // ЗаполнитьПостроительОтчетаПоЦенамНоменклатуры()

// Формирует и заполняет построитель отчета по регистру "ЦеныНоменклатурыКонтрагентов"
//
// Возвращаемое значение:
//   Текст запроса
//
Процедура ЗаполнитьПостроительОтчетаПоЦенамНоменклатурыКонтрагентов(ВключатьНезаполненные, ЗаполнятьТолькоТекстЗапроса) Экспорт

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

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

    ТекстЗапроса = ТекстЗапроса + "
    |ГДЕ
    |    НЕ ТаблицаТоваров.Номенклатура.Набор
    |УПОРЯДОЧИТЬ ПО
    |    ТаблицаТоваров.Номенклатура,
    |    ТаблицаТоваров.ХарактеристикаНоменклатуры,
    |    ЦеныНоменклатурыКонтрагентов.ТипЦен
    |
    |АВТОУПОРЯДОЧИВАНИЕ";

    Если НЕ ВключатьНезаполненные Тогда
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТаблицаТоваров", "ЦеныНоменклатурыКонтрагентов");
    КонецЕсли;

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

    Если Не ЗаполнятьТолькоТекстЗапроса Тогда

        // Соответствие имен полей в запросе и их представлений в отчете
        СтруктураПредставлениеПолей = Новый Структура(
        "    ТипЦен,
        |    Номенклатура",
        "Тип цен",
        "Номенклатура");

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

        // отборы по умолчанию
        Пока ПостроительОтчета.Отбор.Количество() > 0 Цикл
            ПостроительОтчета.Отбор.Удалить(0);
        КонецЦикла;

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

        ЗаполнитьОбщиеПараметрыПостроителяОтчета();

    КонецЕсли;

    
КонецПроцедуры // ЗаполнитьПостроительОтчетаПоЦенамНоменклатурыКонтрагентов()

мСписокНоменклатуры = Неопределено;
мКонтрагент         = Неопределено;


#КонецЕсли
2 gtovt
 
06.08.15
15:52
UP
3 ДенисЧ
 
06.08.15
15:53
Нету там этого
4 gtovt
 
06.08.15
15:55
Ну как бы эти отборы добавить, или это не реально
5 ДенисЧ
 
06.08.15
15:55
Ну как бы запрос надо переписывать...
6 gtovt
 
06.08.15
15:57
я понимаю что надо переписывать, но мозгов не хватает, и в итоге что так и так все равно лезут ошибки
7 sash-ml
 
06.08.15
16:44
посмотри как отрабатывает добавление свойств и категорий универсальном отчете есть там такая штука
ДобавитьВТекстЗапросаСвойстваИКатегории

она сама все добавит
8 gtovt
 
07.08.15
16:18
Спасибо, целый день сижу уже еще больше запутался
9 gtovt
 
07.08.15
16:21
10 gtovt
 
07.08.15
16:21
11 gtovt
 
11.08.15
12:21
Не могу все таки нужна помощь...
12 gtovt
 
11.08.15
15:00
Процедура ИспользоватьСвойстваИКатегории(ВключатьНезаполненные, ЗаполнятьТолькоТекстЗапроса) Экспорт
ТекстЗапроса = "
    |ВЫБРАТЬ
    |    ЗначенияСвойствОбъектов.Объект,
    |    ВЫБОР
    |        КОГДА ЗначенияСвойствОбъектов.Свойство.Наименование = ""Сезон""
    |            ТОГДА ЗначенияСвойствОбъектов.Значение
    |        ИНАЧЕ """"
    |    КОНЕЦ КАК Сезон
    |ПОМЕСТИТЬ ВТСезон
    |ИЗ
    |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |ГДЕ
    |    ЗначенияСвойствОбъектов.Свойство = &СвойствоСезон
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ЗначенияСвойствОбъектов.Объект,
    |    ВЫБОР
    |        КОГДА ЗначенияСвойствОбъектов.Свойство.Наименование = ""Год""
    |            ТОГДА ЗначенияСвойствОбъектов.Значение
    |        ИНАЧЕ """"
    |    КОНЕЦ КАК Год
    |ПОМЕСТИТЬ ВТГод
    |ИЗ
    |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |ГДЕ
    |    ЗначенияСвойствОбъектов.Свойство = &СвойствоГод
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ЗначенияСвойствОбъектов.Объект,
    |    ВЫБОР
    |        КОГДА ЗначенияСвойствОбъектов.Свойство.Наименование = ""Производитель""
    |            ТОГДА ЗначенияСвойствОбъектов.Значение
    |        ИНАЧЕ """"
    |    КОНЕЦ КАК Производитель
    |ПОМЕСТИТЬ ВТПроизводитель
    |ИЗ
    |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |ГДЕ
    |    ЗначенияСвойствОбъектов.Свойство = &СвойствоПроизводитель
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Номенклатура.Родитель.Родитель.Родитель КАК РодительРодительРодитель,
    |    Номенклатура.Родитель.Родитель КАК РодительРодитель,
    |    Номенклатура.Родитель КАК Родитель,
    |    Номенклатура.Наименование КАК Наименование,
    |    Номенклатура.Артикул,
    |    ВТСезон.Сезон,
    |    ВТГод.Год,
    |    ВТПроизводитель.Производитель,
    |    Номенклатура.Ссылка
    |ПОМЕСТИТЬ ВТНоменклатура
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТСезон КАК ВТСезон
    |        ПО Номенклатура.Ссылка = ВТСезон.Объект
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТГод КАК ВТГод
    |        ПО Номенклатура.Ссылка = ВТГод.Объект
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТПроизводитель КАК ВТПроизводитель
    |        ПО Номенклатура.Ссылка = ВТПроизводитель.Объект
    |ГДЕ
    |    Номенклатура.ЭтоГруппа = ЛОЖЬ
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    |    МИНИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена
    |ПОМЕСТИТЬ ВТЦены
    |ИЗ
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонПериода, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
    |
    |СГРУППИРОВАТЬ ПО
    |    ЦеныНоменклатурыСрезПоследних.Номенклатура
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул,
    |    ВТНоменклатура.Сезон,
    |    ВТНоменклатура.Год,
    |    ВТНоменклатура.Производитель КАК Производитель,
    |    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
    |    ВТЦены.Цена
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, Регистратор, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТНоменклатура КАК ВТНоменклатура
    |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВТНоменклатура.Ссылка
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦены КАК ВТЦены
    |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВТЦены.Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование,
    |    Производитель,
    |    ВТНоменклатура.Наименование";
    ТекстЗапроса = ТекстЗапроса + "
    |{ГДЕ
    |    ЗначенияСвойствОбъектов.*                                            КАК ЗначенияСвойствОбъектов,
    |    ВТНоменклатура.Сезон.*                                            КАК ВТСезон.Сезон,
    |    ВТНоменклатура.Год.*                                               КАК ВТСезон.Год,
    |    ЦеноваяГруппа.Ссылка.*                                  КАК ЦеноваяГруппа,
    |    Ном.Родитель.*                                          КАК Группа
    |    //СВОЙСТВА
    |    //КАТЕГОРИИ
    |}
    |
    |УПОРЯДОЧИТЬ ПО
    |    Номенклатура,
    |    ВТСезон,
    |    ВТГод
    |    //СВОЙСТВА
    |
    |ИТОГИ ПО
    |    Номенклатура ТОЛЬКО ИЕРАРХИЯ
    |АВТОУПОРЯДОЧИВАНИЕ
    |";
    ПостроительОтчета.Текст = ТекстЗапроса;

    Если Не ЗаполнятьТолькоТекстЗапроса Тогда

        // Соответствие имен полей в запросе и их представлений в отчете
        СтруктураПредставлениеПолей = Новый Структура(
        "    ЗначенияСвойствОбъектов,
        |    Номенклатура,
        |    ВТСезон.Сезон,
        |    ВТСезон.Год",
        "ЗначенияСвойствОбъектов",
        "Номенклатура",
        "ВТСезон.Сезон",
        "ВТСезон.Год");

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

        // отборы по умолчанию
        Пока ПостроительОтчета.Отбор.Количество() > 0 Цикл
            ПостроительОтчета.Отбор.Удалить(0);
        КонецЦикла;

        МассивОтбора = Новый Массив;

        Если ТипыЦенСкидок.Количество() = 0 Тогда
            МассивОтбора.Добавить("ЗначенияСвойствОбъектов");
        Иначе
            ЭлементОтбора = ПостроительОтчета.Отбор.Добавить("ЗначенияСвойствОбъектов",, "ЗначенияСвойствОбъектов");
            ЭлементОтбора.ВидСравнения  = ВидСравнения.ВСписке;
            ЭлементОтбора.Значение.ЗагрузитьЗначения(ТипыЦенСкидок.ВыгрузитьКолонку("ТипЦенСкидок"));
            ЭлементОтбора.Использование = Истина;
        КонецЕсли;
        
        Если мСписокНоменклатуры = Неопределено Тогда
            МассивОтбора.Добавить("Номенклатура");
        Иначе
            ЭлементОтбора = ПостроительОтчета.Отбор.Добавить("Номенклатура",, "Номенклатура");
            ЭлементОтбора.ВидСравнения  = ВидСравнения.ВСписке;
            ЭлементОтбора.Значение      = мСписокНоменклатуры;
            ЭлементОтбора.Использование = Истина;
        КонецЕсли;
        
        МассивОтбора.Добавить("ВТСезон.Сезон");
        МассивОтбора.Добавить("ВТСезон.Год");
        
        УправлениеОтчетами.ЗаполнитьОтбор(МассивОтбора, ПостроительОтчета);

        ЗаполнитьОбщиеПараметрыПостроителяОтчета();

    КонецЕсли;

КонецПроцедуры
13 gtovt
 
11.08.15
15:01
Все равно не выводит год и сезон в отборе, может я вообще не туда смотрю.
Независимо от того, куда вы едете — это в гору и против ветра!