|
Результат исполнения запроса и результат СКД | ☑ | ||
---|---|---|---|---|
0
al_zzz
09.06.12
✎
11:58
|
Хочу получить с помощью СКД продажи оптовых складов:
ВЫБРАТЬ ПродажиОбороты.Номенклатура, ПродажиОбороты.КоличествоОборот ИЗ РегистрНакопления.Продажи.Обороты( &НачалоПериода, &КонецПериода, Регистратор, Номенклатура <> &ПустоеЗначение И (НЕ Контрагент В ИЕРАРХИИ (&СобственныеКонтрагенты)) {Номенклатура.*, (ДокументПродажи.Склад).* КАК Склад}) КАК ПродажиОбороты Задаю отбор ДокументПродажи.Склад.ВидСклада = Перечисления.ВидыСкладов.Оптовый. Некоторые позиции не выводятся, в то время, как запрос: ВЫБРАТЬ ПродажиОбороты.Номенклатура, ПродажиОбороты.КоличествоОборот ИЗ РегистрНакопления.Продажи.Обороты( &НачалоПериода, &КонецПериода, Регистратор, Номенклатура <> &ПустоеЗначение И (НЕ Контрагент В ИЕРАРХИИ (ы)) И Номенклатура=&Номенклатура и ДокументПродажи.Склад.ВидСклада = &Вид) КАК ПродажиОбороты в консоли считает верно. В чем разница между исполнением данных запросов? Почему так получается? |
|||
1
Cube
09.06.12
✎
12:04
|
(0) Уверен, что период одинаковый указал? :)
|
|||
2
Cube
09.06.12
✎
12:04
|
+(1) Сто пудово не попадают позиции с временем 23:59:59... :)
|
|||
3
ChAlex
09.06.12
✎
12:04
|
(0) Внимательно смотрите какие условия и где накладываете. Выводить будет точно одно и тоже, если все правильно укажете. может вы условие указываете на уровне группировки, ане отчета. Может не включен доступ к выбору реквизитов полей (ведь скалад.видсклада - реквизит поля) и т.п.
|
|||
4
ChAlex
09.06.12
✎
12:05
|
(+2) - поддерживаю
|
|||
5
ChAlex
09.06.12
✎
12:06
|
(2) -более того весь день, а не секунда :)
|
|||
6
al_zzz
09.06.12
✎
12:08
|
(5) Подскажите, как сделать, чтоб весь день попал?
|
|||
7
al_zzz
09.06.12
✎
12:10
|
(5)В параметрах СКД стоит КонецПериода(&КонецПериода,"День"). Но дело точно не в этом - продажа в середине периода.
|
|||
8
ChAlex
09.06.12
✎
12:11
|
(7) - вы наверное в запрос тогда не тот период устанавливаете - и получаете разный результат.
|
|||
9
ChAlex
09.06.12
✎
12:12
|
(7) - суть в том, что запрос элементарно простой и голову здесь ломать сильно негде. Все работате - это точно. А вот что вы в ограничения и параметры устанавливаете в обоих случаях - это уже вопрос другой и основной
|
|||
10
al_zzz
09.06.12
✎
12:14
|
(8) Нет, период точно верный. Причем, когда в отборе выбираю вид склада "Розничный", то отрабатывает корректно. А вот по оптовым не хочет
|
|||
11
Cube
09.06.12
✎
12:15
|
(6) Так весь последний день не попадает?
Как устанавливаешь период в СКД? Программно? Код в студию! |
|||
12
MrStomak
09.06.12
✎
12:16
|
В СКД отбор проставится не только на Склад в ДокументПродажи, но и на Склад в Регистраторе
|
|||
13
Нуф-Нуф
09.06.12
✎
12:17
|
скд можно выполнить в консоли скд и посмотреть результирующий запрос со всеми отборами. и сравнить
|
|||
14
al_zzz
09.06.12
✎
12:18
|
(11)НачалоПериода = ЭтаФорма.ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
НачалоПериода.Использование = Истина; НачалоПериода.Значение = НачалоМесяца(ТекущаяДата())-60*60*24*366; КонецПериода = ЭтаФорма.ОтчетОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода")); КонецПериода.Использование = Истина; КонецПериода.Значение = НачалоМесяца(ТекущаяДата()) - 1; Это при открытии. Период точно корректен, так как данные за год беру, а продажа в середине периода была. |
|||
15
MrStomak
09.06.12
✎
12:18
|
Во всяком случае тут синоним "Склад" задан для поля "ДокументПродажи.Склад", попробуй задать уникальный синоним и ставить отбор по нему
|
|||
16
Cube
09.06.12
✎
12:21
|
(14) Красавчик!))
Вместо: КонецПериода.Значение = НачалоМесяца(ТекущаяДата()) - 1; пиши: КонецПериода.Значение = Новый Граница(КонецДня(НачалоМесяца(ТекущаяДата()) - 1), ВидГраницы.Включая); |
|||
17
al_zzz
09.06.12
✎
12:23
|
(16) Ок! :)
(15) Убрал "Как Склад" - не помогло. |
|||
18
Cube
09.06.12
✎
12:23
|
(14) "а продажа в середине периода была" - опа, не заметил.... Всё равно, ты где-то напутал)
|
|||
19
Нуф-Нуф
09.06.12
✎
12:25
|
посмотри в отладчике скомпонованный запрос у скд
|
|||
20
MrStomak
09.06.12
✎
12:26
|
(16) Не просто убрать "как склад" а поставить уникальный синоним типа "СкладПродажи" и отбор ставить на него - тогда ты гарантируешь что СКД не найдёт больше нигде поля Склад и не проставит отбор.
|
|||
21
al_zzz
09.06.12
✎
12:26
|
(19) Я нуб, не очень понимаю, как это сделать...
|
|||
22
MrStomak
09.06.12
✎
12:27
|
(16) А помоему надо просто НачалоМесяца(ТекущаяДата()), потому что это будет как раз то же самое что Новый Граница(КонецДня(НачалоМесяца(ТекущаяДата()) - 1), ВидГраницы.Включая)
|
|||
23
Нуф-Нуф
09.06.12
✎
12:28
|
в модуле отчета создай процеду ПриКомпоновкеРезультата, поставь там точку остановка и посмотри что в схеме и в настройках,
поидее там уже должно быть все готово для вывода, если не ошибаюсь |
|||
24
Cube
09.06.12
✎
12:29
|
(22) Нет, не то же...
|
|||
25
MrStomak
09.06.12
✎
12:29
|
(23) Там еще нет скомпонованного макета компоновки, его надо программно компоновать через процессор компоновки...
|
|||
26
MrStomak
09.06.12
✎
12:32
|
(24) Когда мы говорим о границы на основании даты, а не о границе на основании момента времени, то разницы нет - в 0 секунд следующего дня не попадают докуметы, проведенные в 00:00:00, так же как в 23:59:59 не попадают документы, проведенные в 23:59:59
|
|||
27
Нуф-Нуф
09.06.12
✎
12:33
|
автор, выполни свой отчет в консоли скд и посмотри результирующий запрос
|
|||
28
Cube
09.06.12
✎
12:33
|
(26) Хм, возможно... Проверять лень)
|
|||
29
Нуф-Нуф
09.06.12
✎
12:34
|
а вообще это спасет http://www.spec8.ru/kurs-po-skd-besplatno
|
|||
30
al_zzz
09.06.12
✎
12:45
|
(19) Запрос в макете компановки:
"ВЫБРАТЬ¶ ПродажиОбороты.Номенклатура КАК Номенклатура,¶ ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,¶ ПродажиОбороты.Номенклатура.ABCКлассификация КАК НоменклатураABCКлассификация,¶ ПродажиОбороты.Номенклатура.Код КАК НоменклатураКод,¶ ПродажиОбороты.Номенклатура.XYZКлассификация КАК НоменклатураXYZКлассификация,¶ ПродажиОбороты.Номенклатура.Ликвидность КАК НоменклатураЛиквидность,¶ ПродажиОбороты.Номенклатура.Наименование КАК НоменклатураНаименование,¶ ПродажиОбороты.Номенклатура.НомерПозиции КАК НоменклатураНомерПозиции¶ИЗ¶ РегистрНакопления.Продажи.Обороты(¶ &П,¶ &П2,¶ Регистратор,¶ ((Номенклатура <> &ПустоеЗначение¶ И (НЕ Контрагент В ИЕРАРХИИ (&СобственныеКонтрагенты))) И ДокументПродажи.Склад.ВидСклада = &П3) И Номенклатура = &П4) КАК ПродажиОбороты" (29) Проходил. Возможно, стоит ещё на раз, но пока нет времени на это. |
|||
31
al_zzz
09.06.12
✎
12:48
|
(30) + Решительно ни чем не отличается запрос, от того, который формируется, если по розничным делать.
|
|||
32
MrStomak
09.06.12
✎
12:54
|
Попробуй убрать остальные отборы, кроме вида склада - остануться ли различия. То есть убрать все периоды, контрагента и номенклатуру - в поля результата выводи количествооборот и сравнивай
|
|||
33
ChAlex
09.06.12
✎
12:57
|
(6) - в оборотах период интервала дат включается в выборку и не надо ничего мутить. и если время начала периода 00:00:00 а время окончания периода 23:59:59 то документы в выборку и со временем 00:00:00 попадут и со временем 23:59:59
|
|||
34
ChAlex
09.06.12
✎
13:00
|
(33) - не (6) а (26) :)
|
|||
35
ChAlex
09.06.12
✎
13:02
|
(31) - по-моему ваша проблемеа лежит не в тексте запроса, а в интерактивном моементе формирования макета и установки отборов. Отбор, установленный на весь отчет или на группировку - отличается. Нужно анализировать логу отборов, что получаете, на каком этапе фильтруете и т.д.
|
|||
36
ChAlex
09.06.12
✎
13:03
|
сомнение в периоде - отключите всякие филтры и выведите детальные записи. потом по-одному включайте отборы и анализируйте - и найдете момент, в котором ваши действия расходятся с логикой запроса
|
|||
37
al_zzz
09.06.12
✎
13:10
|
Продажа попадает куда нужно, когда отключаю условие:
(НЕ Контрагент В ИЕРАРХИИ (&СобственныеКонтрагенты)). Однако, контрагент, по которому данная продажа, не в иерархии группы "Собственные контрагенты". Чушь какая-то... |
|||
38
al_zzz
09.06.12
✎
13:12
|
(37) Как такое возможно?
|
|||
39
MrStomak
09.06.12
✎
13:28
|
(38) Например, если в СобственныхКонтрагентах есть пустая ссылка
|
|||
40
MrStomak
09.06.12
✎
13:32
|
+ посмотреть контрагента именно в движении по регистру, т.к. отбор на это поле стоит, а не на то, что в документе продажи
|
|||
41
al_zzz
09.06.12
✎
13:32
|
Всё, нашел ошибку! Параметр по умолчанию "СобственныеКонтрагенты" неправильно написал и СКД не смогла его найти!
Зато теперь умею устанавливать корректно границу периода! Всем спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |