Имя: Пароль:
1C
1С v8
Соединения в запросе
0 Одинесочка
 
18.09.12
10:33
Добрый день!
Очень простой запрос, но почему-то выдает неправильную таблицу. Помогите разобраться:

ВЫБРАТЬ
   СуммарныйУчетРабочегоВремени.Сотрудник,
   СуммарныйУчетРабочегоВремени.Период КАК ВремяВх,
   СуммарныйУчетРабочегоВремени.ДатаВремя КАК Дата
ПОМЕСТИТЬ ВремяВхода
ИЗ
   РегистрСведений.СуммарныйУчетРабочегоВремени КАК СуммарныйУчетРабочегоВремени
ГДЕ
   СуммарныйУчетРабочегоВремени.Устройство.ВидУстройства = ЗНАЧЕНИЕ(Перечисление.ВидыУстройств.Вход)
   И СуммарныйУчетРабочегоВремени.Период МЕЖДУ &НачалоПериода И &КонецПериода
   И СуммарныйУчетРабочегоВремени.Сотрудник = &Сотрудник
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ВремяВхода.Дата,
   ВремяВхода.Сотрудник,
   ВремяВхода.ВремяВх,
   ВремяВыхода.ВремяВых
ИЗ
   ВремяВхода КАК ВремяВхода
       ЛЕВОЕ СОЕДИНЕНИЕ ВремяВыхода КАК ВремяВыхода
       ПО ВремяВхода.Дата = ВремяВыхода.Дата
           И ВремяВхода.Сотрудник = ВремяВыхода.Сотрудник


На выходе получается вот так:

Сотрудник1    Дата1    ВремяВх                    ВремяВых
Иванов         17.08.2012    17.08.2012 8:10:19    17.08.2012 9:42:02
Иванов         17.08.2012    17.08.2012 8:10:19    17.08.2012 17:28:12
Иванов         17.08.2012    17.08.2012 13:10:20    17.08.2012 9:42:02
Иванов       17.08.2012    17.08.2012 13:10:20    17.08.2012 17:28:12

ПОчему записи из первой таблицы повторяются? По отдельности правилоно все выводит!!
1 Жан Пердежон
 
18.09.12
10:34
так работают соединения
2 Ненавижу 1С
 
гуру
18.09.12
10:35
очевидно, потому что входил и выходил 2 раза
3 Ненавижу 1С
 
гуру
18.09.12
10:36
последняя табица:

ВЫБРАТЬ
   ВремяВхода.Дата,
   ВремяВхода.Сотрудник,
   ВремяВхода.ВремяВх,
   МИНИМУМ(ВремяВыхода.ВремяВых)
ИЗ
   ВремяВхода КАК ВремяВхода
       ЛЕВОЕ СОЕДИНЕНИЕ ВремяВыхода КАК ВремяВыхода
       ПО ВремяВхода.Дата = ВремяВыхода.Дата
           И ВремяВхода.Сотрудник = ВремяВыхода.Сотрудник
           И ВремяВхода.ВремяВх <= ВремяВыхода.ВремяВых
СГРУППИРОВАТЬ ПО
   ВремяВхода.Дата,
   ВремяВхода.Сотрудник,
   ВремяВхода.ВремяВх
4 Жан Пердежон
 
18.09.12
10:37
у тебя сотрудник 2 раза зашел и 2 раза вышел, обычно берут минимум и максимум за день
5 Жан Пердежон
 
18.09.12
10:38
(3) такое же уг
6 Одинесочка
 
18.09.12
10:38
сказали так неправильно считать время
7 НЕА123
 
18.09.12
10:38
(0)
2x2=4
8 Одинесочка
 
18.09.12
10:39
С мин и мах все отлично получается, но мне надо из всех выходов вычесть все входя
9 Ненавижу 1С
 
гуру
18.09.12
10:40
(5) обоснуй
10 fisher
 
18.09.12
10:40
(0) Я бы эту задачу вообще бы не запросом решал. Неудобно обрабатывать варианты,  которые могут быть самые разные. Вышел не отметившись, вошел не отметившись, работал ночью и т.д. и т.п.
11 НЕА123
 
18.09.12
10:41
(8)
а может сотрудник один раз зайти и три раза выйти?
12 Одинесочка
 
18.09.12
10:42
(10) это да, начальный какой-то вариант надо сделать, хотя бы чистое время посчтать
13 Одинесочка
 
18.09.12
10:42
(11) может, может зайти и вообще не выйти
14 Ненавижу 1С
 
гуру
18.09.12
10:43
(12) так что с (3)?
15 Одинесочка
 
18.09.12
10:43
(14) спасибо, так все правильно получается
16 fisher
 
18.09.12
10:44
(12) Пробежись, обработай все исключения, подготовь красивенькую табличку с приведенными временами входа и выхода и доп-признаками, а уже её хоть в СКД грузи и выводи сколь угодно красиво.
17 Одинесочка
 
18.09.12
10:44
здесь вообще алгоритм придумать трудно, много вариантов всяких разных. Пока считаю, что все идеально, на кождое событие входа, есть событие выхода
18 Одинесочка
 
18.09.12
10:45
(16) Спасибо, воспользуюсь советом
19 Жан Пердежон
 
18.09.12
10:52
(9) а не, с запросом нормально всё;
только на практике без учета отклонений (командировки, договоренности, поломки, потери и т.д. и т.п.) не юзабельно