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