Имя: Пароль:
1C
 
Конструкция выбор когда тогда конец как
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

Я хочу (последней частью запроса) из строк сделать столбцы, но по одному (и только) из полей итоговое значение становится больше. Не могу понять почему