Имя: Пароль:
1C
1С v8
Соединение таблиц по дате. Как???
0 suvolod
 
16.07.12
18:10
Запросом сделал такую таблицу:

ВЫБРАТЬ
   НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, ДЕНЬ) КАК ДатаДок,
   "РНК № " + РеализацияТоваровУслугТовары.Ссылка.Номер КАК ВидДок,
   РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
   РеализацияТоваровУслугТовары.Номенклатура,
   РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары

Как мне ее правильно соединить с регистром сведений ЦеныНоменклатуры в зависимости от даты документа?

Т.е. мне нужно вот что: пусть у меня в запрос попало две записи:

14.07.12 "Ведро цинковое" ""
15.07.12 "Ведро цинковое" ""

на 14 число закупочная цена была 300 руб; а на 15 - 400 руб. (ператор документом Установка цен номенклатуры завел новую цену закупа на 15 число). Тогда после соединения исходной таблицы с регистром цен у меня результат должен быть таким:


14.07.12 "Ведро цинковое" "" 300
15.07.12 "Ведро цинковое" "" 400
1 Classic
 
16.07.12
18:16
(0)
Геморно, если записи в РС не на каждый день.
Соединяй со всей таблицей РС с условием РС.Период <= РеализацияТоваровУслугТовары.Ссылка.Дата а потом группируй
2 suvolod
 
16.07.12
18:20
спасибо за наводку, попробую...
Хотя.. тоже геморно кажется. Может, есть способ соединить как-то проще? Фактически мне нужен срезпоследних по регистру ЦеныНоменклатуры. Но - на каждую строку исходной таблицы
3 Classic
 
16.07.12
18:21
(2)
Отмечусь, потому что менее геморного способа такой достаточно распространенной задачи я не знаю.
Может кто подскажет :)
4 AlexNew
 
16.07.12
18:23
два левых соединения РС Цены с самим собой, чтобы второй вылетал за границы.
5 suvolod
 
16.07.12
18:26
а можно пример? смысла сей манипуляции догнать не могу
6 Strogg
 
16.07.12
18:28
А если цены собрать вложенным запросом с группировкой по периодам, а уж потом соединять?
7 andrewks
 
16.07.12
18:29
можно использовать коррелированный подзапрос
8 Classic
 
16.07.12
18:31
(7)
Если бы они были
9 Kashemir
 
16.07.12
18:34
Здесь подобная задача v8: v8: SQL запрос - выбор строк с максимальной датой с корреляционными и без
10 andrewks
 
16.07.12
18:35
(8) а разве их нет?
11 hohol
 
16.07.12
18:38
сначало максимум по периоду,  с той же таблицей регистра с объединением период и к этому таблицу документа с датой <= .

зы
эти все виртуальные таблицы, только мировозрение одынэсника портят.
12 Classic
 
16.07.12
18:38
(9)
В каком посте там корреляционный подзапрос?
(10)
Всегда был уверен, что нет. Но товарищ из (9) говорит, что есть
13 andrewks
 
16.07.12
18:40
(12) тоже раньше думал, что в 1Ц их нет. но с пару недель назад в одной из веток глаза раскрыли
14 Kashemir
 
16.07.12
18:41
(12) в 10
15 hohol
 
16.07.12
18:41
+(11) в общем нужно одну и туже таблицу регистра объединить с собой по периоду.

Первая таблица с функцией максимум по периоду, объединяется с той же таблицей регистра по периоду. А потом объединяется с документом по условие дата <=
16 Classic
 
16.07.12
18:44
(14)
Меня в 10 посте смущают конструкции

Табличка КАК Табличка

Непонятно, потом идет обращение к какой-то таблице базы данных или к результату запроса. Если к таблице базы данных, то это не коррелированный подзапрос

В таком виде сработает?


ВЫБРАТЬ
   Табличка.Ссылка,
   Табличка.СебестоимостьШтуки1,
   Табличка.Номенклатура,
   Табличка.Период
ИЗ
   Табличка КАК ТабличкаВерхняя
ГДЕ
   ТабличкаВерхняя.Период В
           (ВЫБРАТЬ
               МАКСИМУМ(МаксПериоды.Период) КАК Период
           ИЗ
               Табличка КАК МаксПериоды
           ГДЕ
               МаксПериоды.Ссылка = ТабличкаВерхняя.Ссылка
               И МаксПериоды.Номенклатура = ТабличкаВерхняя.Номенклатура)
17 Classic
 
16.07.12
18:45
ВЫБРАТЬ
   ТабличкаВерхняя.Ссылка,
   ТабличкаВерхняя.СебестоимостьШтуки1,
   ТабличкаВерхняя.Номенклатура,
   ТабличкаВерхняя.Период
ИЗ
   Табличка КАК ТабличкаВерхняя
ГДЕ
   ТабличкаВерхняя.Период В
           (ВЫБРАТЬ
               МАКСИМУМ(МаксПериоды.Период) КАК Период
           ИЗ
               Табличка КАК МаксПериоды
           ГДЕ
               МаксПериоды.Ссылка = ТабличкаВерхняя.Ссылка
               И МаксПериоды.Номенклатура = ТабличкаВерхняя.Номенклатура)
18 Kashemir
 
16.07.12
18:45
(16) Сработает
19 Classic
 
16.07.12
18:46
(18)
Оставил в закладке. Завтра попробую на реальных таблицах посмотреть. Конечно в СрезПоследних врядли даст передать в качестве параметра, но все равно интересно
20 Kashemir
 
16.07.12
18:47
(17) Табличка в данном случае является временной таблицей для упрощения понимания запроса. Можешь использовать любой желаемый источник. Срез последних не даст - можешь не пробовать :) Виртуальные таблицы нельзя использовать в корреляционных запросах