Всем доброго времени суток!
Подскажите с построением запроса. Есть регистр сведений в который пишутся данные по проходу сотрудников через турникет организации в виде (Скрин 1). Необходимо построить запрос в котором строки входа и выхода объединятся (Скрин 2).
---
Добавляете АвтоНомерЗаписи.
В одну временную таблицу отбираете Вход, в другую Выход.
Соединяете Вход с Выходом по Организация, Сотрудник, Автономер = Автономер + 1
---
Во временную таблицу помещаешь первые 100000 строк отсортированных по сотруднику и дате. В неё же добавляешь поле Автонумерация(). Затем из временной таблицы выбираешь строки где событие = "вход" и левым соединением с этой же временной таблицей ищешь его "выход" по условию сотрудникВТ1 = сотрудникВТ2 и НомерЗаписиВТ = НомерЗаписиВТ2 - 1
В (10) чуть быстрее дан ответ. Только не нужно отбирать отдельно входы и выходы во временную таблицу.
---
(11)Сделал почти по той схеми что вы предложили. Создал две временных таблицы, в одной только входы, в другой только выходы. Объединил их все выходы по сотруднику к каждому входу, затем сгрупировал по полю организация, сотрудник, дата входа, а поле дата выхода взял минимальную.

```1c
    ВЫБРАТЬ
    ВЫРАЗИТЬ(ТЗСписка.Фирма КАК СТРОКА(100)) КАК Организация,
    ВЫРАЗИТЬ(ТЗСписка.Сотрудник КАК СТРОКА(100)) КАК Сотрудник,
    ТЗСписка.TDATETIME КАК Дата,
    ВЫРАЗИТЬ(ТЗСписка.Направление КАК СТРОКА(10)) КАК Событие
    ПОМЕСТИТЬ ВТ_ДаннеXML
    ИЗ
    &ТЗСписка КАК ТЗСписка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ДаннеXML.Организация КАК Организация,
    ВТ_ДаннеXML.Сотрудник КАК Сотрудник,
    ВТ_ДаннеXML.Дата КАК ДатаВхода
    ПОМЕСТИТЬ ВТ_Входы
    ИЗ
    ВТ_ДаннеXML КАК ВТ_ДаннеXML
    ГДЕ
    ВТ_ДаннеXML.Событие = "Вход"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ДаннеXML.Организация КАК Организация,
    ВТ_ДаннеXML.Сотрудник КАК Сотрудник,
    ВТ_ДаннеXML.Дата КАК ДатаВыхода
    ПОМЕСТИТЬ ВТ_Выходы
    ИЗ
    ВТ_ДаннеXML КАК ВТ_ДаннеXML
    ГДЕ
    ВТ_ДаннеXML.Событие = "Выход"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Входы.Организация КАК Организация,
    ВТ_Входы.Сотрудник КАК Сотрудник,
    ВТ_Входы.ДатаВхода КАК ДатаВхода,
    МИНИМУМ(ВТ_Выходы.ДатаВыхода) КАК ДатаВыхода
    ИЗ
    ВТ_Входы КАК ВТ_Входы
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Выходы КАК ВТ_Выходы
    ПО ВТ_Входы.Организация = ВТ_Выходы.Организация
    И ВТ_Входы.Сотрудник = ВТ_Выходы.Сотрудник
    И ВТ_Входы.ДатаВхода < ВТ_Выходы.ДатаВыхода

    СГРУППИРОВАТЬ ПО
    ВТ_Входы.Организация,
    ВТ_Входы.Сотрудник,
    ВТ_Входы.ДатаВхода
```
---
Добавляете АвтоНомерЗаписи.
В одну временную таблицу отбираете Вход, в другую Выход.
Соединяете Вход с Выходом по Организация, Сотрудник, Автономер = Автономер + 1
---
а свои, хоть какие-нибудь наброски есть?
---
Из хотя бы маломальски рабочих, нет.
---
а если он входил-выходил несколько раз за день? (на обед ходил)
а если вошёл сегодня вышел завтра?
а если забыл пробиться и два раза вошёл?

если этого нет - в первую ВТ помещаешь иванов, день, время где чтото равно вход
во втором присоединяешь к нему чтото равно выход по иванов = иванов и день = день
---
Здесь строгий контроль программы СКУД из которой эти данные приходят в 1С. Не может быть двойного входа без выхода, турникет выдаст ошибку и не пустит сотрудника пока охрана ему не пропишет выход. Т.е. последовательность в регистре строгая, если есть вход, то следующей записью будет обязательно выход. Даже пускай и следующим днём (сотрудник например работал в ночь).
---
С соединением входа и выхода и возникает проблема, сотрудник может за день несколько раз выйти и зайти. Т.е. мне как то нужно соединить строку входа с следующей за ней по дате строкой выхода.
---
Если я ничего не путаю, то СКД должна сама суметь в подобное
Надо сделать Таблицу
Колонки Сотрудник
Строки Событие - у события внутри Дата.

Но лучше проверить, накидайте отчетик подергайте настройки
---
Мне это нужно не в СКД, мне нужно получить таблицу которая в последствии будет ещё обрабатываться.
---
...
Справочку по СКД почитайте, там есть вариант вывода в таблицу значений.
---
Во временную таблицу помещаешь первые 100000 строк отсортированных по сотруднику и дате. В неё же добавляешь поле Автонумерация(). Затем из временной таблицы выбираешь строки где событие = "вход" и левым соединением с этой же временной таблицей ищешь его "выход" по условию сотрудникВТ1 = сотрудникВТ2 и НомерЗаписиВТ = НомерЗаписиВТ2 - 1
В (10) чуть быстрее дан ответ. Только не нужно отбирать отдельно входы и выходы во временную таблицу.
---
(11)Сделал почти по той схеми что вы предложили. Создал две временных таблицы, в одной только входы, в другой только выходы. Объединил их все выходы по сотруднику к каждому входу, затем сгрупировал по полю организация, сотрудник, дата входа, а поле дата выхода взял минимальную.

```1c
    ВЫБРАТЬ
    ВЫРАЗИТЬ(ТЗСписка.Фирма КАК СТРОКА(100)) КАК Организация,
    ВЫРАЗИТЬ(ТЗСписка.Сотрудник КАК СТРОКА(100)) КАК Сотрудник,
    ТЗСписка.TDATETIME КАК Дата,
    ВЫРАЗИТЬ(ТЗСписка.Направление КАК СТРОКА(10)) КАК Событие
    ПОМЕСТИТЬ ВТ_ДаннеXML
    ИЗ
    &ТЗСписка КАК ТЗСписка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ДаннеXML.Организация КАК Организация,
    ВТ_ДаннеXML.Сотрудник КАК Сотрудник,
    ВТ_ДаннеXML.Дата КАК ДатаВхода
    ПОМЕСТИТЬ ВТ_Входы
    ИЗ
    ВТ_ДаннеXML КАК ВТ_ДаннеXML
    ГДЕ
    ВТ_ДаннеXML.Событие = "Вход"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ДаннеXML.Организация КАК Организация,
    ВТ_ДаннеXML.Сотрудник КАК Сотрудник,
    ВТ_ДаннеXML.Дата КАК ДатаВыхода
    ПОМЕСТИТЬ ВТ_Выходы
    ИЗ
    ВТ_ДаннеXML КАК ВТ_ДаннеXML
    ГДЕ
    ВТ_ДаннеXML.Событие = "Выход"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Входы.Организация КАК Организация,
    ВТ_Входы.Сотрудник КАК Сотрудник,
    ВТ_Входы.ДатаВхода КАК ДатаВхода,
    МИНИМУМ(ВТ_Выходы.ДатаВыхода) КАК ДатаВыхода
    ИЗ
    ВТ_Входы КАК ВТ_Входы
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Выходы КАК ВТ_Выходы
    ПО ВТ_Входы.Организация = ВТ_Выходы.Организация
    И ВТ_Входы.Сотрудник = ВТ_Выходы.Сотрудник
    И ВТ_Входы.ДатаВхода < ВТ_Выходы.ДатаВыхода

    СГРУППИРОВАТЬ ПО
    ВТ_Входы.Организация,
    ВТ_Входы.Сотрудник,
    ВТ_Входы.ДатаВхода
```
---
Тоже нормальный вариант