|
Нужна помощь с отбором группы номенклатуры из регистра | ☑ | ||
---|---|---|---|---|
0
Vladimir2503
25.03.13
✎
10:07
|
Здравствуйте!!!
Помогите пожалуйста!!! Пытаюсь переделать отчет. В отчете установлен отбор по элементам,а мне нужно чтоб было по группам и элементам. Платформа 8.2 Управление торговлей", редакция 10.3.14.3 Функция ОсновнойОтчет() ТабДок = Новый ТабличныйДокумент; Макет = ЭтотОбъект.ПолучитьМакет("Макет"); Обл = Макет.ПолучитьОбласть("Шапка"); Обл.Параметры.Дата = Дата; Обл.Параметры.Контрагент = ЭлементыФормы.ПолеВвода3.ВыделенныйТекст; ТабДок.Вывести(Обл); Обл = Макет.ПолучитьОбласть("ШапкаТабл"); ТабДок.Вывести(Обл); Обл = Макет.ПолучитьОбласть("Строка"); /////////////////////// // ( Запрос: Остатки // /////////////////////// Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ |хр_ПереданныеОСОстатки.Организация, |хр_ПереданныеОСОстатки.Контрагент КАК Контрагент, |хр_ПереданныеОСОстатки.Номенклатура, |хр_ПереданныеОСОстатки.СерияНоменклатуры, |хр_ПереданныеОСОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.хр_ПереданныеОС.Остатки(&Период,) КАК хр_ПереданныеОСОстатки |"; Запрос.УстановитьПараметр("Период", Дата); Запрос.УстановитьПараметр("Контрагент", Контрагент); Если ОтборНоменклатура ИЛИ ОтборОрганизация ИЛИ ОтборКонтрагент Тогда Запрос.Текст = Запрос.Текст + " |ГДЕ |"; КонецЕсли; Если ОтборОрганизация Тогда Запрос.Текст = Запрос.Текст + " | (хр_ПереданныеОСОстатки.Организация = &Организация | ИЛИ хр_ПереданныеОСОстатки.Организация = &Организация) |"; Запрос.УстановитьПараметр("Организация", Организация); КонецЕсли; Если ОтборНоменклатура Тогда Запрос.Текст = Запрос.Текст + ?(ОтборОрганизация, "И ", "") + " | (хр_ПереданныеОСОстатки.Номенклатура = &Номенклатура | ИЛИ хр_ПереданныеОСОстатки.Номенклатура = &Номенклатура) |"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); КонецЕсли; Если ОтборКонтрагент Тогда Запрос.Текст = Запрос.Текст + ?(ОтборОрганизация ИЛИ ОтборНоменклатура, "И ", "") + " | хр_ПереданныеОСОстатки.Контрагент = &Контрагент |"; Запрос.УстановитьПараметр("Контрагент", Контрагент); КонецЕсли; Запрос.Текст = Запрос.Текст + " | |УПОРЯДОЧИТЬ ПО | Номенклатура, | Контрагент |"; Выб = Запрос.Выполнить().Выбрать(); /////////////////////// // Запрос: Остатки ) // /////////////////////// Пока Выб.Следующий() Цикл Обл.Параметры.Номенклатура = Выб.Номенклатура; Обл.Параметры.Остаток = Выб.КоличествоОстаток; Обл.Параметры.Контрагент = Выб.Контрагент; Обл.Параметры.Серияноменклатуры = Выб.Серияноменклатуры; ///////////////////////////// // ( Параметры расшифровки // ///////////////////////////// Обл.Параметры.Р_Контр = Выб.Номенклатура; ///////////////////////////// // Параметры расшифровки ) // ///////////////////////////// ТабДок.Вывести(Обл); КонецЦикла; Возврат ТабДок; КонецФункции |
|||
1
Паланик
25.03.13
✎
10:09
|
В ИЕРАРХИИ
|
|||
2
Паланик
25.03.13
✎
10:10
|
И условия к тексту запроса как-то не по феншую делаешь.
|
|||
3
Паланик
25.03.13
✎
10:13
|
| (хр_ПереданныеОСОстатки.Номенклатура = &Номенклатура
| ИЛИ хр_ПереданныеОСОстатки.Номенклатура = &Номенклатура) ... | (хр_ПереданныеОСОстатки.Организация = &Организация | ИЛИ хр_ПереданныеОСОстатки.Организация = &Организация) Это чтоб уж наверняка?) |
|||
4
Maxus43
25.03.13
✎
10:14
|
(2)(3) :)
|
|||
5
Паланик
25.03.13
✎
10:18
|
И при заполнении параметров, если параметры и колонки одноименные, то делай через
Пока Выб.Следующий() Цикл Обл.Параметры.Заполнить(); Обл.Параметры.Р_Контр = Выб.Номенклатура; ТабДок.Вывести(Обл); КонецЦикла; |
|||
6
Паланик
25.03.13
✎
10:19
|
Вот так:
Пока Выб.Следующий() Цикл Обл.Параметры.Заполнить(Выб); Обл.Параметры.Р_Контр = Выб.Номенклатура; ТабДок.Вывести(Обл); КонецЦикла; |
|||
7
Торин
25.03.13
✎
10:22
|
"отбор по элементам,а мне нужно чтоб было по группам и элементам" -- замените "хр_ПереданныеОСОстатки.Номенклатура = &Номенклатура" на "хр_ПереданныеОСОстатки.Номенклатура в ИЕРАРХИИ(&Номенклатура")
|
|||
8
Паланик
25.03.13
✎
10:34
|
хр_ПереданныеОСОстатки.Номенклатура = &Номенклатура ИЛИ хр_ПереданныеОСОстатки.Номенклатура = &Номенклатура
на хр_ПереданныеОСОстатки.Номенклатура в ИЕРАРХИИ(&Номенклатура") |
|||
9
Vladimir2503
25.03.13
✎
10:41
|
Если ОтборНоменклатура Тогда
Запрос.Текст = Запрос.Текст + ?(ОтборОрганизация, "И ", "") + " | (хр_ПереданныеОСОстатки.Номенклатура в ИЕРАРХИИ(&Номенклатура)) | или хр_ПереданныеОСОстатки.Номенклатура в ИЕРАРХИИ(&Номенклатура) |"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); КонецЕсли; Группу номенклатуры вывел ,сейчас другая проблема отбор по элементу контрагент не делает отбор |
|||
10
Maxus43
25.03.13
✎
10:42
|
(9) ты зачем дублируешь условие через ИЛИ то?
|
|||
11
Vladimir2503
25.03.13
✎
10:49
|
Большое спасибо всем помогли чайнику!!!
|
|||
12
Maxus43
25.03.13
✎
10:55
|
(11) ответь на (10), я щас не усну спокойно же.
Или ты специально гадишь производительность? ИЛИ отключает использование индексов зачастую |
|||
13
razlagator
25.03.13
✎
10:55
|
(10) товарищ овнокод пишет, не мешай
|
|||
14
Vladimir2503
25.03.13
✎
11:08
|
Maxus43
Я этот отчет не писал,он был написан до меня. |
|||
15
Maxus43
25.03.13
✎
11:19
|
(14) ну переписывай, это быдлокод
|
|||
16
Михаил Козлов
25.03.13
✎
11:34
|
(14) Мне кажется, проще переписать запрос в каком-нибудь из универсальных отчетов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |