Имя: Пароль:
1C
1С v8
Разные результаты выполнения запроса в консоли и в СКД
, ,
0 KindLion
 
09.07.15
12:07
Столкнулся с тем, что запрос выдает разные результаты при выполнении в консоли запросов и в СКД.
В консоли отрабатывает правильно, в СКД - выдает не все данные.
С чем м.б. связано? Как лечить, подскажите, пожалуйста...
Запрос переписал уже несколько раз - результат одинаков :(

Платформа - 8.3.6.2014, в конфигурации включен режим совместимости с Версия 8.2.13
1 Mitriy
 
09.07.15
12:08
консолью компоновки данных и анализом запроса, который строит компоновка...
2 Лодырь
 
09.07.15
12:09
параметры проверь.
3 SeraFim
 
09.07.15
12:12
Связано с особенностью работы СКД)
"Количество различных" считаешь?
Или есть много временных таблиц?
4 Господин ПЖ
 
09.07.15
12:13
>С чем м.б. связано? Как лечить, подскажите, пожалуйста...

скд временами слишком умная

выкидывает таблицы если поля не участвуют в выводе в отчет
5 KindLion
 
09.07.15
12:20
(3) Виртуальные таблицы есть, да.
В одном варианте запроса их было 13, в другом - 5.
Это много?
6 KindLion
 
09.07.15
12:24
(4) Да, подозреваю ее в излишнем уме.
В запросе два запроса к одной виртуальной таблице с разными периодами. Похоже, СКД берет один (минимальный) период из двух.
7 KindLion
 
09.07.15
12:25
(4) Как можно предотвратить выкидывание таблиц?
8 Господин ПЖ
 
09.07.15
12:29
(7) роль поля - обязательное

>В запросе два запроса к одной виртуальной таблице с разными периодами.

а тут возможен другой эффект

"наложение" - собственные параметры vs стандартные
9 KindLion
 
09.07.15
12:32
(8) Не очень понял вопрос про собственные или стандартные параметры.
Я уже использовал и стандартный период, и руками даты вводил
10 Господин ПЖ
 
09.07.15
12:35
11 Cube
 
09.07.15
12:35
(0) Очередная жертва не указавщая параметры виртуальных таблиц на закладке "Компоновка" в запросе...
12 KindLion
 
09.07.15
12:52
(11) Очередная жертва скоропалительных выводов.
Про "компоновку" в запросе знаю.
Параметры там указал.
Возможно, с ошибкой... :(
13 KindLion
 
09.07.15
12:55
(11)
<code>
ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоПродаж,
    СУММА(ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот) КАК ВыручкаБезНДС,
    ПродажиОбороты.Период КАК Период
ПОМЕСТИТЬ вт_Продажи
{ВЫБРАТЬ
    Номенклатура.*,
    Период}
ИЗ
    РегистрНакопления.Продажи.Обороты(
            &НачалоПериода1,
            &КонецПериода,
            Регистратор,
            НЕ Номенклатура.Услуга
                И Номенклатура.ВидВоспроизводства = ЗНАЧЕНИЕ(Перечисление.ВидыВоспроизводстваНоменклатуры.Производство)) КАК ПродажиОбороты
ГДЕ
    ПродажиОбороты.Период >= &НачалоПериода
{ГДЕ
    ПродажиОбороты.Период}

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Период
;
</code>
14 Cube
 
09.07.15
12:55
(12) Ну раз знаешь, то я спокоен.
Нам угадать надо, что ты там понаписал?
15 Cube
 
09.07.15
12:59
(13) См (11)
У тебя не указаны.
16 KindLion
 
09.07.15
13:00
(15) ОК. Расскажи, пожалуйста, что и где дописать.
17 KindLion
 
09.07.15
13:04
(10) Спасибо огромное за ссылку.
Похоже, что текст внизу (после UPD) - это мой случай.
Только пока не соображу, как прикрутить это знание к моей башке, и, собственно, к запросу. :)
18 Cube
 
09.07.15
13:05
(16) Как-то так:

ИЗ
    РегистрНакопления.Продажи.Обороты(
            &НачалоПериода1 {(&НачалоПериода)},
            &КонецПериода {(&КонецПериода)},
            Регистратор,
            НЕ Номенклатура.Услуга
                И Номенклатура.ВидВоспроизводства = ЗНАЧЕНИЕ(Перечисление.ВидыВоспроизводстваНоменклатуры.Производство)) КАК ПродажиОбороты
ГДЕ
19 Cube
 
09.07.15
13:06
(18) Ой, очепятка... Исправляюсь:

ИЗ
    РегистрНакопления.Продажи.Обороты(
            &НачалоПериода1 {(&НачалоПериода1)},
            &КонецПериода {(&КонецПериода)},
            Регистратор,
            НЕ Номенклатура.Услуга
                И Номенклатура.ВидВоспроизводства = ЗНАЧЕНИЕ(Перечисление.ВидыВоспроизводстваНоменклатуры.Производство)) КАК ПродажиОбороты
ГДЕ
20 KindLion
 
09.07.15
13:08
(18), (19) - спасибо, да, все получилось!
21 Cube
 
09.07.15
13:09
(20) Пожалуйста)
И не делай "скоропалительных выводов" как в (12) =))
22 KindLion
 
09.07.15
13:16
(21) Ну, я понял что оба мы торопыги. :)
23 KindLion
 
09.07.15
13:22
(19)
Хм.. отвлеку тебя еще на секунду.
Я написал вот так:

ИЗ
    РегистрНакопления._ЕВ_УпрСебестоимость.Обороты(
            {(&НачалоПериода1)},
            {(&КонецПериода)},
            Месяц,
            Номенклатура В
                (ВЫБРАТЬ
                    вт_Продажи.Номенклатура
                ИЗ
                    вт_Продажи КАК вт_Продажи)) КАК _ЕВ_УпрСебестоимостьОбороты
{ГДЕ
    _ЕВ_УпрСебестоимостьОбороты.Период}

СГРУППИРОВАТЬ ПО
    _ЕВ_УпрСебестоимостьОбороты.Номенклатура,
    _ЕВ_УпрСебестоимостьОбороты.Период

Как более правильно?
24 KindLion
 
09.07.15
13:28
(23) О, сорри, не ту таблицу привел:

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоПродаж,
    СУММА(ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот) КАК ВыручкаБезНДС,
    ПродажиОбороты.Период КАК Период
ПОМЕСТИТЬ вт_Продажи
{ВЫБРАТЬ
    Номенклатура.*,
    Период}
ИЗ
    РегистрНакопления.Продажи.Обороты(
            {(&НачалоПериода1)},
            {(&КонецПериода)},
            Регистратор,
            НЕ Номенклатура.Услуга
                И Номенклатура.ВидВоспроизводства = ЗНАЧЕНИЕ(Перечисление.ВидыВоспроизводстваНоменклатуры.Производство)) КАК ПродажиОбороты
ГДЕ
    ПродажиОбороты.Период >= &НачалоПериода
{ГДЕ
    ПродажиОбороты.Период}

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Период
;
25 Cube
 
09.07.15
13:35
(24) Для работы в СКД можно и так и так, но в (19) более универсально, если придется отладить запрос в консоли не нужно будет заморачиваться с прописыванием параметров в текст запроса...
26 Одинесю
 
09.07.15
13:39
(25) Воистину Велик!
27 TormozIT
 
гуру
10.07.15
02:25
Есть инструмент для отладки компоновки https://www.youtube.com/watch?v=0LKGaFo9tXw