Имя: Пароль:
1C
1С v8
Выборка из регистра сведений
0 DenSpb
 
05.08.11
10:35
Есть Регистр сведений(Измерения: Контрагент, Номенклатура, Ячейка ТипПросчета). Нужно сделать выборку: Контрагент, Номенклатура, Ячейка по принципу, если с таким ключом в ТипеПросчета = ГруппаА есть строка, то дальше в других ТипахПросчета ее не ищем. Понятно, что можно сделать перебором, но хотелось бы сделать одним запросом. Какие есть идеи?
1 Rovan
 
гуру
05.08.11
10:41
(0) через вложенные запросы
2 Axel2009
 
05.08.11
10:42
(0) для этого нужно задать порядок этих типов просчета. чтобы выбирать по принципу
3 DenSpb
 
05.08.11
10:43
(1) Для первого просчета берем все строки, для второго просчета берез все, не входящие в первый, для третьего все, не входчщие в первый и второй, так?
4 DenSpb
 
05.08.11
10:44
(2)
Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
   |    ИнвентаризацияРЧТ.Контрагент КАК Контрагент,
   |    ИнвентаризацияРЧТ.Номенклатура КАК Номенклатура,
   |    ИнвентаризацияРЧТ.Номенклатура.Код,
   |    СУММА(ИнвентаризацияРЧТ.Количество) КАК Количество,
   |    МАКСИМУМ(ВЫБОР
   |            КОГДА ИнвентаризацияРЧТ.имяПросчета = &КонтрольныйПросчет
   |                ТОГДА 1
   |            КОГДА ИнвентаризацияРЧТ.имяПросчета = &ПросчетРазногласий
   |                ТОГДА 2
   |            КОГДА ИнвентаризацияРЧТ.имяПросчета = &ПросчетГруппаА
   |                ТОГДА 3
   |            ИНАЧЕ 99999
   |        КОНЕЦ) КАК Порядок
   |ИЗ
   |    РегистрСведений.ИнвентаризацияРЧТ КАК ИнвентаризацияРЧТ
   |ГДЕ
   |    ИнвентаризацияРЧТ.имяПросчета В(&МассивПросчетов)
   |
   |СГРУППИРОВАТЬ ПО
   |    ИнвентаризацияРЧТ.Контрагент,
   |    ИнвентаризацияРЧТ.Номенклатура,
   |    ИнвентаризацияРЧТ.Номенклатура.Код
   |
   |УПОРЯДОЧИТЬ ПО
   |    Порядок УБЫВ,
   |    Номенклатура,
   |    Контрагент";
Я вот так сделал, но дальше возникает впорос, как? У меня мысли до перебора доходят
5 DenSpb
 
05.08.11
10:47
(1) если (3) верно, то для если ТиповПросчетов будет много, то количество вложенных запросов будет огромно.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн