Имя: Пароль:
1C
 
Количество() в СКД
0 Альбатрос
 
02.07.18
10:27
Кусок запроса из СКД
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаЕжедневныхОстатков.Номенклатура,
    ТаблицаЕжедневныхОстатков.Поставщик,
    ТаблицаЕжедневныхОстатков.ДатаГрафика,
    ТаблицаЕжедневныхОстатков.Количество
ПОМЕСТИТЬ ТаблицаОстатков
ИЗ
    ТаблицаЕжедневныхОстатков КАК ТаблицаЕжедневныхОстатков
ГДЕ
    ТаблицаЕжедневныхОстатков.Количество <> 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура,
    КОЛИЧЕСТВО(ТаблицаОстатков.ДатаГрафика) КАК КоличествоДнейСОстатком,
    ТаблицаОстатков.Поставщик
ИЗ
    ТаблицаОстатков КАК ТаблицаОстатков

СГРУППИРОВАТЬ ПО
    ТаблицаОстатков.Номенклатура,
    ТаблицаОстатков.Поставщик

КоличествоДнейСОстатком в итоге равно NULL, в консоли запросов все отрабатывает правильно. Что не так?
1 Ненавижу 1С
 
гуру
02.07.18
10:29
неправда, функция КОЛИЧЕСТВО не может давать значение NULL
2 Альбатрос
 
02.07.18
10:31
(1) Стоит уточнить, что я получаю результат программно:
    
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаСКД,ОтборСКД.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновкиДанных);ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТЧ= ПроцессорВывода.Вывести(ПроцессорКомпоновки);        
    //ЭтаОбработка.ТЧДокументов.Загрузить(ТЧ);
    ЗначениеВРеквизитФормы(ЭтаОбработка, "Объект");

Отладчиком смотрю ТЧ, там одна строка(отбор накладываю) поля заполнены, а КоличествоДнейСОстатком = неопределено
3 Малыш Джон
 
02.07.18
10:41
(1) может-может)

если строк таблице нет, а группировка есть, то добавляется строка как раз-таки с Null'ем.
4 Альбатрос
 
02.07.18
10:44
(3) Но строки то в таблице есть
5 Альбатрос
 
02.07.18
10:55
Бл*, голову уже сломал)))) ап
6 Малыш Джон
 
02.07.18
10:57
(4) именно в ТаблицеОстатков есть строки?
7 Альбатрос
 
02.07.18
10:59
(6) Да, точно есть. На той же схеме сделал из этой таблицы выборку, записи есть.
Опять же повторюсь, в консоли все отрабатывает на ура.
8 Tonik992
 
02.07.18
11:05
Вы пишите:
Отладчиком смотрю ТЧ, там одна строка(отбор накладываю) поля заполнены, а КоличествоДнейСОстатком = неопределено

Поэтому вам надо отладчиком посмотреть, что в МакетКомпоновкиДанных. Посмотрите, как выглядит результирующий запрос, возможно СКД формирует условия не так, как вы ожидаете.
9 Малыш Джон
 
02.07.18
11:06
(7) если в консоли один результат, а в СКД другой, значит или параметры разные, или СКД текст запроса меняет.
первое - можно в отладке посмотреть
второе - через консоль СКД посмотреть
10 Альбатрос
 
02.07.18
11:10
(8) (9) Решил тем, что поместил во временную таблицу, а из нее сделал выборку.
11 Tonik992
 
02.07.18
11:14
(10) это как? Избавились от СКД?
12 Альбатрос
 
02.07.18
11:19
(11) Вот так :)

ВЫБРАТЬ
    ТаблицаОстатков.Номенклатура,
    КОЛИЧЕСТВО(ТаблицаОстатков.ДатаГрафика) КАК КоличествоДнейСОстатком,
    ТаблицаОстатков.Поставщик
ПОМЕСТИТЬ Конечная
ИЗ
    ТаблицаОстатков КАК ТаблицаОстатков

СГРУППИРОВАТЬ ПО
    ТаблицаОстатков.Номенклатура,
    ТаблицаОстатков.Поставщик
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Конечная.Номенклатура,
    Конечная.КоличествоДнейСОстатком,
    Конечная.Поставщик,
13 Альбатрос
 
02.07.18
11:20
+(12) Это в запросе СКД
14 Малыш Джон
 
02.07.18
11:24
(13) значит СКД твой первоначальный запрос "оптимизировала")
15 Tonik992
 
02.07.18
11:25
(14) ага. Поэтому надо (9) способ пробовать.
16 Tonik992
 
02.07.18
11:28
А то малость говнокод получается
17 Альбатрос
 
02.07.18
11:34
(14) По-любому, время поджимает, сделаю пока в таком варианте, потом буду СКД курить. Всем спасибо!
18 Ненавижу 1С
 
гуру
02.07.18
11:35
(3) тогда будет 0
19 Малыш Джон
 
02.07.18
11:55
(18) да, для количества 0 будет.
Просто сталкивался с максимумом, поэтому и запомнил, что Null.
20 Малыш Джон
 
02.07.18
11:56
И ещё момент: так происходит когда есть группировка, но нет полей, по которым группируют, т.е. явно не случай из (0)
Программист всегда исправляет последнюю ошибку.