Имя: Пароль:
1C
1С v8
v8: Соединить в Запросе 2 временные таблицы [решено]
,
0 neomarat
 
22.11.11
13:37
Чет туплю.
Есть 2 временные таблицы:
Даты:
01.01.11
02.01.11
03.01.11
Графики работы(с часами работы):
Иванов 01.01.11  6
Петров 02.01.11  2

Как соединить так, чтобы получилось:
01.01.11 Иванов 6
02.01.11 Иванов 0
03.01.11 Иванов 0
01.01.11 Петров 0
02.01.11 Петров 2
03.01.11 Петров 0
1 zavrik
 
22.11.11
13:38
Полное соединение
2 GROOVY
 
модератор
22.11.11
13:42
Да чтож за день то такой...

Рекомендации:
Как задать вопрос по теме 1С или советы новичку. Автор - Сергей Токарев (GrayT).
Общие моменты
Четко сформулируйте свой вопрос.
Тема должна отражать суть сообщения. Не допускаются темы типа "Подскажите", "1С", "help", "есть вопрос", "не получается", темы большими буквами, заголовки с кучей восклицательных/вопросительных знаков.
3 neomarat
 
22.11.11
13:43
(1) неа - не выходит.
делал так:
ВЫБРАТЬ
   ГрафикРаботы.СОТРУДНИК,
   Даты.ДатаПериода,
   ГрафикРаботы.Дата
ИЗ
   Даты КАК Даты
       ПОЛНОЕ СОЕДИНЕНИЕ ГрафикРаботы КАК ГрафикРаботы
       ПО Даты.ДатаПериода = ГрафикРаботы.Дата
4 shuhard
 
22.11.11
13:44
(3) код верный,
записей будет 6, если даты приведены к началу дня
5 rs_trade
 
22.11.11
13:45
слева должна быть таблица с каждой датой за период. к ней уже джойнить фамилии
6 aleks-id
 
22.11.11
13:47
(5) там полное соединение. так что монопенисуально. ответ в (4) - для всех дат использовать НАЧАЛОПЕРИОДА(НашаДата,"ДЕНЬ")
7 aleks-id
 
22.11.11
13:48
+(6) точнее использовать в условии связи.
8 rs_trade
 
22.11.11
13:48
(6) да я глюканул че то. подумал что за каждый день с пропусками надо
9 ЧашкаЧая
 
22.11.11
13:50
Вчера была тема "СКД", сегодня есть "Запрос", дальше будет "Форма" и "1С".
10 Stim213
 
22.11.11
13:51
(2) вторник..
11 neomarat
 
22.11.11
13:57
(4) даты приведены
получается так:
01.01.11 Иванов 6
02.01.11 Петров 2
03.01.11
12 shuhard
 
22.11.11
13:59
(11) сделай объединить все и выложи нам результат
13 neomarat
 
22.11.11
14:06
(12)

01.01.11
02.01.11
03.01.11
01.01.11 Иванов 6
02.01.11 Петров 2
14 Axel2009
 
22.11.11
14:07
чтобы выводилось по каждому сотруднику на каждый день, нужна таблица КАЖДОГО сотрудника на КАЖДЫЙ день. т.е. пересечение этих множеств.
15 neomarat
 
22.11.11
14:15
(14) это понятно.
Но как сделать?
16 Axel2009
 
22.11.11
14:15
выбрать * из (выбрать дата из таблицадат) как таблицадат, (выбрать различные сотрудник из графикиработы) как графикиработы
17 ssh2006
 
22.11.11
14:24
ВЫБРАТЬ
   "01.01.11" КАК ДатаПериода
ПОМЕСТИТЬ Даты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "02.01.11"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "03.01.11"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   "Иванов" КАК Сотрудник,
   "01.01.11" КАК Дата,
   6 КАК Часы
ПОМЕСТИТЬ ГрафикРаботы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Петров",
   "02.01.11",
   2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Даты.ДатаПериода КАК ДатаПериода,
   ГрафикРаботы.Сотрудник КАК Сотрудник,
   ВЫБОР
       КОГДА Даты.ДатаПериода = ГрафикРаботы.Дата
           ТОГДА ГрафикРаботы.Часы
       ИНАЧЕ 0
   КОНЕЦ КАК Часы
ИЗ
   ГрафикРаботы КАК ГрафикРаботы,
   Даты КАК Даты

УПОРЯДОЧИТЬ ПО
   Сотрудник,
   ДатаПериода
18 Axel2009
 
22.11.11
14:25
ВЫБРАТЬ
   "Иванов" КАК Сотрудник,
   "01.01.11" КАК Дата,
   6 КАК Часы
ПОМЕСТИТЬ ГрафикРаботы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Петров",
   "02.01.11",
   2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   "Петров",
   "01.01.11",
   4
19 neomarat
 
22.11.11
14:55
Получилось спасибо.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.