Имя: Пароль:
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) верно, то для если ТиповПросчетов будет много, то количество вложенных запросов будет огромно.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший