![]() |
|
Подскажите по запросу. | ☑ | ||
---|---|---|---|---|
0
Повелитель
17.03.14
✎
08:53
|
Пишу отчет по номенклатуре. Типовая УТ.
Надо чтобы была возможность выбирать 2 типа любых цен + остаток. Проблема в том, что если не задать Тип цен, то остатки начинают умножаться на количество заведенных цен в справочнике. по идее если я хочу видеть только номенклатуру + остаток, без цен, то регистр цен заключенный в {} должен уходить из построителя, а он остается, вопрос почему? Вот запрос: ВЫБРАТЬ Н.Ссылка КАК Номенклатура, Н.НоменклатурнаяГруппа, Остатки.Склад, Остатки.КоличествоОстаток КАК Остаток, Цены1.Цена КАК Цена1, Цены1.ТипЦен КАК ТипЦен1 {ВЫБРАТЬ Номенклатура.*, НоменклатурнаяГруппа.*, Склад.*, Остаток, Цена1, ТипЦен1.*} ИЗ Справочник.Номенклатура КАК Н {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКонца, {(Склад) КАК Склад, (Номенклатура) КАК Номенклатура}) КАК Остатки ПО Н.Ссылка = Остатки.Номенклатура} {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, {(ТипЦен) КАК ТипЦен1, (Номенклатура) КАК Номенклатура}) КАК Цены1 ПО Н.Ссылка = Цены1.Номенклатура} {ГДЕ Н.Ссылка.* КАК Номенклатура, Н.НоменклатурнаяГруппа.*, Остатки.Склад.*, Остатки.КоличествоОстаток КАК Остаток, Цены1.Цена КАК Цена1, Цены1.ТипЦен.* КАК ТипЦен1} {УПОРЯДОЧИТЬ ПО Номенклатура.*, НоменклатурнаяГруппа.*, Склад.*, Остаток, Цена1, ТипЦен1.*} ИТОГИ СУММА(Остаток), МАКСИМУМ(Цена1) ПО ОБЩИЕ {ИТОГИ ПО Номенклатура.*, НоменклатурнаяГруппа.*, Склад.*} Имею на выход: УниверсальныйОтчет.ПостроительОтчета.ПолучитьЗапрос().Текст ВЫБРАТЬ Н.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Н ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКонца, Номенклатура В ИЕРАРХИИ(&Параметр1)) КАК Остатки ПО Н.Ссылка = Остатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, (Номенклатура В ИЕРАРХИИ(&Параметр2)) И ТипЦен = &Параметр7) КАК Цены1 ПО Н.Ссылка = Цены1.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, (Номенклатура В ИЕРАРХИИ(&Параметр3)) И ТипЦен = &Параметр9) КАК Цены2 ПО Н.Ссылка = Цены2.Номенклатура ГДЕ Н.Ссылка В ИЕРАРХИИ (&Параметр6) И Цены1.ТипЦен = &Параметр8 И Цены2.ТипЦен = &Параметр10 ИТОГИ ПО ОБЩИЕ, Номенклатура ИЕРАРХИЯ КАК Номенклатура АВТОУПОРЯДОЧИВАНИЕ |
|||
1
Повелитель
17.03.14
✎
08:56
|
(0) В первом запросе, неправильно выложил, нечайно удалил связку
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, {(ТипЦен) КАК ТипЦен2, (Номенклатура) КАК Номенклатура}) КАК Цены2 ПО Н.Ссылка = Цены2.Номенклатура} |
|||
2
Повелитель
17.03.14
✎
09:25
|
(0)
Реально ли получить на выходе построителя, вот такой запрос? ВЫБРАТЬ Н.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Н ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКонца, Номенклатура В ИЕРАРХИИ(&Параметр1)) КАК Остатки ПО Н.Ссылка = Остатки.Номенклатура ГДЕ Н.Ссылка В ИЕРАРХИИ (&Параметр6) И Цены1.ТипЦен = &Параметр8 И Цены2.ТипЦен = &Параметр10 ИТОГИ ПО ОБЩИЕ, Номенклатура ИЕРАРХИЯ КАК Номенклатура АВТОУПОРЯДОЧИВАНИЕ |
|||
3
Maxus43
17.03.14
✎
09:53
|
ну дак в ГДЕ у тебя что? Цены2, парвильно... значит обязательный.
Всё в скобки завёртывай |
|||
4
Maxus43
17.03.14
✎
09:54
|
это как ты на фейскотроле запретиш одному из сиамских близнецов зайти, а второго пропустишь. Они не разделяются, если что
|
|||
5
Maxus43
17.03.14
✎
09:55
|
(3) + точнее из Где это тупо убирай, параметры вирт таблицы же есть
|
|||
6
Повелитель
17.03.14
✎
10:02
|
(5) Спасибо, но не помогло.
Вроде все завернуто. Вот запрос сейчас: ВЫБРАТЬ Н.Ссылка КАК Номенклатура, Остатки.Склад, Остатки.КоличествоОстаток КАК Остаток, Цены1.Цена КАК Цена1, Цены1.ТипЦен КАК ТипЦен1, Цены2.Цена КАК Цена2, Цены2.ТипЦен КАК ТипЦен2 {ВЫБРАТЬ Номенклатура.*, Склад.*, Остаток, Цена1, Цена2, ТипЦен1.*, ТипЦен2.*} ИЗ Справочник.Номенклатура КАК Н {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКонца, {(Склад) КАК Склад, (Номенклатура) КАК Номенклатура}) КАК Остатки ПО Н.Ссылка = Остатки.Номенклатура} {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, {(ТипЦен) КАК ТипЦен1, (Номенклатура) КАК Номенклатура}) КАК Цены1 ПО Н.Ссылка = Цены1.Номенклатура} {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, {(ТипЦен) КАК ТипЦен2, (Номенклатура) КАК Номенклатура}) КАК Цены2 ПО Н.Ссылка = Цены2.Номенклатура} {ГДЕ Н.Ссылка.* КАК Номенклатура, Н.НоменклатурнаяГруппа.*, Остатки.Склад.*, Остатки.КоличествоОстаток КАК Остаток} {УПОРЯДОЧИТЬ ПО Номенклатура.*, Склад.*, Остаток, Цена1, Цена2, ТипЦен1.*, ТипЦен2.*} ИТОГИ СУММА(Остаток) ПО ОБЩИЕ {ИТОГИ ПО Номенклатура.*, Склад.*} |
|||
7
Maxus43
17.03.14
✎
10:16
|
что значит всё? сейчас в Выбор у тебя что-то не то... выбираешь ЦенЫ, а в скобках ЦенА.
|
|||
8
Maxus43
17.03.14
✎
10:17
|
из выбрать впринципе убери Цены1/2, оставь только в кв. скобках, на закладке построителя короче указывай необязательные, у убедись что галка "Обязательная" на таблицах не стоит
|
|||
9
Maxus43
17.03.14
✎
10:18
|
для тестирования юзай ПолучитьЗапрос
|
|||
10
Повелитель
17.03.14
✎
10:33
|
(9) Спасибо сейчас буду пробовать
|
|||
11
Повелитель
17.03.14
✎
12:07
|
Так и не получилось.
Вот запрос: ТекстЗапроса = "ВЫБРАТЬ | Н.Ссылка КАК Номенклатура, | Остатки.Склад, | Остатки.КоличествоОстаток КАК Остаток |{ВЫБРАТЬ | Номенклатура.*, | Склад.*, | Остаток, | Цены1.Цена КАК Цена1, | Цены2.Цена КАК Цена2} |ИЗ | Справочник.Номенклатура КАК Н | {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКонца, {(Склад) КАК Склад, (Номенклатура) КАК Номенклатура}) КАК Остатки | ПО Н.Ссылка = Остатки.Номенклатура} | {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, {(ТипЦен) КАК ТипЦен1, (Номенклатура) КАК Номенклатура}) КАК Цены1 | ПО Н.Ссылка = Цены1.Номенклатура} | {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, {(ТипЦен) КАК ТипЦен2, (Номенклатура) КАК Номенклатура}) КАК Цены2 | ПО Н.Ссылка = Цены2.Номенклатура} |{ГДЕ | Н.Ссылка.* КАК Номенклатура, | Остатки.Склад.*, | Остатки.КоличествоОстаток} |ИТОГИ | СУММА(Остаток) |ПО | ОБЩИЕ |{ИТОГИ ПО | Номенклатура.*, | Склад.*, | Остаток}"; Вот результат: ВЫБРАТЬ Н.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Н ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКонца, Номенклатура = &Параметр1) КАК Остатки ПО Н.Ссылка = Остатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, Номенклатура = &Параметр2) КАК Цены1 ПО Н.Ссылка = Цены1.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, Номенклатура = &Параметр3) КАК Цены2 ПО Н.Ссылка = Цены2.Номенклатура ГДЕ Н.Ссылка = &Параметр4 ИТОГИ ПО ОБЩИЕ, Номенклатура КАК Номенклатура АВТОУПОРЯДОЧИВАНИЕ А должно быть: ВЫБРАТЬ Н.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Н ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКонца, Номенклатура = &Параметр1) КАК Остатки ПО Н.Ссылка = Остатки.Номенклатура ГДЕ Н.Ссылка = &Параметр4 ИТОГИ ПО ОБЩИЕ, Номенклатура КАК Номенклатура АВТОУПОРЯДОЧИВАНИЕ |
|||
12
Повелитель
17.03.14
✎
12:54
|
Вопрос актуальный, как убрать лишние соединения из построителя?
|
|||
13
Crush
17.03.14
✎
13:20
|
Прокрути это в консоли запросов. И добавь цены в основную выборку.
|
|||
14
Повелитель
17.03.14
✎
13:35
|
Все наконец то нашел причину.
Все нормально работает если убрать параметр Номенклатура в левом соединении. Вот так: | {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, {(ТипЦен) КАК ТипЦен1}) Вместо так: | {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, {(ТипЦен) КАК ТипЦен1, (Номенклатура) КАК Номенклатура}) Отчет конечно строиться теперь медленно, но лишние соединения удаляет. Сейчас еще попробую как то вернуть параметр Номенклатуру. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |