Имя: Пароль:
1C
1С v8
В запросе условие на субконто работает избирательно
0 ixijixi
 
14.07.14
15:35
ВЫБРАТЬ
    АвансовыйОтчетПолучено.ДокументАванса КАК ДокументАванса,
    АвансовыйОтчетПолучено.Ссылка.Сотрудник.Контрагент
ПОМЕСТИТЬ ПОЛУЧЕНОАВАНСОВ
ИЗ
    Документ.АвансовыйОтчет.Получено КАК АвансовыйОтчетПолучено
ГДЕ
    АвансовыйОтчетПолучено.Ссылка В(&Ссылка)
;

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

СГРУППИРОВАТЬ ПО
    ЖурналПроводокЕПСБУДвиженияССубконто.КФО,
    ЖурналПроводокЕПСБУДвиженияССубконто.СчетДт,
    ЖурналПроводокЕПСБУДвиженияССубконто.КПСДт,
    ЖурналПроводокЕПСБУДвиженияССубконто.КЭКДт,
    ЖурналПроводокЕПСБУДвиженияССубконто.СчетКт,
    ЖурналПроводокЕПСБУДвиженияССубконто.КПСКт,
    ЖурналПроводокЕПСБУДвиженияССубконто.КЭККт


Если проверять условие на субконто только Дт или Кт, то выборка не пустая, при совместной проверке (Дт или Кт) - пустая. В чем может быть затык?
1 Лефмихалыч
 
14.07.14
15:36
запрос не читал. Видимо затык в том, что любое сравнение с NULL дает ложь
2 kosts
 
14.07.14
15:37
(0) Наверное одновременно нет строк когда есть контрагент и там и там.
3 kosts
 
14.07.14
15:42
(2) А нет. Что-то не заметил ИЛИ.
4 Лефмихалыч
 
14.07.14
15:46
Регистратор В (ВЫБРАТЬ ) И
(ВЫБОР КОГДА ТОГДА СубконтоДт1 В (ВЫБРАТЬ
КОГДА ТОГДА СубконтоКт1 В (ВЫБРАТЬ

http://i.imgur.com/NaYVpsH.png
5 ixijixi
 
14.07.14
15:51
(1) так проверку на NULL исключаю:
КОГДА СубконтоКт1 ССЫЛКА Справочник.Контрагенты
ТОГДА СубконтоКт1 В (ВЫБРАТЬ...
6 ixijixi
 
14.07.14
15:57
+(1) к тому же ВЫБРАТЬ ИСТИНА ИЛИ ЛОЖЬ на выходе даст ИСТИНА
7 ixijixi
 
14.07.14
16:13
ап
8 ixijixi
 
14.07.14
16:24
Неужели никаких мыслей?
9 ixijixi
 
14.07.14
16:34
бджад! Вынес условие из виртуальной таблицы в оператор ГДЕ и фсё заработало! Капец, 2 дня потратил!
10 SSSSS_AAAAA
 
14.07.14
16:36
(5) Вызывает большие сомнения.
В качестве иллюстрации код на T-SQL

declare @var int
set @var = null
select case when @var < 0 then '111' else '222' end

В переводе на 1с:

Перем пер
пер = null
Выбрать выбор когда пер > 0 тогда "111" иначе "222" конец

При любом сравнении с любым числом результат будет один и тот же - 222
11 kosts
 
14.07.14
16:39
(9) Чисто попробовать, вот так попробуй:

ВЫБОР
КОГДА СубконтоДт1 ССЫЛКА Справочник.Контрагенты и СубконтоДт1 В (ВЫБРАТЬ Т.СотрудникКонтрагент ИЗ ПОЛУЧЕНОАВАНСОВ КАК Т) ТОГДА ИСТИНА
КОГДА СубконтоКт1 ССЫЛКА Справочник.Контрагенты и СубконтоКт1 В (ВЫБРАТЬ Т.СотрудникКонтрагент ИЗ ПОЛУЧЕНОАВАНСОВ КАК Т) ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
12 ixijixi
 
14.07.14
16:44
(11) Не, так тоже не пашет =(
13 ixijixi
 
14.07.14
16:45
вопчем, вопрос решен в (9)
14 kosts
 
14.07.14
16:47
(13) Значит все таки null...