|
Срез последних по нескольким значениям ресурса | ☑ | ||
---|---|---|---|---|
0
Альбатрос
02.11.15
✎
09:17
|
Имеется ТЗ, в каждой строке которой 3 разных значения.
Есть периодический РС с одним ресурсом, который может принимать значения из ТЗ. Нужно по каждой строке ТЗ для каждого значения взять СрезПоследних и выбрать макс по периоду. Как это реализовать в запросе? |
|||
1
Альбатрос
02.11.15
✎
09:26
|
Не с ресурсом, измерением. =)
|
|||
2
Mankubus
02.11.15
✎
09:29
|
||||
3
mistеr
02.11.15
✎
09:36
|
Что значит "для каждого значения взять СрезПоследних"? Срез последних бывает только по измерениям.
Если нужно ответить на вопрос "когда последний раз встречалось это значение?", то срез последних не нужен. |
|||
4
Альбатрос
02.11.15
✎
09:38
|
(2) не то
|
|||
5
Альбатрос
02.11.15
✎
09:39
|
(3) я опечатался в (0). Не с ресурсом, а измерением. Соответственно мне нужно использовать значения из строки ТЗ в качестве измерения для среза и из полученных срезов выбрать самый "наипоследнейший".
|
|||
6
torgm
02.11.15
✎
09:44
|
(5) млин , загоняешь таблицу в запрос, потом левое соединение и т.д..
|
|||
7
Альбатрос
02.11.15
✎
09:47
|
(6) и по каким условиям соединяться? и что указывать в параметре вирт. таблицы для среза? Я мож туплю, конечно, но никак не соображу как тут использовать левое соединение.
|
|||
8
Альбатрос
02.11.15
✎
09:52
|
Пожалуйста, замените в заголовке слово "ресурса" на "измерения".
Понедельник день тяжелый... |
|||
9
НЕА123
02.11.15
✎
09:56
|
завидую ТС.
|
|||
10
RomanYS
02.11.15
✎
10:01
|
(5) если тебе нужна одна дата
выбрать первые 1 ... упорядочить по период убыв список измерений засунуть в условия вирт. таблицы среза |
|||
11
patria0muerte
02.11.15
✎
10:05
|
Т.е. у тебя есть строка:
Значение1, Значение2, Значение3 Каждое из этих значений может являться измерением для РС. И тебе надо получить что в итоге? Теже самые строки, только с указанием, что максимального периода изменения одного из трех указанных значений? Или просто выбрать строку, в которой по одному из трех этих значений был максимальный период? |
|||
12
patria0muerte
02.11.15
✎
10:06
|
Лучше на примере покажи. Типа есть таблица x, надо чтобы стала y, по условию z
|
|||
13
Альбатрос
02.11.15
✎
10:11
|
То ли инет у меня глючит, то ли браузер, то ли сайт... не отправляются большие сообщения
|
|||
14
Альбатрос
02.11.15
✎
10:12
|
Ща
|
|||
15
Альбатрос
02.11.15
✎
10:12
|
Вот так это работает, если запрос выполнять в цикле:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(ДокументыРозничныхНаценокСрезПоследних.Период) КАК Период, | ДокументыРозничныхНаценокСрезПоследних.Регистратор, | ДокументыРозничныхНаценокСрезПоследних.Регистратор.Дата |ИЗ | РегистрСведений.ДокументыРозничныхНаценок.СрезПоследних( | , | (ТорговыйОбъект = &ЮрЛицо | ИЛИ ТорговыйОбъект = &ТС | ИЛИ ТорговыйОбъект = &Контрагент) | И Используется) КАК ДокументыРозничныхНаценокСрезПоследних | |СГРУППИРОВАТЬ ПО | ДокументыРозничныхНаценокСрезПоследних.Регистратор, | ДокументыРозничныхНаценокСрезПоследних.Регистратор.Дата"; Для каждого СтрокаТЗ из ТЗ Цикл Запрос.УстановитьПараметр("ЮрЛицо", СтрокаТЗ.ЮрЛицо); Запрос.УстановитьПараметр("ТС", СтрокаТЗ.ТорговаяСеть); Запрос.УстановитьПараметр("Контрагент", СтрокаТЗ.Контрагент); Данные = Запрос.Выполнить().Выгрузить(); Сообщить("!"); КонецЦикла; |
|||
16
Альбатрос
02.11.15
✎
10:15
|
(15) Хотя не, так тоже не работает =) Но смысл чего хочу надеюсь понятен =)
|
|||
17
RomanYS
02.11.15
✎
10:17
|
(16) Абсолютно нет
|
|||
18
RomanYS
02.11.15
✎
10:19
|
что на входе?
что ожидается на выходе? структура регистра(измерения)? |
|||
19
Альбатрос
02.11.15
✎
10:24
|
да что за хрень? Сообщения через одно отправляются
|
|||
20
Альбатрос
02.11.15
✎
10:25
|
Вот так работает в цикле
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ДокументыРозничныхНаценокСрезПоследних.Период КАК Период, | ДокументыРозничныхНаценокСрезПоследних.Регистратор, | ДокументыРозничныхНаценокСрезПоследних.Регистратор.Дата |ИЗ | РегистрСведений.ДокументыРозничныхНаценок.СрезПоследних( | , | (ТорговыйОбъект = &ЮрЛицо | ИЛИ ТорговыйОбъект = &ТС | ИЛИ ТорговыйОбъект = &Контрагент) | И Используется) КАК ДокументыРозничныхНаценокСрезПоследних | |УПОРЯДОЧИТЬ ПО | Период УБЫВ"; Для каждого СтрокаТЗ из ТЗ Цикл Запрос.УстановитьПараметр("ЮрЛицо", СтрокаТЗ.ЮрЛицо); Запрос.УстановитьПараметр("ТС", СтрокаТЗ.ТорговаяСеть); Запрос.УстановитьПараметр("Контрагент", СтрокаТЗ.Контрагент); Данные = Запрос.Выполнить().Выгрузить(); //Сообщить("!"); Данные.ВыбратьСтроку(); КонецЦикла; |
|||
21
patria0muerte
02.11.15
✎
10:25
|
Навскидку:
1) Передать таблицу с номерами строк в запрос 2) Распилить на 3ВТ. 3) К ним присобачить срез последних 4) В результирующей - выбрать НомерСтроки и Максимум(Период) |
|||
22
patria0muerte
02.11.15
✎
10:25
|
(21)*2)Распилить на ТРИ ВТ..
|
|||
23
Альбатрос
02.11.15
✎
10:27
|
(21) Спс, ща попробую
|
|||
24
patria0muerte
02.11.15
✎
10:27
|
Точнее даже:
1) Передать таблицу с номерами строк в запрос 2) Распилить на 3ВТ. 3) К каждой присобачить срез последних нужного РС 4) Объединить таблицы в результирующий запрос 5) В результирующей выбрать Максимум(Период) с группировкой по номеру строки |
|||
25
Cyberhawk
02.11.15
✎
10:28
|
Покажи на картинке, что у тебя на входе и что должно быть на выходе
|
|||
26
Альбатрос
02.11.15
✎
10:52
|
||||
27
Альбатрос
02.11.15
✎
11:42
|
Сделал как в (24).
Только пункт 5 изменил и сделал соединением. Группировка и максимум не проканали, ибо в выборке еще регистратор присутствует. |
|||
28
Альбатрос
02.11.15
✎
11:42
|
Всем спасибо, большое спасибо patria0muerte за идею.
|
|||
29
mistеr
02.11.15
✎
12:48
|
(26) Таблицу в ВТ, соединить с регистром по
ТорговыйОбъект = &ЮрЛицо ИЛИ ТорговыйОбъект = &ТС ИЛИ ТорговыйОбъект = &Контрагент Срез нафиг не нужен. |
|||
30
Альбатрос
02.11.15
✎
13:19
|
(29) Ну как вариант.
|
|||
31
patria0muerte
03.11.15
✎
01:45
|
(27) Выкинь регистратор, сгруппируй, потом к уже готовым записям прицепи его из предыдущих ВТ.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |