Имя: Пароль:
1C
1С v8
Срез на дату производственного календаря
, ,
0 ХочуСпец
 
21.08.12
15:32
Хочу выводить на каждую дату производственного календаря, отфильтрованного за период, некий показатель (срез последних) из периодического РС (периодичность День). Выводит хрень.

Что сделал не так?

ВЫБРАТЬ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
ПОМЕСТИТЬ ВТ_Общая
ИЗ
   РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_Общая.ДатаКалендаря,
   МАКСИМУМ(Показатель.Период) КАК Период
ПОМЕСТИТЬ ВТ_МаксПериод
ИЗ
   ВТ_Общая КАК ВТ_Общая
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Показатель КАК Показатель
       ПО ВТ_Общая.ДатаКалендаря >= Показатель.Период

СГРУППИРОВАТЬ ПО
   ВТ_Общая.ДатаКалендаря
;

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

ВЫБРАТЬ
   ВТ_Досье.ДатаКалендаря,
   ВТ_Досье.Показатель КАК Показатель
ИЗ
   Показатели КАК Показатели
1 DrShad
 
21.08.12
15:36
что ты ему прописал выводить то и выводит
2 DrShad
 
21.08.12
15:36
+(1) а что именно ты от него ожидал непонятно
3 Maxus43
 
21.08.12
15:37
где Срез последних?
4 ХочуСпец
 
21.08.12
15:37
(2) срез последних на каждую дату календаря
5 hhhh
 
21.08.12
15:38
(4) а измерений вообще нет у регистра, что ли?
6 ХочуСпец
 
21.08.12
15:40
(5) есть
нужны общие значения на каждую дату. Но при группировке по дате календаря, все равно не выходит аленький цветочек

вообще делал по аналогии (временные таблицы)
http://1cskd.ru/2010/10/srez-poslednix-na-kazhduyu-datu-v-skd/
7 hhhh
 
21.08.12
15:41
(6) последнюю строчку запроса объясни. Что за Показатели? И откуда они возникают?
8 ХочуСпец
 
21.08.12
15:45
(7)
итоговый запрос:

ВЫБРАТЬ
   Показатели.ДатаКалендаря,
   Показатели.Показатель КАК Показатель
ИЗ
   ВТ_Показатели КАК Показатели
9 hhhh
 
21.08.12
15:48
(8) а если на эту дату 500 записей в регистре Тебе нужно, чтобы все 500 вывелись?
10 ХочуСпец
 
21.08.12
15:50
(9) группирую записи по Дате календаря. На каждую дату - один итоговый показатель
11 hhhh
 
21.08.12
15:52
(10) ну вот запрос, который вытягивает показатели, предпоследний:

ВЫБРАТЬ
   ВТ_МаксПериод.ДатаКалендаря,
   ЕСТЬNULL(Показатель.ПроцентЗаполнения, 0) КАК Показатель
ПОМЕСТИТЬ ВТ_Показатели
ИЗ
   ВТ_МаксПериод КАК ВТ_МаксПериод
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Показатель КАК Показатель
       ПО ВТ_МаксПериод.Период = Показатель.Период

никаких группировок не видно, фигачишь целиком весь регистр
12 ХочуСпец
 
21.08.12
15:55
(11) да это понятно. Группирую потом, просто здесь не показал
13 ХочуСпец
 
21.08.12
15:59
не сходятся значения.
выбираю срез последних на определенную дату. Показатели группирую. Не сходится с (0)
14 ХочуСпец
 
21.08.12
16:24
Может так будет более понятно:

ВЫБРАТЬ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
ПОМЕСТИТЬ ВТ_Общая
ИЗ
   РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   ВТ_Общая.ДатаКалендаря,
   МАКСИМУМ(Показатель.Период) КАК Период
ПОМЕСТИТЬ ВТ_МаксПериод
ИЗ
   ВТ_Общая КАК ВТ_Общая
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Показатель КАК Показатель
       ПО ВТ_Общая.ДатаКалендаря >= Показатель.Период

СГРУППИРОВАТЬ ПО
   ВТ_Общая.ДатаКалендаря
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   ВТ_МаксПериод.ДатаКалендаря,
   ЕСТЬNULL(Показатель.ПроцентЗаполнения, 0) КАК Показатель
ПОМЕСТИТЬ ВТ_Показатели
ИЗ
   ВТ_МаксПериод КАК ВТ_МаксПериод
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Показатель КАК Показатель
       ПО ВТ_МаксПериод.Период = Показатель.Период
;

ВЫБРАТЬ
   Показатели.ДатаКалендаря,
   Сумма(Показатели.Показатель) КАК Показатель
ИЗ
   ВТ_Показатели КАК Показатели
СГРУППИРОВАТЬ ПО
Показатели.ДатаКалендаря
15 ХочуСпец
 
21.08.12
16:29
напомню периодичность РС "Показатель" День. Т.е. записи скажем на 01.08 будут с периодом 01.08.12 000000
16 kumena
 
21.08.12
16:33
это зачем?
ВЫБРАТЬ
   Показатели.ДатаКалендаря,
   Сумма(Показатели.Показатель) КАК Показатель
ИЗ
   ВТ_Показатели КАК Показатели
СГРУППИРОВАТЬ ПО
Показатели.ДатаКалендаря

если на каждую дату календаря по одному значению
и что вообще хочется получить то?
17 ХочуСпец
 
21.08.12
16:38
(16) У РС "Показатель" есть измерения.

Суммарный показатель по всем измерениям
18 ХочуСпец
 
21.08.12
16:56
Попробовал сделать так:

ВЫБРАТЬ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
ПОМЕСТИТЬ ВТ_Календарь
ИЗ
   РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
   РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Общая.ДатаКалендаря,
   СУММА(Показатели.Показатель) КАК Показатель
ИЗ
   ВТ_Календарь КАК Общая
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Показатель КАК Показатели
       ПО (Показатели.Период В
               (ВЫБРАТЬ ПЕРВЫЕ 1
                   ПоказателиПериод.Период
               ИЗ
                   РегистрСведений.Показатель КАК ПоказателиПериод
               ГДЕ
                   ПоказателиПериод.Период <= Общая.ДатаКалендаря
               УПОРЯДОЧИТЬ ПО
                   ПоказателиПериод.Период УБЫВ))

СГРУППИРОВАТЬ ПО
   Общая.ДатаКалендаря


НО СИТУАЦИИ ЭТО НЕ ИЗМЕНИЛО:
на 01.08 Показатель = 150.

Хотя если отбирать РегистрСведений.ПоказательСрезПоследних(НаДату) и сгруппировать показатель = 50
19 ХочуСпец
 
21.08.12
17:11
Ситуация следующая:

на 01.08 Показатель совпал со срезом последних,

но

на 10.08 Срез последних = 190

из моего запроса на 10.08 = 20
20 ХочуСпец
 
21.08.12
17:47
Проанализировал ситуацию:

на 30.07.12 автоматом был заполнен РС "Показатели".

на 01.08 - 06.08 Запрос отрабатывает правильно (в этот период РС не редактировался)

с 07.08 начались ручные добавления в РС.

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

Что же не так в запросе?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший