Документ в ТабличнойЧасти:
Отдел(Справочник.Отделы) Согласование (Перечисление.Согласование)
Пример:
Отдел №1 - Согласовано
Отдел №2 - НаСогласовании
Отдел №3 - НаСогласовании

В справочнике Отделы есть Табличная часть "СписокСотрудников" из Справочник.Пользователи

Есть ПараметрыСенса: ТекущийПользователь.

Нужно построить запрос: Получить список отделов, в которых числится ПараметрыСенса.ТекущийПользователь, а затем собрать Все документы в которых присутствуют отделы с состоянием НаСогласовании. Причем не все, а только первый в списке. В вышеприведенном примере в результате выполнения запроса данный документ попадет в список только если текущий пользователь будет присутствовать в табличной части Отдел №2.
---
только если текущий пользователь будет присутствовать в табличной части Отдел №2 Странное условие. То есть, если текущий пользователь присутствует в Отделе №3, но не в Отделе №2, то такой документ не нужен?

1. Получить временную таблицу отделов текущего пользователя
2. Получить временную таблицу с полями "Документ" и "Отдел", где отдел ищется по минимальному номеру строки и Согласование = НаСогласовании
3. Сделать внутреннее соединение временных таблиц по полю Отдел
---
```1c
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | Таблица.Ссылка КАК Отдел
    |ПОМЕСТИТЬ Отделы
    |ИЗ
    | Справочник.Отделы.Пользователи КАК Таблица
    |ГДЕ
    | Таблица.Пользователь = &Пользователь
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Согласование.Ссылка КАК Документ,
    | Согласование.НомерСтроки КАК НомерСтроки,
    | Отделы.Отдел КАК Отдел
    |ПОМЕСТИТЬ ТекСогласование
    |ИЗ
    | Отделы КАК Отделы
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.НекийДокумент.Согласование КАК Согласование
    | ПО Отделы.Отдел = Согласование.Отдел
    | И Согласование.Согласование = ЗНАЧЕНИЕ(Перечисление.Согласование.НаСогласовании)
    | И (Согласование.Ссылка.Проведен)
    |;
    |////////////////////////////////////////////////////////////­////////////////////
    |
    |ВЫБРАТЬ
    | ТекСогласование.Документ КАК Документ,
    | ТекСогласование.НомерСтроки КАК НомерСтроки,
    | ТекСогласование.Отдел КАК Отдел
    |ИЗ
    | ТекСогласование КАК ТекСогласование
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.НекийДокумент.Согласование КАК Согласование
    | ПО ТекСогласование.Документ = Согласование.Ссылка
    | И (ВЫБОР
    | КОГДА ТекСогласование.НомерСтроки = 1
    | ТОГДА ЛОЖЬ
    | ИНАЧЕ ТекСогласование.НомерСтроки - 1 = Согласование.НомерСтроки
    | КОНЕЦ)
    |ГДЕ
    | ВЫБОР
    | КОГДА ЕСТЬNULL(Согласование.Согласование, ЗНАЧЕНИЕ(Перечисление.Согласование.Согласован)) = ЗНАЧЕНИЕ(Перечисление.Согласование.Согласован)
    | ТОГДА ИСТИНА
    | ИНАЧЕ ЛОЖЬ
    | КОНЕЦ"
```
---
только если текущий пользователь будет присутствовать в табличной части Отдел №2 Странное условие. То есть, если текущий пользователь присутствует в Отделе №3, но не в Отделе №2, то такой документ не нужен?

1. Получить временную таблицу отделов текущего пользователя
2. Получить временную таблицу с полями "Документ" и "Отдел", где отдел ищется по минимальному номеру строки и Согласование = НаСогласовании
3. Сделать внутреннее соединение временных таблиц по полю Отдел
---
```1c
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | Таблица.Ссылка КАК Отдел
    |ПОМЕСТИТЬ Отделы
    |ИЗ
    | Справочник.Отделы.Пользователи КАК Таблица
    |ГДЕ
    | Таблица.Пользователь = &Пользователь
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Согласование.Ссылка КАК Документ,
    | Согласование.НомерСтроки КАК НомерСтроки,
    | Отделы.Отдел КАК Отдел
    |ПОМЕСТИТЬ ТекСогласование
    |ИЗ
    | Отделы КАК Отделы
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.НекийДокумент.Согласование КАК Согласование
    | ПО Отделы.Отдел = Согласование.Отдел
    | И Согласование.Согласование = ЗНАЧЕНИЕ(Перечисление.Согласование.НаСогласовании)
    | И (Согласование.Ссылка.Проведен)
    |;
    |////////////////////////////////////////////////////////////­////////////////////
    |
    |ВЫБРАТЬ
    | ТекСогласование.Документ КАК Документ,
    | ТекСогласование.НомерСтроки КАК НомерСтроки,
    | ТекСогласование.Отдел КАК Отдел
    |ИЗ
    | ТекСогласование КАК ТекСогласование
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.НекийДокумент.Согласование КАК Согласование
    | ПО ТекСогласование.Документ = Согласование.Ссылка
    | И (ВЫБОР
    | КОГДА ТекСогласование.НомерСтроки = 1
    | ТОГДА ЛОЖЬ
    | ИНАЧЕ ТекСогласование.НомерСтроки - 1 = Согласование.НомерСтроки
    | КОНЕЦ)
    |ГДЕ
    | ВЫБОР
    | КОГДА ЕСТЬNULL(Согласование.Согласование, ЗНАЧЕНИЕ(Перечисление.Согласование.Согласован)) = ЗНАЧЕНИЕ(Перечисление.Согласование.Согласован)
    | ТОГДА ИСТИНА
    | ИНАЧЕ ЛОЖЬ
    | КОНЕЦ"
```
---
>Странное условие.
Это просто список документов которые у человека на согласовании
(2) Сработает только если согласование идет строго по очереди, что в жизни не так. Да и выглядит запутанно на мой вкус. (3) проще, надежнее и просто верно.
---
(4Согласование строго по очереди. Спасибо огромное!!