![]() |
![]() |
|
Конструкция выбор когда тогда конец как | ☑ | ||
---|---|---|---|---|
0
masenshi
18.06.09
✎
11:12
|
Имеетются данные и мне нужно из строк сделать столбцы, чтобы отчет был удобнее для восприятия. Все бы хорошо, но в одном из столбцов, где имеются отризательные числа при втором запросе они суммируются как положительные и в результате сумма получается неверной
СУММА(ВЫБОР КОГДА а.Организация = &Орг1 ТОГДА а.Разница КОНЕЦ) КАК РазницаОрг1, СУММА(ВЫБОР КОГДА а.Организация = &Орг1 ТОГДА а.Долг КОНЕЦ) КАК ДолгОрг1, СУММА(ВЫБОР КОГДА а.Организация = &Орг1 ТОГДА а.Стоимость КОНЕЦ) КАК СтоимостьОрг1, СУММА(ВЫБОР КОГДА а.Организация = &Орг2 ТОГДА а.Разница КОНЕЦ) КАК РазницаОрг2, СУММА(ВЫБОР КОГДА а.Организация = &Орг2 ТОГДА а.Долг КОНЕЦ) КАК ДолгОрг2, СУММА(ВЫБОР КОГДА а.Организация = &Орг2 ТОГДА а.Стоимость КОНЕЦ) КАК СтоимостьОрг2 В полях "стоимость" только положительные значения в результате первого запроса и по ней все проходит нормально, а вот в полях "долг" в первом запросе есть отрицательные значения, а выбираются в результате представленного запроса они как положительные. В чем ошибка, как исправить? |
|||
1
Ненавижу 1С
гуру
18.06.09
✎
11:15
|
(0) где тут второй запрос?
за построение таких запросов убивать надо, соедини 2 подзапроса |
|||
2
masenshi
18.06.09
✎
11:15
|
хотя вру. выбираются они как отрицательные но в итоге все равно сумма слишком большая чем должна быть
|
|||
3
masenshi
18.06.09
✎
11:18
|
(0) подскажи примерно что ты имеешь в виду.
Вот весь запрос, если это поможет: ВЫБРАТЬ с.Ссылка КАК Контрагент, д.Организация КАК Организация, СУММА(д.СуммаОстаток) КАК ДолгКонтрагентаПоСчетам ПОМЕСТИТЬ а ИЗ Справочник.Контрагенты КАК с ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ д.Контрагент КАК Контрагент, д.ДоговорКонтрагента.Организация КАК Организация, д.СуммаОстаток КАК СуммаОстаток ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК д ГДЕ (НЕ д.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка))) КАК д ПО с.Ссылка = д.Контрагент СГРУППИРОВАТЬ ПО с.Ссылка, д.Организация ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СУММА(м.Стоимость) КАК Стоимость, с.Контрагент КАК Контрагент, с.Организация КАК Организация ПОМЕСТИТЬ неотпр ИЗ РегистрСведений.СтоимостьМеста КАК м ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ с.Место КАК Место, МАКСИМУМ(с.Ссылка.Контрагент) КАК Контрагент, МАКСИМУМ(с.Ссылка.Организация) КАК Организация ИЗ Документ.Счет.Основная КАК с ГДЕ с.Ссылка.Проведен СГРУППИРОВАТЬ ПО с.Место) КАК с ПО м.Место = с.Место ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВЫБОР КОГДА э.Место.ТипМеста = ЗНАЧЕНИЕ(Перечисление.ТипыМест.ЗапакованноеМесто) ТОГДА б.МестоИсточник ИНАЧЕ э.Место КОНЕЦ КАК место, э.Ссылка.ДатаОтправления КАК ДатаОтправления, э.Ссылка КАК Экспедирование ИЗ Документ.Экспедирование.основная КАК э ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СодержаниеМеста КАК б ПО э.Место = б.Место ГДЕ э.Ссылка.Проведен И э.Ссылка.СкладОтправитель = &Склад И э.Ссылка.ДатаОтправления <= &МояДата) КАК э ПО (с.Место = э.место) ГДЕ с.Место ЕСТЬ НЕ NULL И э.место ЕСТЬ NULL И м.Стоимость ЕСТЬ НЕ NULL СГРУППИРОВАТЬ ПО с.Контрагент, с.Организация ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ а.Контрагент, СУММА(ВЫБОР КОГДА а.Организация = &Орг1 ТОГДА а.Разница КОНЕЦ) КАК РазницаОрг1, СУММА(ВЫБОР КОГДА а.Организация = &Орг1 ТОГДА а.Долг КОНЕЦ) КАК ДолгОрг1, СУММА(ВЫБОР КОГДА а.Организация = &Орг1 ТОГДА а.Стоимость КОНЕЦ) КАК СтоимостьОрг1, СУММА(ВЫБОР КОГДА а.Организация = &Орг2 ТОГДА а.Разница КОНЕЦ) КАК РазницаОрг2, СУММА(ВЫБОР КОГДА а.Организация = &Орг2 ТОГДА а.Долг КОНЕЦ) КАК ДолгОрг2, СУММА(ВЫБОР КОГДА а.Организация = &Орг2 ТОГДА а.Стоимость КОНЕЦ) КАК СтоимостьОрг2 ИЗ (ВЫБРАТЬ ЕСТЬNULL(а.Контрагент, н.Контрагент) КАК Контрагент, ЕСТЬNULL(а.Организация, н.Организация) КАК Организация, ВЫРАЗИТЬ(ЕСТЬNULL(а.ДолгКонтрагентаПоСчетам, 0) - ЕСТЬNULL(н.Стоимость, 0) КАК ЧИСЛО(20, 2)) КАК Разница, а.ДолгКонтрагентаПоСчетам КАК Долг, н.Стоимость КАК Стоимость ИЗ а КАК а ПОЛНОЕ СОЕДИНЕНИЕ неотпр КАК н ПО а.Контрагент = н.Контрагент И а.Организация = н.Организация ГДЕ ЕСТЬNULL(а.Организация, н.Организация) ЕСТЬ НЕ NULL ) КАК а СГРУППИРОВАТЬ ПО а.Контрагент ИТОГИ СУММА(РазницаОрг1), СУММА(ДолгОрг1), СУММА(СтоимостьОрг1), СУММА(РазницаОрг2), СУММА(ДолгОрг2), СУММА(СтоимостьОрг2) ПО ОБЩИЕ |
|||
4
masenshi
18.06.09
✎
11:19
|
кажется я нашел косяк
|
|||
5
masenshi
18.06.09
✎
12:20
|
не нашел. Думал дело в повторяющемся псевдониме, но я изменил один псевдоним а проблема все-равно осталась той жей
|
|||
6
hhhh
18.06.09
✎
12:37
|
в регистре накопления есть вид движения Приход и Расход. Что-то ты его не анализируешь.
|
|||
7
masenshi
18.06.09
✎
12:48
|
(6) У меня результат запроса, где поля
организация Долг Стоимость орг1 5 3 орг2 -6 4 Я хочу (последней частью запроса) из строк сделать столбцы, но по одному (и только) из полей итоговое значение становится больше. Не могу понять почему |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |