Имя: Пароль:
1C
1С v8
Подскажите как сделать в запросе
0 kosts
 
26.07.11
14:05
Есть сложный запрос.
В нем в итоге получается 2 временные таблицы.
Периоды в одном месяце.
Типа таких

Сотрудник | ДатаС     | ДатаПо | Должность
Иванов    | 01.01.2011 | 31.01.2011 | Водитель
Сидоров   | 01.01.2011 | 25.01.2011 | Грузчик
Сидоров   | 26.01.2011 | 31.01.2011 | Уборщик
Николаев  | 10.01.2011 | 31.01.2011 | Бухгалтер

и вторая

Сотрудник | ДатаС     | ДатаПо | Основное начисление
Иванов    | 01.01.2011 | 31.01.2011 | По окладу
Сидоров   | 01.01.2011 | 09.01.2011 | По окладу
Сидоров   | 10.01.2011 | 31.01.2011 | По тарифу
Николаев  | 10.01.2011 | 31.01.2011 | По окладу

Периоды могут быть случиться какие угодно
1 kosts
 
26.07.11
14:05
Рано отправил , сейчас допишу
2 kosts
 
26.07.11
14:09
Как получить итоговый запрос, пересечение этих двух.
С разбитием по всем датам которые встречаются в этих двух таблицах...

Сотрудник | ДатаС     | ДатаПо | Должность | Основное начисление
...
Сидоров   | 01.01.2011 | 09.01.2011 | Грузчик | По окладу
Сидоров   | 10.01.2011 | 25.01.2011 | Грузчик | По тарифу  
Сидоров   | 26.01.2011 | 31.01.2011 | Уборщик | По тарифу
...

Натолкните плис на мысль...
3 Рэйв
 
26.07.11
14:12
соединить в запросе по сотруднику?
4 GROOVY
 
26.07.11
14:14
По сотруднику и периоду.
5 kosts
 
26.07.11
14:15
+ к (0) Периоды могут быть случиться какие угодно, но в одном месяце.

(4) Период не совпадает 1 к 1, а могут быть разные в разных таблицах.
6 Wobland
 
26.07.11
14:16
(5) ну будут разные строки значит. так же и надо, судя по (2)
7 kosts
 
26.07.11
14:18
Еще во второй таблице может совсем не быть записи по сотруднику.
8 Wobland
 
26.07.11
14:23
(7) ПОЛНОЕ СОЕДИНЕНИЕ спасёт?
9 kosts
 
26.07.11
14:27
(8) Пока думаю. Сделать запрос составным в один-два шага (объединить все).
Первый это пересекающиеся периоды в 1-й и 2-й таблице.
Можно будет получить часть данных.
10 vmv
 
26.07.11
14:44
может сгенерить таблицу всех дат в периоде и соединять с ней полученные таблицы, так просто мысль
11 kosts
 
26.07.11
14:48
Вот болванка, может кто любит задачки порешать.
Сам буду на ней тренироваться


Выбрать 1 Как Сотрудник, ДатаВремя(2011, 1,1) как ДатаС, ДатаВремя(2011, 1, 31) как ДатаПо, "Водитель" как Должность  поместить ВТПериоды объединить все
Выбрать 2 Как Сотрудник, ДатаВремя(2011, 1,1) как ДатаС, ДатаВремя(2011, 1, 25) как ДатаПо, "Грузчик" объединить все
Выбрать 2 Как Сотрудник, ДатаВремя(2011, 1,26) как ДатаС, ДатаВремя(2011, 1, 31) как ДатаПо, "Уборщик"  объединить все
Выбрать 3 Как Сотрудник, ДатаВремя(2011, 1,1) как ДатаС, ДатаВремя(2011, 1, 31) как ДатаПо, "Бухгалтер" объединить все
Выбрать 4 Как Сотрудник, ДатаВремя(2011, 1, 7) как ДатаС, ДатаВремя(2011, 1, 31) как ДатаПо, "Тракторист" объединить все
Выбрать 5 Как Сотрудник, ДатаВремя(2011, 1, 1) как ДатаС, ДатаВремя(2011, 1, 15) как ДатаПо, "Тракторист"
;
Выбрать 1 Как Сотрудник, ДатаВремя(2011, 1,1) как ДатаС, ДатаВремя(2011, 1, 31) как ДатаПо, "По окладу" как Начисление   поместить ВТПериодыНачислений объединить все
Выбрать 2 Как Сотрудник, ДатаВремя(2011, 1,1) как ДатаС, ДатаВремя(2011, 1, 9) как ДатаПо, "По окладу" объединить все
Выбрать 2 Как Сотрудник, ДатаВремя(2011, 1,10) как ДатаС, ДатаВремя(2011, 1, 31) как ДатаПо, "По тарифу"  объединить все
Выбрать 3 Как Сотрудник, ДатаВремя(2011, 1,1) как ДатаС, ДатаВремя(2011, 1, 31) как ДатаПо, "По окладу"  объединить все
Выбрать 4 Как Сотрудник, ДатаВремя(2011, 1,1) как ДатаС, ДатаВремя(2011, 1, 15) как ДатаПо, "По окладу"
;
Выбрать
ВТПериоды.Сотрудник,
ВТПериоды.ДатаС,
ВТПериоды.ДатаПо,
ВТПериоды.Должность,
ВТПериодыНачислений.Начисление
из ВТПериоды как ВТПериоды
полное соединение ВТПериодыНачислений как ВТПериодыНачислений по ВТПериоды.Сотрудник = ВТПериодыНачислений.Сотрудник  
и (ВТПериоды.ДатаС между ВТПериодыНачислений.ДатаС и ВТПериодыНачислений.ДатаПо
или ВТПериоды.ДатаПо между ВТПериодыНачислений.ДатаС и ВТПериодыНачислений.ДатаПо)
Упорядочить по ВТПериоды.Сотрудник, ВТПериоды.ДатаС
12 mikecool
 
26.07.11
14:49
по сотруднику и НачалоПериода()
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.