Имя: Пароль:
1C
1С v8
СКД, запрос в цикле
0 Fuas4
 
26.02.14
07:48
Добрый день. Есть старый-престарый отчет с выводом табличного документа и блекджеком, решил переписать его на СКД. По возможности - без программирования.
В отчете есть цикл, в котором ищется инфа (доплата продавцу за продажу) Все осложняется тем, что доплата может быть как на саму номенклатуру, так и на родителя номенклатуры или на родителя родителя номенклатуры. В старом отчете это реализовано через цикл. Пока результат.Пустой() Цикл
Вот не могу придумать, как это сделать в СКД или даже в запросе. Подскажет кто?
1 Godofsin
 
26.02.14
07:52
Доплата как устанавливается?
2 Fuas4
 
26.02.14
07:54
Периодический регистр сведений
3 jsmith82
 
26.02.14
07:54
(1) видимо, реквизит справочника
выбор когда тогда
4 Godofsin
 
26.02.14
07:55
(3) Мимо )))
5 shuhard
 
26.02.14
07:55
(0) раз нет рук, то оставь цикл как есть, а результат засунь в СКД
6 Godofsin
 
26.02.14
07:56
(2) Ну и соединяй с этим РС.
7 Fuas4
 
26.02.14
07:56
(5) ручки вроде есть :) Хочу понять, как сделать это по уму
8 Fuas4
 
26.02.14
07:57
(6) Условие связи какое? допустим, я соединяю справочник номенклатура (для простоты) с этим регистром. В регистре есть измерение номенклатура, которое может быть и самой номенклатурой и любой группой. Мне надо получить ближайшее
9 Godofsin
 
26.02.14
07:59
= ИЛИ В
10 Fuas4
 
26.02.14
08:04
(9) не понял. ЗАпрос:
ВЫБРАТЬ
    НоменклатураСпр.Ссылка,
    ДоплатыПродавцуЗаПродажуСрезПоследних.ДоплатаПроцент
ИЗ
    Справочник.Номенклатура КАК НоменклатураСпр
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДоплатыПродавцуЗаПродажу.СрезПоследних КАК ДоплатыПродавцуЗаПродажуСрезПоследних
        ПО НоменклатураСпр.Ссылка = ДоплатыПродавцуЗаПродажуСрезПоследних.Номенклатура

Вот так получу только доплату на эту номенклатуру. А если есть только на родителя? Или родителя родителя? При этом уровней вложенности может быть любое количество
11 jsmith82
 
26.02.14
08:04
выбор когда ном = ном тогда ном = ном
когда ном.родитель = ном тогда ном.родитель ном.родитель = ном
...
12 Fuas4
 
26.02.14
08:07
(11) так я тоже умею, я думал есть какой-то способ это дело зациклить. Потому что сейчас я запилю условие на 20 уровней вложенности, а через полгода в справочнике будет их 21 и все перестанет работать
13 1Сергей
 
26.02.14
08:09
ВЫБРАТЬ
    НоменклатураСпр.Ссылка,
    ДоплатыПродавцуЗаПродажуСрезПоследних.ДоплатаПроцент
ИЗ
    Справочник.Номенклатура КАК НоменклатураСпр
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДоплатыПродавцуЗаПродажу.СрезПоследних КАК ДоплатыПродавцуЗаПродажуСрезПоследних
        ПО НоменклатураСпр.Ссылка = ДоплатыПродавцуЗаПродажуСрезПоследних.Номенклатура
ИЛИ НоменклатураСпр.Родитель = ДоплатыПродавцуЗаПродажуСрезПоследних.Номенклатура
14 Fuas4
 
26.02.14
08:09
или я не понял, что происходит в (11)?
15 1Сергей
 
26.02.14
08:10
(11) жесть какая-то
16 Fuas4
 
26.02.14
08:10
(13) а если НоменклатураСпр.Родитель.Родитель? или НоменклатураСпр.Родитель.Родитель.Родитель.Родитель.Родитель?
17 1Сергей
 
26.02.14
08:12
ИЛИ НоменклатураСпр.Ссылка В ИЕРАРХИИ (ДоплатыПродавцуЗаПродажуСрезПоследних.Номенклатура)
18 1Сергей
 
26.02.14
08:13
(17) + ну или наоборот. Главное идею пойми
19 Fuas4
 
26.02.14
08:14
(17) ога, понял. Щас попробую
20 Fuas4
 
26.02.14
08:16
Неверные параметры в иерархии (<<?>>ДоплатыПродавцуЗаПродажуСрезПоследних.Номенклатура)
21 1Сергей
 
26.02.14
08:20
(20) весь запрос покажи
22 Fuas4
 
26.02.14
08:24
(21) ВЫБРАТЬ
    НоменклатураСпр.Ссылка,
    ДоплатыПродавцуЗаПродажуСрезПоследних.ДоплатаПроцент
ИЗ
    Справочник.Номенклатура КАК НоменклатураСпр
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДоплатыПродавцуЗаПродажу.СрезПоследних КАК ДоплатыПродавцуЗаПродажуСрезПоследних
        ПО (НоменклатураСпр.Ссылка В ИЕРАРХИИ (ДоплатыПродавцуЗаПродажуСрезПоследних.Номенклатура))
23 Fuas4
 
26.02.14
08:26
v8: Неверные параметры В ИЕРАРХИИ тут пишут, что так нельзя
24 Chai Nic
 
26.02.14
08:26
Не заморачивайся, формируй таблицу значений любым удобным способом и передавай её в СКД как источник данных
25 Fuas4
 
26.02.14
08:28
(24) Я думал это не "тру" :)
26 1Сергей
 
26.02.14
08:29
(23) хм... не сталкивался. И почему-то не вижу в СП этого ограничения.

Так, Группы могут быть в Регистре или тебе нужно из справочника выбрать в том числе и группы?
27 Fuas4
 
26.02.14
08:31
(26) Из справочника я выбираю только элементы. В регистре могут быть и элементы и группы
28 1Сергей
 
26.02.14
08:31
если упростить (22), то получится:


ВЫБРАТЬ
    ДоплатыПродавцуЗаПродажуСрезПоследних.Номенклатура,
    ДоплатыПродавцуЗаПродажуСрезПоследних.ДоплатаПроцент
ИЗ
    РегистрСведений.ДоплатыПродавцуЗаПродажу.СрезПоследних КАК ДоплатыПродавцуЗаПродажуСрезПоследних


Результат тот же
29 Fuas4
 
26.02.14
08:34
(28) Как получить все доплаты я знаю. как мне соединить справочник номенклатура с доплатами?
30 Fuas4
 
26.02.14
08:40
Вот такой запрос работать начал, но сожрал всю память и пришлось его убить:
ВЫБРАТЬ
    НоменклатураСпр.Ссылка,
    ДоплатыПродавцуЗаПродажуСрезПоследних.ДоплатаПроцент
ИЗ
    Справочник.Номенклатура КАК НоменклатураСпр
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДоплатыПродавцуЗаПродажу.СрезПоследних КАК ДоплатыПродавцуЗаПродажуСрезПоследних
        ПО (НоменклатураСпр.Ссылка В ИЕРАРХИИ
                (ВЫБРАТЬ
                    ДоплатыПродавцуЗаПродажуСрезПоследних.Номенклатура
                ИЗ
                    РегистрСведений.ДоплатыПродавцуЗаПродажу.СрезПоследних КАК ДоплатыПродавцуЗаПродажуСрезПоследних))
31 Fuas4
 
26.02.14
08:41
Похоже, надо делать как в (24) :)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший