Имя: Пароль:
1C
1С v8
нужна помощь с запросом
0 zippygrill
 
31.05.13
10:53
Хочу получить значения "срез последних на каждую дату".
Только в этот раз структура хранения данных немножко "сложновата" для меня(2 периодические регистры).
Есть основная таблица(в этом примере таблица с отгрузками), и 2 периодических регистров сведений. значение "срез последних на каждую дату" нужно получить из второго периодического регистра.
вот основная таблица:

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

Поле "ДатаСреза" буду использовать для соединение с остальными таблицами.
1-ый периодический регистр "ТипАкциза" имеет измерение Номенклатура и ресурс "ТипАкциза";
2-ой периодический регистр "СвойстваТипаАкциза" имеет измерение ТипАкциза и ресурсы "Ставка" и "ЗависитОтКрепость"

что-нибудь понятное написал?
1 zippygrill
 
31.05.13
10:56
начал так писать:

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   _ТипАкциза.Период КАК МаксПериодТипАкциза,
   втОсновная.Номенклатура,
   втОсновная.Количество
ПОМЕСТИТЬ втОсновнаяИМаксПериодКодаПродукции
ИЗ
   втОсновная КАК втОсновная
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений._АкцидентНоменклатуры_ТипАкциза КАК _ТипАкциза
       ПО втОсновная.Номенклатура = _ТипАкциза.Номенклатура
           И втОсновная.ДатаСреза >= _ТипАкциза.Период
;

дальше не знаю как соединить 2 регистр.
2 zippygrill
 
31.05.13
11:01
*ПОМЕСТИТЬ втОсновнаяИМаксПериодТипАкциза - опечатался
3 zippygrill
 
31.05.13
11:04
если взять и соединить 2 регистр по ТипАкциза с 1-ым регистром и потом еще добавить второе условие по ДатеСреза то будет ругатся что есть противоречие в связь.
4 zippygrill
 
31.05.13
11:12
ну?
5 zippygrill
 
31.05.13
11:18
дохлый номер чтоли?
6 zippygrill
 
31.05.13
11:23
или это настолько очевидно что никто не хочет писать? :)
7 shuhard
 
31.05.13
11:24
(6) тема обсосана до дыр
и для пятницы не пригодна
8 zippygrill
 
31.05.13
11:40
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений._АкцидентНоменклатуры_ТипАкциза КАК _ТипАкциза
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений._СвойстваТипаАкциза КАК _СвойстваТипаАкциза
           ПО _ТипАкциза.ТипАкциза = _СвойстваТипаАкциза.ТипАкциза
                       //тут по идее нужно еще условие по ДатеСреза?
       ПО втОсновная.Номенклатура = _ТипАкциза.Номенклатура
       И втОсновная.ДатаСреза >= _ТипАкциза.Период
9 zippygrill
 
03.06.13
08:47
ну направление подскажите?
10 Cyberhawk
 
03.06.13
08:58
11 zippygrill
 
03.06.13
09:00
(10) блин у меня 2 регистра. с одним не проблема для меня :)
12 zippygrill
 
03.06.13
09:08
сейчас еще раз позубрим ссылку!
13 zippygrill
 
03.06.13
09:41
коллеги, в итоге вышел вот такой запрос:
ошибся я в чем ни будь или нет?

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

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

СГРУППИРОВАТЬ ПО
   втОсновная.Номенклатура,
   втОсновная.Количество
;

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

СГРУППИРОВАТЬ ПО
   втОсновнаяИМаксПериодТипАкциза.Номенклатура,
   _ТипАкциза.ТипАкциза,
   _СвойстваТипаАкциза.ЗависитОтКрепости,
   _СвойстваТипаАкциза.СтавкаЗаЛитр
ИТОГИ
   СУММА(Количество)
ПО
   ТипАкциза
14 zippygrill
 
03.06.13
10:22
?