Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите с связями в запросе 2 страниц V   1 2 >          
kosalex Подменю пользователя
сообщение 21.09.15, 9:45
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

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


Результат:


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


Результат:


Вопрос: Какие должны быть связи между итими запросами чтобы получилось:
Сотрудник|ВремяВхода|ВремяВыхода|День

Сейчас получается вот так:


А должно:

Сотрудник | ВремяВхода |ВремяВыхода |День
Сотрудник1| 08.09.2015 7:36:00 | 08.09.2015 10:53:00|8
Сотрудник1| 08.09.2015 15:00:00| 08.09.2015 16:34:00|8

Видно что записи связываются не правильно. Помогите плиз...

sava1 Подменю пользователя
сообщение 21.09.15, 10:57
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

в первом запросе мин(период) как времяВхода
во втором мах() Время выхода
объдинить результат и сгруппировать

kosalex Подменю пользователя
сообщение 21.09.15, 11:33
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sava1 @ 21.09.15, 11:57) *
в первом запросе мин(период) как времяВхода
во втором мах() Время выхода
объдинить результат и сгруппировать


Что то не получается...у меня ситуация когда сотрудник может выйти и зайти несколько раз за рабочий день

sava1 Подменю пользователя
сообщение 21.09.15, 11:45
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

А видеть это как надо?

kosalex Подменю пользователя
сообщение 21.09.15, 11:52
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sava1 @ 21.09.15, 12:45) *
А видеть это как надо?

"Это" - это что? код или то что сотрудник может зайти и выйти несколько раз?

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

СГРУППИРОВАТЬ ПО
    ДанныеПроходныхКОДОС.Сотрудник,
    ДанныеПроходныхКОДОС.ТабельныйНомер,
    ДанныеПроходныхКОДОС.ПодразделениеОрганизации,
    ДанныеПроходныхКОДОС.График,
    ДЕНЬ(ДанныеПроходныхКОДОС.Период1)

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

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

СГРУППИРОВАТЬ ПО
    ДанныеПроходныхКОДОС.Сотрудник,
    ДанныеПроходныхКОДОС.ПодразделениеОрганизации,
    ДанныеПроходныхКОДОС.ТабельныйНомер,
    ДанныеПроходныхКОДОС.График,
    ДЕНЬ(ДанныеПроходныхКОДОС.Период1)


Результат:


sava1 Подменю пользователя
сообщение 21.09.15, 11:53
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(kosalex @ 21.09.15, 12:52) *
то что сотрудник может зайти и выйти несколько раз


kosalex Подменю пользователя
сообщение 21.09.15, 11:55
Сообщение #7

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Посмотрите пожалуйста первый пост. Без обид, думал что будет понятно. Как есть сейчас - на картинке, а ниже текстом написано как мне надо. Красным квадратом выделено то что сотрудник может входить и выходить несколько раз за рабочий день.

sava1 Подменю пользователя
сообщение 21.09.15, 11:59
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Нужно показывать все входы и выходы?

kosalex Подменю пользователя
сообщение 21.09.15, 12:04
Сообщение #9

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sava1 @ 21.09.15, 12:59) *
Нужно показывать все входы и выходы?


Нужно получить табель с отработанным временем.

Сотрудник может войти и выйти один раз, а может несколько раз войти и выйти. нужно посчитать время нахождения его на предприятии, т.е. от выхода2 отнять вход2 = время2, от выхода1 отнять вход1 = время1

Отработанное время за день = Время1+Время2


sava1 Подменю пользователя
сообщение 21.09.15, 12:06
Сообщение #10

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Когда-то обсуждалась эта тема и я предлагал - время входа регистрировать с минусом - в итоге отработанное время находится простым суммированием.

kosalex Подменю пользователя
сообщение 21.09.15, 12:08
Сообщение #11

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sava1 @ 21.09.15, 13:06) *
Когда-то обсуждалась эта тема и я предлагал - время входа регистрировать с минусом - в итоге отработанное время находится простым суммированием.



Оно и так найдется простым суммированием, тут дело то в другом. По моему без разницы с минусом писать или без если не получается в выборке получить запись Сотрудник/ВремяВход/ВремяВыхода/День

sava1 Подменю пользователя
сообщение 21.09.15, 12:11
Сообщение #12

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Не надо ВремяВход,ВремяВыход -
Выбираем входы с минусом, выходы с плюсом в одну колонку Отработанное время
Группируем выборку по сотрудник,дата

kosalex Подменю пользователя
сообщение 21.09.15, 12:15
Сообщение #13

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sava1 @ 21.09.15, 13:11) *
Не надо ВремяВход,ВремяВыход -
Выбираем входы с минусом, выходы с плюсом в одну колонку Отработанное время
Группируем выборку по сотрудник,дата


Угу)

А как быть в моем случае с событием вход/выход?


sava1 Подменю пользователя
сообщение 21.09.15, 12:17
Сообщение #14

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Select .......
SUM(CASE WHEN ДанныеПроходныхКОДОС.Событие = "Вход" ИЛИ ДанныеПроходныхКОДОС.Событие = "Въезд") THEN -Период ELSE Период END) as OtrabVremya

Спасибо сказали: kosalex,

kosalex Подменю пользователя
сообщение 21.09.15, 12:28
Сообщение #15

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sava1 @ 21.09.15, 13:17) *
Select .......
SUM(CASE WHEN ДанныеПроходныхКОДОС.Событие = "Вход" ИЛИ ДанныеПроходныхКОДОС.Событие = "Въезд") THEN -Период ELSE Период END) as OtrabVremya



Сенкс!Попробую

Цитата(sava1 @ 21.09.15, 13:17) *
Select .......
SUM(CASE WHEN ДанныеПроходныхКОДОС.Событие = "Вход" ИЛИ ДанныеПроходныхКОДОС.Событие = "Въезд") THEN -Период ELSE Период END) as OtrabVremya



А "-Период" не получить, там тип дата ((

sava1 Подменю пользователя
сообщение 21.09.15, 12:31
Сообщение #16

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Преобразовать время к числу (Период для примера)

kosalex Подменю пользователя
сообщение 21.09.15, 12:33
Сообщение #17

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sava1 @ 21.09.15, 13:31) *
Преобразовать время к числу (Период для примера)



В запросе преобразовать получиться?

Или лучше выгруззить в ТЗ и там уже проставить минусы?

sava1 Подменю пользователя
сообщение 21.09.15, 12:35
Сообщение #18

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Счас не вспомню, но никто не отменял Выразить,Подстрока

kosalex Подменю пользователя
сообщение 21.09.15, 12:37
Сообщение #19

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(sava1 @ 21.09.15, 13:35) *
Счас не вспомню, но никто не отменял Выразить,Подстрока



ВЫРАЗИТЬ...не хочет работать с датой

sava1 Подменю пользователя
сообщение 21.09.15, 12:46
Сообщение #20

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

ВЫРАЗИТЬ(РАЗНОСТЬДАТ(Дата1, Дата2, Секунда))
Вместо дата1/Дата2 подставлять НАЧАЛОПЕРИОДА(Период, Секунда)

Спасибо сказали: kosalex,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 8:30
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!