Имя: Пароль:
1C
1С v8
Запрос к регистру сведений, где измерение группа
,
0 AlenkaZu
 
30.05.12
22:49
В регистре сведений измерение - группа справочника, имеется элемент этого справочника, для которого надо получить ресурсы по группе, в которую он входит. Группа м.б. родитель любого уровня. Может, у кого есть пример запроса?
1 Пеппи
 
30.05.12
23:00
в иерархии ?
2 SnarkHunter
 
30.05.12
23:04
3 AlenkaZu
 
30.05.12
23:08
"в иерархии" не подойдёт, он в обратную сторону не работает
4 le_
 
30.05.12
23:22
ВЫБРАТЬ
   ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
   ЦеныНоменклатуры.Валюта КАК Валюта,
   ЦеныНоменклатуры.Цена КАК Цена,
   ЦеныНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   ЦеныНоменклатуры.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
   ЦеныНоменклатуры.СпособРасчетаЦены КАК СпособРасчетаЦены
ИЗ
   РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ИТОГИ
   МАКСИМУМ(Валюта),
   СУММА(Цена),
   МАКСИМУМ(ЕдиницаИзмерения),
   СУММА(ПроцентСкидкиНаценки),
   МАКСИМУМ(СпособРасчетаЦены)
ПО
   Номенклатура ТОЛЬКО ИЕРАРХИЯ


Регистр взял из тех, что под рукой есть )
5 AlenkaZu
 
30.05.12
23:26
le_, мне нужна одна строка в результате выполнения запроса, по группе, в которую входит известный мне элемент, а не всё, что валяется в регистре...
6 le_
 
30.05.12
23:29
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.ТипЦен,
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.Валюта,
   ЦеныНоменклатурыСрезПоследних.Цена,
   ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
   ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки,
   ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Группа) КАК ЦеныНоменклатурыСрезПоследних

Запрос.УстановитьПараметр("Группа", Элемент.Родитель);
Так?..
7 AlenkaZu
 
30.05.12
23:31
le_, не так. не факт, что пользователь внес в регистр именно родителя элемента, может, родителя родителя, или еще выше по уровню - это неизвестно.
8 le_
 
30.05.12
23:32
(7) А если пользователь внес и Родитель И Родитель.Родитель?
Одну строку в этом случае не получишь.
9 AlenkaZu
 
30.05.12
23:34
le_, хорошо, как не получить в этом запросе строки с группами, которые не имеют отношения к моему элементу? Что делать если юзер внес родителей многих уровней я уж разберусь далее
10 le_
 
30.05.12
23:37
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.ТипЦен,
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.Валюта,
   ЦеныНоменклатурыСрезПоследних.Цена,
   ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
   ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки,
   ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура В(&СписокГрупп)) КАК ЦеныНоменклатурыСрезПоследних


Запрос.УстановитьПараметр("СписокГрупп", ПолучитьСписокРодителей(Элемент));
11 AlenkaZu
 
30.05.12
23:40
le_, чудесно, спасибо, ну и чтобы я скорее спать пошла текст функции ПолучитьСписокРодителей будьте любезны! Моя благодарность не будет иметь границ :)
12 le_
 
30.05.12
23:42
(11) Совсем лень одолела? )
13 AlenkaZu
 
30.05.12
23:43
le_, да не лень это, устала я, не в том положении чтобы ночами фигачить экстренные доработки, а надо срочно.
14 DrShad
 
30.05.12
23:44
(13) рекурсия о чем-то говорит?
15 AlenkaZu
 
30.05.12
23:47
DrShad, я попросила пример а не наводящие вопросы. Что такое рекурсия в школе проходила, не переживайте. Если нечего скинуть, зачем утруждать себя ответом?
16 le_
 
30.05.12
23:47
(13)
Функция ПолучитьСписокРодителей(Элем)
   ВозвращаемоеЗначени = Новый Массив;
   Пока Элем.Родитель <> Справочники.Номенклатура.ПустаяСсылка() Цикл
       ВозвращаемоеЗначени.Добавить(Элем.Родитель);
       Элем = Элем.Родитель;
   КонецЦикла;
   Возврат ВозвращаемоеЗначени;
КонецФункции
17 DrShad
 
30.05.12
23:48
(16) респект! я бы написал по-другому
18 AlenkaZu
 
30.05.12
23:49
le_, спасибочки, добрый человек! :)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс