Имя: Пароль:
1C
1С v8
Различные результаты работы запроса в консоли и СКД
0 al_zzz
 
12.09.12
09:04
Требуется получить список товаров, у которых в течение дня поменялась цена. Вот такой вот запрос в консоли отрабатывает нормально, а в СКД ничего не выводит:
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПервых.Номенклатура,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПервых.Цена, 0) КАК ЦенаСтарая
ПОМЕСТИТЬ _0_ЦенаСтарая
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПервых
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПервых.Номенклатура,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПервых.Цена, 0) КАК ЦенаНовая
   ПОМЕСТИТЬ _1_ЦенаНовая
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(КонецПЕРИОДА(&НачалоПериода, ДЕНЬ), ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПервых
;



////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Ном.Ссылка КАК Номенклатура,
   _0_ЦенаСтарая.ЦенаСтарая,
   _1_ЦенаНовая.ЦенаНовая
ИЗ
   Справочник.Номенклатура КАК Ном
       ЛЕВОЕ СОЕДИНЕНИЕ _0_ЦенаСтарая КАК _0_ЦенаСтарая
       ПО _0_ЦенаСтарая.Номенклатура = Ном.Ссылка
       ЛЕВОЕ СОЕДИНЕНИЕ _1_ЦенаНовая КАК _1_ЦенаНовая
       ПО _1_ЦенаНовая.Номенклатура = Ном.Ссылка
Где _0_ЦенаСтарая.ЦенаСтарая <> _1_ЦенаНовая.ЦенаНовая

Если убираю условие, то ЦенаНовая равна цене старой. Т.е. СКД во второй ВТ использует вместо параметра "&КонецПериода" параметр "&НачалоПериода". Почему СКД так отрабатывает и как мне правильно получить эти данные? 1с8.1 УТ10.3
1 Ненавижу 1С
 
гуру
12.09.12
09:05
может ты в СКД неправильно параметры заполнил? ))
2 Alex S D
 
12.09.12
09:06
посмотри в консоле СКД результирующий запрос..
3 Liova
 
12.09.12
09:08
Срез берется на ту дату, на которую хочет СКД, а не на то, что указано в запросе.
http://1cskd.ru/2010/07/v-otchet-ne-popadayut-dannye-za-poslednij-den/
4 Ненавижу 1С
 
гуру
12.09.12
09:28
а где тут параметр &КонецПериода ?
5 al_zzz
 
12.09.12
10:02
(4) Не суть важно. КонецПЕРИОДА(&НачалоПериода, ДЕНЬ) = &КонецПериода.
(3)Однако, делаю уже даже так: http://vfl.ru/fotos/8f42da89916710.html
и использую &ОкончаниеПериода. Однако результат тот же.
В консоли КД результирующий запрос:
Отчет                                                            
Параметры данных:    "НачалоПериода = 01.01.2012 0:00:00
КонецПериода = 31.07.2012 0:00:00"                                                        
Отбор:                                                            
"ВЫБРАТЬ
   ЦеныНоменклатурыСрезПервых.Номенклатура КАК Номенклатура,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПервых.Цена, 0) КАК ЦенаСтарая
ПОМЕСТИТЬ _0_ЦенаСтарая
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПервых
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПервых.Номенклатура КАК Номенклатура,
   ЕСТЬNULL(ЦеныНоменклатурыСрезПервых.Цена, 0) КАК ЦенаНовая
ПОМЕСТИТЬ _1_ЦенаНовая
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ОкончаниеПериода, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПервых
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Ном.Ссылка КАК Номенклатура,
   _0_ЦенаСтарая.ЦенаСтарая КАК ЦенаСтарая,
   _1_ЦенаНовая.ЦенаНовая КАК ЦенаНовая,
   Ном.Представление КАК НоменклатураПредставление
ИЗ
   Справочник.Номенклатура КАК Ном
       ЛЕВОЕ СОЕДИНЕНИЕ _0_ЦенаСтарая КАК _0_ЦенаСтарая
       ПО (_0_ЦенаСтарая.Номенклатура = Ном.Ссылка)
       ЛЕВОЕ СОЕДИНЕНИЕ _1_ЦенаНовая КАК _1_ЦенаНовая
       ПО (_1_ЦенаНовая.Номенклатура = Ном.Ссылка)
ГДЕ
   _0_ЦенаСтарая.ЦенаСтарая <> _1_ЦенаНовая.ЦенаНовая"
Даже если я выбираю период год, результат - пустой.
Настройка самая элементарная - группировка детальные записи и вывод всех полей.
6 al_zzz
 
12.09.12
10:03
Какие будут идеи?
7 ChAlex
 
12.09.12
10:08
(6) - Напиши так:

ВЫБРАТЬ
   Ном.Ссылка КАК Номенклатура,
   isnull(_0_ЦенаСтарая.ЦенаСтарая,0) КАК ЦенаСтарая,
   isnull(_1_ЦенаНовая.ЦенаНовая,0) КАК ЦенаНовая
ИЗ
   Справочник.Номенклатура КАК Ном
       ЛЕВОЕ СОЕДИНЕНИЕ _0_ЦенаСтарая КАК _0_ЦенаСтарая
       ПО _0_ЦенаСтарая.Номенклатура = Ном.Ссылка
       ЛЕВОЕ СОЕДИНЕНИЕ _1_ЦенаНовая КАК _1_ЦенаНовая
       ПО _1_ЦенаНовая.Номенклатура = Ном.Ссылка

А условие в отборе СКД. Будет то же самое.
8 al_zzz
 
12.09.12
10:14
(7) http://vfl.ru/fotos/2303cd79916778.html
- новая и старая цена получаются равные.
9 ChAlex
 
12.09.12
10:16
(8) - ну а теперь покажите настройки отбора в СКД
10 al_zzz
 
12.09.12
10:41
С СКД в консоли отчетов ыразобрался - там всё в порядке. Очевидно дело в параметрах периода, которые устанавливаются вот в этой штуковине: http://infostart.ru/public/85059/(пользуюсь именно ею).
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.