|
Поиск ближайщего значения В ИЕРАРХИИ | ☑ | ||
---|---|---|---|---|
0
Shark_2000
13.08.20
✎
20:18
|
Уважаемые участники форума. Нужна ваша помощь.
Суть вопроса следующая: Есть два справочника и регистр сведений. 1-й справочник иерархический(ОбъектПоставки), 2-й (ЦенаПоставки) подчинен товару. Регистр сведений с измерениями: "ОбъектПоставки", "ТипЦены" и ресурсом: "Значение" В регистре сведений Измерение Объект может принимать значение и группы и элемента, таким образом Цена устанавливается на Группу объектов и при добавлении объекта нет необходимости устанавливать значение для него отдельно. Вопрос: Как в запросе получить Значение которое установлено для ближайшей группы в которой находится нужный Объект и нужный тип цены. |
|||
1
Shark_2000
13.08.20
✎
20:29
|
ТипЦены это справочник ЦенаПоставки
|
|||
2
vde69
13.08.20
✎
21:12
|
читайте про денормализацию данных...
то есть нужно заполнить регистр всеми возможными к выборке значениями а потом уже получать без выпендрежа... |
|||
3
lodger
13.08.20
✎
21:31
|
прям в запросе? вангую - получится километровый запрос.
дешевле пред или пост обработкой. |
|||
4
МихаилМ
13.08.20
✎
22:19
|
(0) придумавшие и реализовавшие это должны быть уволены.
|
|||
5
Shark_2000
13.08.20
✎
22:19
|
(3) Вы правы, уже решил следующим весьма простым способом:
&НаСервере Функция ПолучитьЦену(Знач Объект, ТипЦены) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Объект", Объект); Запрос.УстановитьПараметр("ТипЦены", ТипЦены); Запрос.УстановитьПараметр("Период", ТекущаяДата()); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Цены.Значение КАК Цена |ИЗ | РегистрСведений.ЦенаТовараНаОбъекте.СрезПоследних( | &Период, | Объект = &Объект | И ТипЦены.Ссылка = &ТипЦены) КАК Цены"; Тарифы = Запрос.Выполнить().Выгрузить(); Пока Цены.Количество() = 0 Цикл Если Не Объект.Родитель = Справочники.Объекты.ПустаяСсылка() Тогда Объект = Объект.Родитель; Запрос.УстановитьПараметр("Объект", Объект); Цены = Запрос.Выполнить().Выгрузить(); Иначе Возврат Неопределено; КонецЕсли; КонецЦикла; Возврат Цены[0].Цена; КонецФункции |
|||
6
Shark_2000
13.08.20
✎
22:20
|
(4) Ха - Ха
|
|||
7
Кулибин
13.08.20
✎
22:22
|
Моветон - устанавливать параметры до текста запроса, сложно читать - не стал, работает - хорошо, молодец.
|
|||
8
Shark_2000
13.08.20
✎
22:23
|
(4) Наверняка ВЫ "ГЕНИЙ"
|
|||
9
Shark_2000
13.08.20
✎
22:25
|
(7) Не так давно начал это делать, зато когда заходишь в конструктор не надо их писать, они сами подтягиваются
|
|||
10
Кулибин
13.08.20
✎
22:30
|
Спасибо, открыл для меня, беру обратно, молодец. Две запятые пропустил только.
|
|||
11
МихаилМ
13.08.20
✎
22:36
|
(0)
на этом форуме проблемы при использовании иерархии для работы с ценами обсуждались раз 30. на других - тоже много тем. |
|||
12
Shark_2000
13.08.20
✎
22:50
|
(11) Друг да у меня вообще другая отрасль!!! и мне не цены нужны и нет у меня товаров и номенклатуры тоже, просто людям проще понимать когда им задают вопрос "Цена, номенклатура" и т.д. вы мысль не уловили, простите я забыл "ВЫ ГЕНИЙ"
|
|||
13
Shark_2000
13.08.20
✎
22:52
|
(11) И из всех ответивших в данной теме Ваш "ОТВЕТ" "САМЫЙ ПОЛЕЗНЫЙ" без него я бы не справился спасибо!
|
|||
14
МихаилМ
13.08.20
✎
23:05
|
(13)
я дал не правильный не формальный ответ. ответ на Ваш вопрос в (0) https://yandex.ru/search/?text=транзитивное%20замыкание%20запрсом&lr=213 |
|||
15
palsergeich
13.08.20
✎
23:13
|
(5) Акуительно.
Запрос в цикле и даже не стесняется) |
|||
16
palsergeich
13.08.20
✎
23:16
|
(15) А не это не запрос в цикле, а просто цикл просто так)
Скажи мне друг зачем этот цикл Пока Цены.Количество() = 0 Цикл И как он выполняется в первый прогон, когда переменная Цены еще не инициирована? |
|||
17
palsergeich
13.08.20
✎
23:17
|
А да и запрос в цикле это тоже
|
|||
18
palsergeich
13.08.20
✎
23:17
|
ой всё
|
|||
19
Shark_2000
14.08.20
✎
00:51
|
(16) Извини не изменил в сообщении но где "Тарифы = Запрос.Выполнить().Выгрузить();" там "Цены = Запрос.Выполнить().Выгрузить();"
теперь НОРМ? |
|||
20
Shark_2000
14.08.20
✎
00:53
|
Друзья, Форум чтобы помогать друг другу а не "ВЫСМЕИВАТЬ"
|
|||
21
Shark_2000
14.08.20
✎
01:07
|
Вот умники! Жуть! нет бы сказать: "Вот на возьми, пользуйся на здоровье". Нет! надо "ОБОСРАТЬ", и главное ни чего не подсказать. Да как вы так живете? не стрёмно?
|
|||
22
Ёпрст
14.08.20
✎
01:21
|
(21) срез последних (если не хранить его в виде итогов) не самый быстрый объект (точнее, виртуальная, рассчитываемая табличка). А ты его еще и в цикл по всей иерархии загоняешь, + тащишь объекты через точку.
Как бэ это, не быстро и..структуру надо по-другому делать, или заниматься денормализацией. Что б вот такого кода, как в (5) не было. |
|||
23
Ёпрст
14.08.20
✎
01:22
|
и если у тебя только 2 измерения и один ресурс, то top 1 в запросе лишнее
|
|||
24
Shark_2000
14.08.20
✎
17:17
|
(22) Иерархия в принципе это Контактная Информация, которая ограничена как ни крути, объектов будет: ну 1000, ну 10000 явно не более и пройти по 8 уровням иерархии, чепуха.
|
|||
25
Kesim
14.08.20
✎
17:23
|
(0) запросом получаем только элементы добавляем приоритет = 1 и объединением получаем только группы добавляем приоритет 0 - все это в вт,
потом соединяем с таблицей рс, и аккуратно группируешь по макс приоритет |
|||
26
Kesim
14.08.20
✎
17:26
|
(0) "..Значение которое установлено для ближайшей группы в которой находится нужный.." не "ближайшей", а "родитель"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |