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

1. user1421407 30.11.21 12:27 Сейчас в теме
Доброго времени суток, товарищи! Третий день ломаю голову, так и не смог придумать ничего путного...

Задача такая:
Имеется справочник "СпецификацииМедицинскихУслуг" с табличной частью "МестаВыполненияЭтапов".
Этот справочник имеет реквизит "Номенклатура".

Необходимо найти всю номенклатуру, спецификация которой содержит в табличной части все необходимые мне места выполения этапов...

Пытался сделать вот такой запрос:

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


В результате - пустое значение "Выгрузка"...

Надеюсь на вашу помощь, господа!
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. MACTEP1C 30.11.21 12:42 Сейчас в теме
3. collider 30.11.21 12:47 Сейчас в теме
(2) Тогда в выборку попадут все, в которых есть хотя бы одно место выполнения этапов. А надо только такие, в которых все.
4. user1421407 30.11.21 12:56 Сейчас в теме
(3) Да, вы правильно поняли, нужно чтобы все три рабочих места находились в табличной части спецификации номенклатуры...
5. VictorRGB2 13 30.11.21 13:46 Сейчас в теме
(4) попробуйте сгруппировать условие в одно И
как-то так
| И (СпецификацииМедУслугРабочиеМеста.МестоВыполнения = &РабочееМесто1
| И СпецификацииМедУслугРабочиеМеста.МестоВыполнения = &РабочееМесто2
| И СпецификацииМедУслугРабочиеМеста.МестоВыполнения = &РабочееМесто3)

хотя... то на то и выйдет снова

я бы попробовал по одному условия отключать и смотреть в результат запроса
что-то с установкой параметров не то, скорее всего

и вот это
СпецификацииМедУслугРабочиеМеста.Ссылка.Активная = ИСТИНА

можно заменить на простое
СпецификацииМедУслугРабочиеМеста.Ссылка.Активная
8. user1421407 01.12.21 06:14 Сейчас в теме
(5) Итоговый код получился таким:

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

СГРУППИРОВАТЬ ПО
	СпецификацииМедУслугРабочиеМеста.Ссылка,
	СпецификацииМедУслугРабочиеМеста.Ссылка.Номенклатура,

ИМЕЮЩИЕ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СпецификацииМедУслугРабочиеМеста.МестоВыполнения) = &КоличествоРабочихМест
Показать
6. collider 30.11.21 14:03 Сейчас в теме
Не ручаюсь, что синтаксис - контроль не ругнётся, но принцип, думаю, понятен.

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

СГРУППИРОВАТЬ ПО 
СпецификацииМедУслугРабочиеМеста.Ссылка

ИМЕЮЩИЕ
Количество(Различные СпецификацииМедУслугРабочиеМеста.МестоВыполнения) = 3
Показать

Выбрать все, в которых попадётся хотя бы один из параметров и сгруппировать. Где попадётся три, то и выбирать.
user1421407; +1 Ответить
7. user1421407 01.12.21 06:12 Сейчас в теме
(6) Благодарю!!! Всё получилось :)
Оставьте свое сообщение
Вакансии
Аналитик 1C
Москва
зарплата от 200 000 руб. до 240 000 руб.
Полный день

Ведущий аналитик группы поддержки 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Аналитик группы поддержки 1С
Москва
зарплата от 160 000 руб. до 250 000 руб.
Полный день

Аналитик
Москва
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день