|
Получение итогов по многим реквизитам | ☑ | ||
---|---|---|---|---|
0
Profenixxx
04.12.14
✎
11:23
|
Добрый день коллеги!.
Делаю запрос с дополнительными реквизитами формы, т.е. что бы они отражались в отчете. Дополнительных реквизитов 3 на один документ, беда в том что они являются общими в одном регистре. Как можно это отделить по 3 колонкам реквизитам, Например есть реквизит С/Ф - значение 666, Дата с/ф - значение 11.11.11, ИНН - 777777. В запросе соединил регистр сведений и документ, начали задваиваться суммы т.е. по каждому реквизиту сумма, как правильно сделать подобный запрос? ВЫБРАТЬ РАЗЛИЧНЫЕ СчетФактураВыданный.Ссылка КАК Документ, СчетФактураВыданный.Дата, СчетФактураВыданный.ВидСчетаФактуры, СчетФактураВыданный.Контрагент, ЗначенияСвойствОбъектов.Свойство КАК РеквизитыКонтр, ЗначенияСвойствОбъектов.Значение КАК Значение, СчетФактураВыданный.Сумма КАК Сумма, СчетФактураВыданный.СуммаНДС КАК СуммаНДС ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО (ЗначенияСвойствОбъектов.Объект = СчетФактураВыданный.Ссылка) ГДЕ СчетФактураВыданный.Дата >= &ДатаНачала И СчетФактураВыданный.Дата <= &ДатаКонец И СчетФактураВыданный.Проведен = ИСТИНА СГРУППИРОВАТЬ ПО ЗначенияСвойствОбъектов.Объект, СчетФактураВыданный.Ссылка, ЗначенияСвойствОбъектов.Свойство, ЗначенияСвойствОбъектов.Значение |
|||
1
spiller26
04.12.14
✎
11:41
|
Используй это
ВЫБОР КОГДА ЗначенияСвойствОбъектов.Значение.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.СвойстваОбъектов.ИНН)ТОГДА "111" ИНАЧЕ "222" КОНЕЦ КАК Значение |
|||
2
spiller26
04.12.14
✎
11:43
|
И почему соединение "ВНУТРЕННЕЕ"?
он тебе не только задвоит, затроит ну и по нарастающей. |
|||
3
spiller26
04.12.14
✎
11:47
|
"Свойств" сколько у данного типа документа?
В ПВХ "Свойства объектов" зайди, посмотри. |
|||
4
Profenixxx
04.12.14
✎
11:55
|
На Левое поставил, итоги так же подбиваются .
В ПВХ Код, Наименование реквизита, Тип значения |
|||
5
Profenixxx
04.12.14
✎
12:02
|
Но все таки это не дает результата.
ЗначенияСвойствОбъектов.Значение.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.СвойстваОбъектов.ИНН)ТОГДА "111" Это не дает результата, не находит ПВХ в запросе, если отсортировать проще так. ЗначенияСвойствОбъектов.Свойство.Наименование = "С/ф" Но мне ведь данные нужны с реквизитами всеми Т.е. и с/ф и ИНН/КПП и датой, но при этом в разных колонках и с не задаваемым результатом. |
|||
6
hhhh
04.12.14
✎
12:13
|
(5)
Документ.СчетФактураВыданный КАК СчетФактураВыданный Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1 ПО (ЗначенияСвойствОбъектов1.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов1.Свойство = &Свойство1 Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов2 ПО (ЗначенияСвойствОбъектов2.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов2.Свойство = &Свойство2 Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов3 ПО (ЗначенияСвойствОбъектов3.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов3.Свойство = &Свойство3 Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов4 ПО (ЗначенияСвойствОбъектов4.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов4.Свойство = &Свойство4 Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов5 ПО (ЗначенияСвойствОбъектов5.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов5.Свойство = &Свойство5 Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов6 ПО (ЗначенияСвойствОбъектов6.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов6.Свойство = &Свойство6 |
|||
7
hhhh
04.12.14
✎
12:14
|
нет так
Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1 ПО (ЗначенияСвойствОбъектов1.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов1.Свойство = &Свойство1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов2 ПО (ЗначенияСвойствОбъектов2.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов2.Свойство = &Свойство2 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов3 ПО (ЗначенияСвойствОбъектов3.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов3.Свойство = &Свойство3 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов4 ПО (ЗначенияСвойствОбъектов4.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов4.Свойство = &Свойство4 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов5 ПО (ЗначенияСвойствОбъектов5.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов5.Свойство = &Свойство5 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов6 ПО (ЗначенияСвойствОбъектов6.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов6.Свойство = &Свойство6 |
|||
8
Profenixxx
04.12.14
✎
12:44
|
(7)
Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО (ЗначенияСвойствОбъектов.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов.Свойство = &Свойство1 "Ругается на Свойство1 (Значение не является значением объектного типа)" {ВнешняяОбработка.УниверсальнаяКонсольОтчетов.МодульОбъекта(428)}: Значение не является значением объектного типа (ФлДоступенПользователю) Если СтрокаПараметр.ФлДоступенПользователю Тогда |
|||
9
Profenixxx
04.12.14
✎
16:35
|
Разобрался это был параметр в итоге вообще ничего не выводит.
ВЫБРАТЬ РАЗЛИЧНЫЕ СчетФактураВыданный.Ссылка КАК Документ, СчетФактураВыданный.Дата, СчетФактураВыданный.ВидСчетаФактуры, СчетФактураВыданный.Контрагент, ЗначенияСвойствОбъектов.Свойство КАК РеквизитыКонтр, ЗначенияСвойствОбъектов.Значение, СчетФактураВыданный.Сумма КАК Сумма, СчетФактураВыданный.СуммаНДС КАК СуммаНДС ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО (ЗначенияСвойствОбъектов.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов.Свойство = &Свойство1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов2 ПО (ЗначенияСвойствОбъектов2.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов.Свойство = &Свойство2 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов3 ПО (ЗначенияСвойствОбъектов3.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов.Свойство = &Свойство3 ГДЕ СчетФактураВыданный.Дата >= &ДатаНачала И СчетФактураВыданный.Дата <= &ДатаКонец И СчетФактураВыданный.Проведен = ИСТИНА СГРУППИРОВАТЬ ПО ЗначенияСвойствОбъектов.Объект, СчетФактураВыданный.Ссылка, ЗначенияСвойствОбъектов.Свойство, ЗначенияСвойствОбъектов.Значение, СчетФактураВыданный.Дата, СчетФактураВыданный.ВидСчетаФактуры, СчетФактураВыданный.Контрагент, СчетФактураВыданный.Сумма, СчетФактураВыданный.СуммаНДС |
|||
10
Profenixxx
04.12.14
✎
17:59
|
Ап.
|
|||
11
s_ustinov
04.12.14
✎
18:59
|
(10) от честно, не читал твой код, но:
из регистра сперва достаешь ВСЁ, что надо (со всеми группировками), но без свойств документа и тп просто есть поле регистратор а потом вкладываешь это внутрь вложенного запроса и соединяешь с таблицей документов по регистратору и из документа вытаскиваешь все, что нужно элементарно же нафига городить? |
|||
12
РазДва
04.12.14
✎
19:06
|
(9) Поменяй на левое соединение, в условиях соединения указываешь не правильные таблицы, надо указывать соответствующие: ЗначенияСвойствОбъектов3.Свойство = &Свойство3
|
|||
13
Profenixxx
04.12.14
✎
19:40
|
(11) Да это как вариант. Но вот в чем проблема тогда в итогах.
https://yadi.sk/i/lFP6HO6Fd9tXa Вот такая хрень идет, это по итогам т.е. в документе реальная сумма 1,18 Так же внешние параметры не образуют отдельные колонки (что желательно) |
|||
14
Profenixxx
04.12.14
✎
20:58
|
(12) То же не вариант, приводит к тому же значению по сути что я посылал. Почему суммы с 1го документа по реквезитам тащатся непонятно.
|
|||
15
РазДва
05.12.14
✎
09:58
|
(14) Чего не вариант?
У тебя в запросе внутреннее соединение, условие соединения в котором всегда ЛОЖЬ, так как соединяется таблица ЗначенияСвойствОбъектов2, а условие на другую таблицу ЗначенияСвойствОбъектов.Свойство = &Свойство2. Естественно в выборке не будет ничего: ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов2 ПО (ЗначенияСвойствОбъектов2.Объект = СчетФактураВыданный.Ссылка) И ЗначенияСвойствОбъектов.Свойство = &Свойство2 Также при внутреннем соединении ты получишь выпадение документов из выборки, если будет хотя бы одно свойство не заполнено. |
|||
16
s_ustinov
05.12.14
✎
10:01
|
(13) ты просто посчитать нужные итоги можешь? без дополнительных колонок?
если да - покажи запрос и составь отдельный запрос, как ты получаешь ТОЛЬКО дополнительные реквизиты, без итогов и выложи здесь эти ДВА запроса - так и быть, найду пару минут ))) |
|||
17
Ёпрст
05.12.14
✎
10:09
|
(0)
делай так, что ле: ВЫБРАТЬ СчетФактураВыданный.Ссылка, ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.СвойстваОбъектов.ВасяПупкин) //или пиши через параметр, как ниже ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ КАК Значение1, ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство2 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ КАК Значение2, ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство3 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ КАК Значение2 ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО (ЗначенияСвойствОбъектов.Объект = СчетФактураВыданный.Ссылка) И (ЗначенияСвойствОбъектов.Свойство В (&СписокСвойств)) в СписокСвойств запихаешь все виды свойств, или перечисли их через запятую в тексте запроса через Значение(), если не хочешь пользовать параметр. |
|||
18
Profenixxx
05.12.14
✎
19:26
|
(17) Да Взял твой запрос и добавил сумму по с/ф, вот что вышло:
ВЫБРАТЬ СчетФактураВыданный.Ссылка, ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство1 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ КАК Значение1, ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство2 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ КАК Значение2, СчетФактураВыданный.Сумма ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО (ЗначенияСвойствОбъектов.Объект = СчетФактураВыданный.Ссылка) И (ЗначенияСвойствОбъектов.Свойство В (&СписокСвойств)) https://yadi.sk/i/lFP6HO6Fd9tXa Сумму 2 раза прошла по 300 и реквизит на разных уровнях столбца что я делаю не так? |
|||
19
Profenixxx
05.12.14
✎
19:26
|
||||
20
vicof
05.12.14
✎
19:29
|
(18) Два левых соединения надо, или сколько у тебя там этих свойств
|
|||
21
Profenixxx
05.12.14
✎
19:43
|
(16) Просто 2 запроса с суммами, легко:
ВЫБРАТЬ СчетФактураВыданный.Ссылка, СчетФактураВыданный.Сумма, СчетФактураВыданный.Дата ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный ГДЕ СчетФактураВыданный.Дата >= &ДатаНач И СчетФактураВыданный.Дата <= &ДатаКон и 2 запрос без итогов ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект, ЗначенияСвойствОбъектов.Свойство, ЗначенияСвойствОбъектов.Значение ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный, РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ СчетФактураВыданный.Дата >= &ДатаНач И СчетФактураВыданный.Дата <= &ДатаКон |
|||
22
Profenixxx
05.12.14
✎
19:44
|
(16) Так и стоит.
|
|||
23
Profenixxx
09.12.14
✎
11:30
|
Решение:
ВЫБРАТЬ СчетФактураВыданный.Ссылка, МАКСИМУМ(ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство1 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ) КАК Значение1, МАКСИМУМ(ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство2 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ) КАК Значение2, МАКСИМУМ(ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство3 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ) КАК Значение3, СУММА(СчетФактураВыданный.СуммаНДС) КАК СуммаНДС, СУММА(СчетФактураВыданный.Сумма) КАК Сумма ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО (ЗначенияСвойствОбъектов.Объект = СчетФактураВыданный.Ссылка) СГРУППИРОВАТЬ ПО СчетФактураВыданный.Ссылка |
|||
24
РазДва
09.12.14
✎
11:54
|
(23) Ты похоже перебором задачу решаешь?
Ответь на два вопроса: 1. Зачем тут СУММА(СчетФактураВыданный.Сумма) и что оно должно суммировать? 2. Что будет, если хотя бы одно свойство не заполнено? 3. И как при наличии функции СУММЫ, у тебя получилось не просуммировать сумму? |
|||
25
Profenixxx
09.12.14
✎
12:03
|
1. Просто просумиировал.
2. Свойство это фактически дополнительный реквизит, он фиксированный, если не будет значение заполненно вернет NULL 3. Сумма по сути никак не влияет на отчет. |
|||
26
Profenixxx
09.12.14
✎
12:03
|
(24) Самое главное результат :)
|
|||
27
РазДва
09.12.14
✎
12:12
|
(25)
1. Ага, понял, перебором. 2. Врёшь, не вернёт. 3. Сумма есть, но её как бы нет. Опять же не верю, что не влияет. |
|||
28
Profenixxx
09.12.14
✎
12:22
|
2. В любом случаи в незаполненном реквизите стоит NULL
3. Да влияет, увидел. Суммирует реквизиты и суммы. Вот такой будет более правильный: ВЫБРАТЬ СчетФактураВыданный.Ссылка, МАКСИМУМ(ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство1 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ) КАК Значение1, МАКСИМУМ(ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство2 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ) КАК Значение2, МАКСИМУМ(ВЫБОР КОГДА ЗначенияСвойствОбъектов.Свойство = &НужноеСвойство3 ТОГДА ЗначенияСвойствОбъектов.Значение ИНАЧЕ NULL КОНЕЦ) КАК Значение3, СчетФактураВыданный.СуммаНДС КАК СуммаНДС, СчетФактураВыданный.Сумма КАК Сумма ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО (ЗначенияСвойствОбъектов.Объект = СчетФактураВыданный.Ссылка) ГДЕ СчетФактураВыданный.Дата >= &ДатаНач И СчетФактураВыданный.Дата <= &ДатаКон СГРУППИРОВАТЬ ПО СчетФактураВыданный.Ссылка, СчетФактураВыданный.СуммаНДС, СчетФактураВыданный.Сумма |
|||
29
Profenixxx
09.12.14
✎
12:22
|
(27) Наверное так
|
|||
30
РазДва
09.12.14
✎
12:26
|
(28) 2. В незаполненном реквизите ничего не стоит, особенно ярко в твоем запросе это проявится, когда незаполены все реквизиты.
Ага, более или менее правильный, немножко беременный чернокожий инвалид ) |
|||
31
Profenixxx
09.12.14
✎
12:40
|
(30) Хорошо, как проявится?, вот запустил его.
https://img-fotki.yandex.ru/get/16098/11194132.4/0_b2941_e34f910b_X5L |
|||
32
РазДва
09.12.14
✎
12:58
|
(31) Если не будет ни одной записи по документу в РегистрСведений.ЗначенияСвойствОбъектов, то внутреннее соединение "выкинет" его из результата, по картинке у тебя либо не внутреннее соединение, либо есть ещё другие свойства.
|
|||
33
Profenixxx
09.12.14
✎
16:05
|
(32) Все что в запросе ни чего не исправлял и не добавлял.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |