Имя: Пароль:
1C
1С v8
Выбор единственного значения по левому соединению
0 commdt
 
20.02.15
14:59
Извечная проблема, но хочется ещё раз помусолить.

Делаю поиск номенклатуры по Артикулу и (или) Наименованию в одном запросе (Левое соединение по условию наподобие "Таб.Артикул = Номенклатура.Артикул ИЛИ НЕ &ИскатьПоАртикулу"). Цель - избавиться от циклов вообще, при этом не плодить текстов запроса и сборок запроса по кускам. В запрос загружается вся табличная часть, обрабатывается и целиком выгружается обратно. Всё работает замечательно, но если существует более одной номенклатуры, например, с одинаковым артикулом, то на выходе получаем 2 строки по одному артикулу.
Если бы поиск был жёстко по артикулу, то можно было бы организовать вложенный запрос к справочнику номенклатура, а в нём группировку по артикулу и Максимум по Номенклатура.Ссылка, там же можно было бы посчитать повторяющиеся элементы. Но беда в том, что искать предстоит как по артикулу, так и по наименованию. Группировки по условию, насколько я понимаю, не существует. Может быть есть какое-то лекарство? Уж больно не хочется возвращаться к циклам
1 mikecool
 
20.02.15
15:01
сделать предварительно выбор только по одному значению в вт
связать эту вт справа к основному запросу
и это - в условиях лучше писать
"НЕ &ИскатьПоАртикулу ИЛИ Таб.Артикул = Номенклатура.Артикул ")
2 FIXXXL
 
20.02.15
15:05
(0) результат запроса - задвоенная строка ТЧ? сгруппировать во все поля
или есть случаи
атрикул 001, наименование 002
артикул 002, наименование 003
и тогда две строки с разным товаром лезут?
3 commdt
 
20.02.15
15:18
Одинаковые лезут, например, когда ТЧ:

Арт1 - Ном?
...

Стоит поиск по артикулу.

А в базе у нас есть

Ном1 с Арт1
Ном2 с Арт1
...

На выходе получаем ТЧ

Арт1 - Ном1
Арт1 - Ном2
...

(1) Не совсем понял, как сделать выбор по одному значению в ВТ? В смысле по одному значению для каждой строки справочника? Это смысла не имеет, в ВТ и так все поля уникальны. Вообще фильтровать по одному элементу? Так мне не один нужен, а вся таблица заполненная.

По тем же причинам условия поиска задаются в связях, а не в отборе
4 mikecool
 
20.02.15
15:20
(3) не понял тогда, что нужно
есть один артикул и две номенклатуры, надо выбрать одну номенклатуру?
5 commdt
 
20.02.15
15:24
Есть несколько тысяч артикулов и наименований, и есть весь справочник номенклатуры - нужно сопоставить :) И чтобы выполнялось не десять лет
6 Адский плющ
 
20.02.15
15:26
(5) На манер поиска курсов валют на каждую дату, сначала выбираешь для каждого артикула единственную номенклатуру (группировка + максимум). И юзаешь эту таблицу.
7 Адский плющ
 
20.02.15
15:27
+(6) А блин, не дочитал сабж )
8 commdt
 
20.02.15
15:28
(2)(6)  Сгруппировать было бы круто, но по какому полю? Поиск может выполняться как по артикулу, так и по наименованию, плюс вместе с номенклатурой подгружается цена из регистра, то есть на выходе вообще нельзя юзать группиорвку. Во вложенном запросе к справочнике номенклатуры было бы можно, но опять же, по какому полю?
2 + 2 = 3.9999999999999999999999999999999...