Имя: Пароль:
1C
1С v8
В запросе не вычисляются поля. Не могу понять почему.
0 Klesk666
 
03.10.13
18:06
поля ОтгрузкаИПрочее и ВозвратИПрочее
Хотя как минимум РасчетыСКлиентамиОстаткиИОбороты.СуммаРасход больше 0

ВЫБРАТЬ
    СУММА(ВЫБОР
            КОГДА ДенежныеСредстваБезналичные.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
                ТОГДА ДенежныеСредстваБезналичные.Сумма
            ИНАЧЕ 0
        КОНЕЦ) КАК ВозвратКлиентуБезнал,
    СУММА(ВЫБОР
            КОГДА ДенежныеСредстваБезналичные.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                ТОГДА ДенежныеСредстваБезналичные.Сумма
            ИНАЧЕ 0
        КОНЕЦ) КАК ПоступлениеОтКлиентаБезнал,
    ДенежныеСредстваБезналичные.АналитикаУчетаПоПартнерам
ПОМЕСТИТЬ ТБезнал
ИЗ
    РегистрНакопления.ДенежныеСредстваБезналичные КАК ДенежныеСредстваБезналичные
ГДЕ
    (ДенежныеСредстваБезналичные.Период МЕЖДУ &НачалоПериода И &КонецПериода
            ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1))

СГРУППИРОВАТЬ ПО
    ДенежныеСредстваБезналичные.АналитикаУчетаПоПартнерам
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(ВЫБОР
            КОГДА ДенежныеСредстваНаличные.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
                ТОГДА ДенежныеСредстваНаличные.Сумма
            ИНАЧЕ 0
        КОНЕЦ) КАК ВозвратКлиентуНал,
    СУММА(ВЫБОР
            КОГДА ДенежныеСредстваНаличные.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                ТОГДА ДенежныеСредстваНаличные.Сумма
            ИНАЧЕ 0
        КОНЕЦ) КАК ПоступлениеОтКлиентаНал,
    ДенежныеСредстваНаличные.АналитикаУчетаПоПартнерам
ПОМЕСТИТЬ ТНал
ИЗ
    РегистрНакопления.ДенежныеСредстваНаличные КАК ДенежныеСредстваНаличные
ГДЕ
    (ДенежныеСредстваНаличные.Период МЕЖДУ &НачалоПериода И &КонецПериода
            ИЛИ &КонецПериода = ДАТАВРЕМЯ(1, 1, 1))

СГРУППИРОВАТЬ ПО
    ДенежныеСредстваНаличные.АналитикаУчетаПоПартнерам
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,
    РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам.Контрагент КАК Контрагент,
    ВЫБОР
        КОГДА РасчетыСКлиентамиОстаткиИОбороты.СуммаНачальныйОстаток > 0
            ТОГДА РасчетыСКлиентамиОстаткиИОбороты.СуммаНачальныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК НачОстатокДолгПартнера,
    ВЫБОР
        КОГДА РасчетыСКлиентамиОстаткиИОбороты.СуммаНачальныйОстаток < 0
            ТОГДА -РасчетыСКлиентамиОстаткиИОбороты.СуммаНачальныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК НачОстатокНашДолг,
    РасчетыСКлиентамиОстаткиИОбороты.СуммаПриход КАК УвеличениеВсего,
    РасчетыСКлиентамиОстаткиИОбороты.СуммаРасход КАК УменьшениеВсего,
    ТБезнал.ВозвратКлиентуБезнал,
    ТБезнал.ПоступлениеОтКлиентаБезнал,
    ТНал.ВозвратКлиентуНал,
    ТНал.ПоступлениеОтКлиентаНал,
    ВЫБОР
        КОГДА РасчетыСКлиентамиОстаткиИОбороты.СуммаКонечныйОстаток > 0
            ТОГДА РасчетыСКлиентамиОстаткиИОбороты.СуммаКонечныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК КонОстатокДолгПартнера,
    ВЫБОР
        КОГДА РасчетыСКлиентамиОстаткиИОбороты.СуммаКонечныйОстаток < 0
            ТОГДА -РасчетыСКлиентамиОстаткиИОбороты.СуммаКонечныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК КонОстатокНашДолг,
    РасчетыСКлиентамиОстаткиИОбороты.СуммаРасход - ТБезнал.ВозвратКлиентуБезнал - ТНал.ВозвратКлиентуНал КАК ОтгрузкаИПрочее,
    РасчетыСКлиентамиОстаткиИОбороты.СуммаПриход - ТБезнал.ПоступлениеОтКлиентаБезнал - ТНал.ПоступлениеОтКлиентаНал КАК ВозвратИПрочее
ИЗ
    РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Период, , ) КАК РасчетыСКлиентамиОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ ТБезнал КАК ТБезнал
        ПО РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам = ТБезнал.АналитикаУчетаПоПартнерам
        ЛЕВОЕ СОЕДИНЕНИЕ ТНал КАК ТНал
        ПО РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам = ТНал.АналитикаУчетаПоПартнерам

УПОРЯДОЧИТЬ ПО
    РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам.Партнер
1 viktor_vv
 
03.10.13
18:21
Вот здесь могут быть NULL

ТБезнал.ВозвратКлиентуБезнал - ТНал.ВозвратКлиентуНал

соотвественно и результат будет NULL.
сделай через ISNULL().
2 Klesk666
 
03.10.13
19:15
(1) спасибо
думал если от 1 отнять Ничто будет 1
3 Wobland
 
03.10.13
19:39
думал, нулл - это ничто?
4 Мимохожий Однако
 
03.10.13
19:40
NULL - черная дыра, с которой рядом никто не живет.
5 Klesk666
 
03.10.13
21:48
ну кстати в модуле это бы вызвало ошибку несоответствия типов, а запрос лоялен, а на выходе получается фигня, лучше бы ошибку выдавал наверно.
6 viktor_vv
 
03.10.13
21:55
(5) Так тут  и нет ошибки , просто арифметические операции с null дают null, а логические дают Ложь.
7 Klesk666
 
03.10.13
22:04
(6)
нифига

&НаКлиенте
Процедура Команда1(Команда)
    А = 1+Null;
КонецПроцедуры

{Форма.Форма.Форма(4)}: Преобразование значения к типу Число не может быть выполнено
    А = 1+Null;
8 Euguln
 
03.10.13
22:07
(7) Не надо путать исполняемый код и запрос, там разные механизмы работают.
Программист всегда исправляет последнюю ошибку.