Имя: Пароль:
1C
1С v8
Вывод в иерархии результатов запроса
0 Звездец
 
11.05.18
09:47
1С 8.3

Нужно вывести номенклатуру в иерархии, с ценой и у которой есть остаток. Вроде как все просто, но что-то никак не соображу.

Проба 1.
Делаем вывод по справочнику номенклатура с иерархией, далее левое соединение к регистру остатков и еще левое к регистру с ценами (срезпоследних).

Но тут имеем массу дублей из-за выборки из регистра цен, так как ВЫБРАТЬ ПЕРВЫЕ не укажешь

Проба 2.
Делаем 3 запроса по Номенклатуре, регистрам остатков и Цен (срез последних Первые 1), помещаем все в 3 виртуальные таблицы, и далее запрос по ним. Ок. Дублей нет, но и иерархию так сделать же не получится.

Проба 3. Получение цен отдельным запросом. Но это уже будет запрос в цикле, некошерно и жутко медленно.

Какие еще есть варианты?
1 mistеr
 
11.05.18
09:52
(0) 1. Запрос к остаткам, результат в ВТ1.
2. Запрос к регистру цен, срез последних, с условием (Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ ВТ)), результат в ВТ2
3. Внутреннее соединение ВТ1 и ВТ2, упорядочить по иерархии.
2 hhhh
 
11.05.18
09:55
(0) в запрос по ценам добавь ТипЦены = &ТипЦены
3 Звездец
 
11.05.18
09:56
(2) ну это и так само собой
4 Звездец
 
11.05.18
09:58
(1) сейчас попробую
5 hhhh
 
11.05.18
10:00
(3) откуда тогда дубли в регистре цен.
6 Звездец
 
11.05.18
10:07
(5) потому что при левом соединении никак не укажешь Выбрать первые 1, получается в выборке много значений. Цена то устанавливалась не раз
7 aleks_default
 
11.05.18
10:26
(6)Дык у тебя же срез последних... откуда много значений?
8 Звездец
 
11.05.18
10:38
(7) так, стоп, что-то я затупил. на Срез же некорректно использовать ГДЕ, нужно отбор накладывать