Вроде простой запрос
Помогите разобраться. Имеем запрос, в котором справочник связан с собственной табличной частью вложенным запросом:
ВЫБРАТЬ
Проекты.Ссылка КАК Монтаж,
Проекты.Приоритет КАК Приоритет,
ВложенныйЗапросГИС.ГИС КАК ГИС
ИЗ Справочник.Проекты КАК Проекты
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
ПроектыСписокИТР.ФизЛицо КАК ГИС,
ПроектыСписокИТР.Ссылка КАК Монтаж1
ИЗ Справочник.Проекты.СписокИТР КАК ПроектыСписокИТР
ГДЕ ПроектыСписокИТР.Роль.Наименование = &ГИС
УПОРЯДОЧИТЬ ПО ГИС) КАК ВложенныйЗапросГИС
ПО Проекты.Ссылка = ВложенныйЗапросГИС.Монтаж1
УПОРЯДОЧИТЬ ПО
Приоритет, Монтаж
Из табличной части нужно получить одну запись определённого вида. Вид задаётся параметром &ГИС. Данный запрос не работает. Но путём изменения количества в предложении “ВЫБРАТЬ ПЕРВЫЕ 1” подзапроса, выяснилось, что запрос начинает работать при различных значениях. Какие-то записи выбираются при 3, какие-то при 14.
Пример:
ПЕРВЫЕ 1
Выборка:
Монтаж1 1 <пусто>
Монтаж2 2 <пусто>
Монтаж3 3 <пусто>
ПЕРВЫЕ 3
Выборка:
Монтаж1 1 <пусто>
Монтаж2 2 Петров
Монтаж3 3 <пусто>
ПЕРВЫЕ 7
Выборка:
Монтаж1 1 Иванов
Монтаж2 2 Петров
Монтаж3 3 <пусто>
ПЕРВЫЕ 14
Выборка:
Монтаж1 1 Иванов
Монтаж2 2 Петров
Монтаж3 3 Сидоров
В чём тут проблема?
Вы наверное хотели получить одну запись из ТЧ КАЖДОГО справочника, но вместо этого написали запрос, который выдает одну запись из ВСЕХ ТЧ ВСЕХ справочников. и какую ссылку выведет – для того и отобразится.
Для написания нужного запроса вам необходимо найти в ТЧ поле, которое и будет определять уникальность записи, среди других подобных. Если же условие, которое вы задали вернет вам одну запись из ТЧ в любом случае, тогда конструкцию ПЕРВЫЕ использовать не надо.
Возможно туплю, но разве
ПО Проекты.Ссылка = ВложенныйЗапросГИС.Монтаж1
не связывает конкретный справочник с конкретной ТЧ?
П.С. Я обошёл эту проблему наборами данных, но очень интересут решение запросом.
Связывает, но…
Конструкция ПЕРВЫЕ 1 (к примеру) для вложенного запроса всегда вернет ОДНУ запись. Какая она будет зависит от условий, но она всегда для этого случая будет одна.
А вам надо для каждой ТЧ каждого элемента справочника выбрать одну строку.
Разницу улавливаете?