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