Имя: Пароль:
1C
1С v8
помогите с запросом
,
0 Голубушка
 
03.12.12
16:36
запрос в СКД

Вложенный 1 (
  Вложенный 2 (
     ( табл1
         ОБЪЕДИНИТЬ ВСЕ
       табл2  
        ОБЪЕДИНИТЬ ВСЕ
       табл3
           здесь поле получаем

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

**********
 Периоды группируем как различные

       ....
       Табл11  
        )
   Периоды группируем как максимум )

Периоды группируем как максимум)


в кансоле выдает правильный период 4(недели)
при запуске обработки выдает 3 .

если ставим периодичность Месяц , то выдает 3

т.е. выдает всегда как быдто переодичность это месяц
1 Голубушка
 
03.12.12
16:43
т.е. не как
Периоды группируем как различные

а как

Периоды группируем как количесвто различные
2 Wobland
 
03.12.12
16:43
йа не гатов к токим ленгвестическим изыскам
3 Spieluhr
 
03.12.12
17:08
>> в кансоле

при Ельцине такого не было
4 sapphire
 
03.12.12
17:09
Автор и стена плача.
Серия № 2 эпизод 1.

Мотор!
5 Голубушка
 
03.12.12
17:15
(3) ну простите .. конечно в консоли , я вам больше скажу, при Брежневе не было гораздо больше
6 Голубушка
 
03.12.12
17:17
(4) у вас есть имеются соображения ?
по какой причине СКД уменьшает полученную цифру ?
7 GLazNik
 
03.12.12
17:18
(6) процент за посреднические услуги?
8 Голубушка
 
03.12.12
17:28
я бы подумала на оформление или посмотрела группировку ресурсов , что я и сделала ..
думаю вы мне врядли поможете
9 Wobland
 
03.12.12
17:29
(8) ну почему же. дождись мастеров телепатии, без этого в (0) никак
10 Irek-kazan
 
03.12.12
17:32
(7) переводить будешь?
11 Голубушка
 
03.12.12
18:15
Спасибо за помощь .
Объясняю :

СКД перемалывает запрос , если посмотреть консолью СКД ,если перед выводом посмотреть запрос в компоновщике отладчиком и потом сравнить с тем, что писали для набора , то видно отличие

Конструкция

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

Лекарство :
писать конструкцию четко попорядку который есть в перечислении т.е.

День,Неделя,Декада,Месяц,Квартал,Полугодие,Год

и все :) работает
12 sapphire
 
03.12.12
18:19
(11) Так лучше не писать вообще
13 Wobland
 
03.12.12
18:19
(11) четко попорядку тут ни при чём
14 Голубушка
 
03.12.12
18:42
(13) .. да не причем , можно и не по порядку ,главное чтоб
КОГДА &Периодичность = ЗНАЧЕНИЕ Перечисление.Периодичность.Месяц)
 ТОГДА НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ)
был последним
15 Wobland
 
03.12.12
18:44
(14) обратно ересь какая-то
16 Голубушка
 
03.12.12
18:46
(12) не было альтернативы, такая конструкция не от того , что запросы писать не могу, нужен отбор по хозоперации , а хозоперация в РН является реквизитом, достать могу только из физ таблицы .. ну или из виртуальной обороты с периодичностью Регистратор , т.е. по любому все записи регистра отрабатывать , только наворотов потом больше
17 Голубушка
 
03.12.12
18:47
(15)ну что ты споришь :) установлено имерическим путем ,
я вообще думала чекнусь , когда увидила что СКД с запросом сделала
18 Wobland
 
03.12.12
18:50
(17) плин, говори по-русски. не верю
19 Адимр
 
03.12.12
18:54
(0) Классные сиськи.
20 Wobland
 
03.12.12
18:55
эмпирическим что-ли? так сразу и не сообразишь
21 Sasha_H
 
03.12.12
18:55
СКД не переламывает запрос, а оптимизирует его. Если есть поля помещены в запрос которые не используются она может их отсечь сама.
22 Sasha_H
 
03.12.12
18:57
Используйте тогда обороты в любом случае, при использовании физ.таблицы не факт, что вы корректно отработаете остаток.
23 Sasha_H
 
03.12.12
18:59
я когда также пропалился. В консоле запросов отрабатывается запрос на ура, а в СКД нет определенных данных. Вот как оказалось, что я пихал в запрос поле (я там использовал много вложенных таблиц при этом) которое на мнение СКД оно никогда будет не использовано. Пришлось полностью переписать запрос.
24 Голубушка
 
03.12.12
19:00
по русски

в конфигураторе создаем источник данных типа запрос .. ну и пишем сам запрос

запускаем приложение видим неправильную цифру

копируем запрос в консоль , выполняем .. видим правильную цифру


получаем запрос из
МакетКомпоновки   = КомпоновщикМакета.Выполнить(....)

сравниваем с тем что писали видим , что в конструкции приведенной выше , на каком бы месте не писалось

КОГДА &Периодичность = ЗНАЧЕНИЕ Перечисление.Периодичность.Месяц)
 ТОГДА НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ)

СКД "оптимизирует" как
КОГДА &Периодичность = ЗНАЧЕНИЕ Перечисление.Периодичность.День)
 ТОГДА НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ)

если ниже стоит день, ну или другое значение

вывод

КОГДА &Периодичность = ЗНАЧЕНИЕ Перечисление.Периодичность.Месяц)
 ТОГДА НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ)

должно быть последним в операторе выбора.
25 Голубушка
 
03.12.12
19:05
(22) ну да обороты с периодом регистратор , тащить хозоперацию (не у каждого регистратора есть).. т.е. какие то операции задавать жестко по регистратору .. отбирать ,
во вложеном все равно складывать по периодам (так же как и раньше ) , только период это теперь доп поле .. ну нафик .. все равно отрабатываем все записи до единой , с физ таблицей 1 раз , с виртуальной минимум 2
26 GANR
 
03.12.12
19:10
(11) А если в затрашнем релизе платформы 8.x СКД по-другому работать будет? В 8.0, скажем, сортировка выборки запроса по умолчанию проводилась, а в 8.1 - перестали сортировать, с уелью ускорения, видимо. Так на моей практике из-за этого весь завод 2 дня на ушах стоял, пока эту особенность искали.
27 Sasha_H
 
03.12.12
19:11
Судя по запросу СКД его оптимизирует ну это мое ИМХО
28 Sasha_H
 
03.12.12
19:17
Лекарство :
писать конструкцию четко попорядку который есть в перечислении т.е.

А и это как вариант. Есть и такая особенность ;)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.