Имя: Пароль:
1C
 
Цены по категориям. Можно ли решить задачу без запроса в цикле?
0 anders297
 
25.08.23
13:08
Есть справочник "НастройкиЦен".
В шапке ряд служебных реквизитов, и реквизит "Приоритет".
В справочнике табличная часть "Категории", с реквизитом "Категория".

Есть таблица значений с колонкой "номенклатура".
Мне в эту таблицу значений нужно заполнить колонку "НастройкаЦен".

Пример данных:
"Настрока цен 1", Приоритет 10, в табчасти строка "Бытовая техника".
"Настрока цен 2", Приоритет 20, в табчасти строка "Холодильники".

В табчасти строка "Холодильник арт. 123". Мне нужно напротив получить "Настройку цен 2", потому что у нее приоритет выше.

Я думаю сделать левое соединение ТЗ, с табличной части настроек цен, с условием "В ИЕРАРХИИ".
(Попутно вопрос, я никогда ранее не использовал с соединениях условие "В ИЕРАРХИИ", оно нормально работает? )

Далее группировка по полю Номенклатура, с максимумом по полю "Приоритет".
Если бы "Приоритет" был уникальным, в следующем запросе я мог бы получить ссылку, на справочник "Настройки цен".
Но в силу объективных причин, этот реквизит не может быть уникальным. (описание задачи упрощено, чтобы не грузить ненужными деталями)

Можно ли данную задачу сделать одним запросом, или нужно будет делать запрос в цикле?
1 Donkey_hot
 
25.08.23
13:35
(0) А если действительно так окажется, что две настройки с одинаковым приоритетом, какую нужно выбирать?
2 anders297
 
25.08.23
13:53
(1) случайная подойдет
3 Галахад
 
25.08.23
13:53
Немного грязного кода в студию:

Левое соединение
ПО
ТЗ.Номенклатура.Родитель = НастройкаЦенКатегории.Категорияпо
ИЛИ ТЗ.Номенклатура.Родитель.Родитель = НастройкаЦенКатегории.Категория
ИЛИ ТЗ.Номенклатура.Родитель.Родитель = НастройкаЦенКатегории.Категория
...
4 ReaLg
 
25.08.23
16:06
(2) Если случайная подойдет - то и соединяй по приоритету, и группируй опять - ссылку в максимум.