Имя: Пароль:
1C
 
Ошибка в работе запроса 8.3
0 Сержант ВДВ Онегин
 
08.04.15
12:38
Хочу получить данные о надбавках сотрудника из регистра сведений. Получаю их запросом.

Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
|    СведенияЛьготыДопНадбавкиСрезПоследних.Характеристика КАК Характеристика,
|    СведенияЛьготыДопНадбавкиСрезПоследних.ЗначениеХарактеристики,
|    СведенияЛьготыДопНадбавкиСрезПоследних.ИмяХарактеристики,
|    СведенияЛьготыДопНадбавкиСрезПоследних.КадровоеДанное КАК КадровоеДанное,
|    СведенияЛьготыДопНадбавкиСрезПоследних.Характеристика.Код
|ИЗ
|    РегистрСведений.СведенияЛьготыДопНадбавки.СрезПоследних(&Дата, ) КАК СведенияЛьготыДопНадбавкиСрезПоследних
|ГДЕ
|    СведенияЛьготыДопНадбавкиСрезПоследних.Сотрудник = &Работник
|
|УПОРЯДОЧИТЬ ПО
|    Характеристика,
|    КадровоеДанное";

Запрос.УстановитьПараметр("Дата", КонецДня(Объект.Дата));
Запрос.УстановитьПараметр("Работник", Работник);

Результат = Запрос.Выполнить().Выгрузить();

Но смотрю по отладке в Результат садится ТЗ со всеми данными, а не только последние. В чем проблема?
1 Wobland
 
08.04.15
12:44
в интерпретации результата
2 Ненавижу 1С
 
гуру
08.04.15
12:44
последние в разрезе всех измерений
3 Сержант ВДВ Онегин
 
08.04.15
12:48
(2) как это указать в запросе?
4 Сержант ВДВ Онегин
 
08.04.15
12:48
(1) в смысле?
5 Wobland
 
08.04.15
13:00
(4) в смысле, оно тебе говорит всё верно
6 Сержант ВДВ Онегин
 
08.04.15
13:02
(5) по какой причине он выдает данные по всем надбавкам работника? когда нужно только последние
7 Wobland
 
08.04.15
13:05
(6) такие вот у тебя последние. в разрезе всех измерений
8 Сержант ВДВ Онегин
 
08.04.15
13:08
(7) А как указать в запросе чтоб в разрезе всех измерений?
Измерениями у меня являются Сотрудник, Характеристика и Нумератор
9 Wobland
 
08.04.15
13:09
(8) выбрать нумератор
10 Сержант ВДВ Онегин
 
08.04.15
13:13
(9) выбрал нумератор. Тоже самое. Он по два раза заполнил каждые надбавки

Запрос = Новый Запрос;
  Запрос.Текст ="ВЫБРАТЬ
                |    СведенияЛьготыДопНадбавкиСрезПоследних.ЗначениеХарактеристики,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.ИмяХарактеристики,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.КадровоеДанное КАК КадровоеДанное,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Характеристика.Код,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Характеристика,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Нумератор
                |ИЗ
                |    РегистрСведений.СведенияЛьготыДопНадбавки.СрезПоследних(&Дата, ) КАК СведенияЛьготыДопНадбавкиСрезПоследних
                |ГДЕ
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Сотрудник = &Работник
                |
                |УПОРЯДОЧИТЬ ПО
                |    КадровоеДанное";
    
  Запрос.УстановитьПараметр("Дата", КонецДня(Объект.Дата));
  Запрос.УстановитьПараметр("Работник", Работник);
  Результат = Запрос.Выполнить();
11 break
 
08.04.15
13:17
выбери нумератор и сделай свой срез последних ч/з группировку с использованием агр функции Минимума
12 break
 
08.04.15
13:20
13 bodri
 
08.04.15
13:23
Характеристика - это что (измерение или ресурс)?
14 Сержант ВДВ Онегин
 
08.04.15
13:25
(13) Измерение
15 bodri
 
08.04.15
13:31
|СГРУППИРОВАТЬ ПО
|    Характеристика,
|    Нумератор,
|    Сотрудник

как вариант
16 Сержант ВДВ Онегин
 
08.04.15
13:41
(15) вот так?

Запрос = Новый Запрос;
  Запрос.Текст ="ВЫБРАТЬ
                |    СведенияЛьготыДопНадбавкиСрезПоследних.ЗначениеХарактеристики,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.КадровоеДанное КАК КадровоеДанное,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Характеристика.Код,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Характеристика,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Нумератор КАК Нумератор
                |ИЗ
                |    РегистрСведений.СведенияЛьготыДопНадбавки.СрезПоследних(&Дата, ) КАК СведенияЛьготыДопНадбавкиСрезПоследних
                |ГДЕ
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Сотрудник = &Работник
                |
                |СГРУППИРОВАТЬ ПО
                |    СведенияЛьготыДопНадбавкиСрезПоследних.ЗначениеХарактеристики,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.КадровоеДанное,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Характеристика.Код,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Характеристика,
                |    СведенияЛьготыДопНадбавкиСрезПоследних.Нумератор
                |
                |УПОРЯДОЧИТЬ ПО
                |    КадровоеДанное";
17 hhhh
 
08.04.15
13:51
(16) так как Характиристика - это измерение, срез последних обязан вам выдать последнее по каждой характеристике. Он и выдает.
18 Сержант ВДВ Онегин
 
08.04.15
13:57
(17) по каждой это хорошо. Но зачем он по льготе напрмер Беженец дважды выдает инфо? а не одно последнее?
19 bodri
 
08.04.15
14:00
(18) надо смотреть другие измерения, может 2 разных элемента с одинаковыми названиями
20 D_E_S_131
 
08.04.15
14:10
&Работник когда-нибудь в параметры виртуальной таблицы СрезПоследних "перелезет" из условия ГДЕ?
21 Dmitrii
 
гуру
08.04.15
14:10
(18) > зачем он по льготе напрмер Беженец дважды выдает инфо?

Т.к. Нумератор - измерение, значит есть две записи по "Беженец" с разными значениями измерения "Нумератор".

PS Подозреваю, что неверно спроектирован сам регистр.
22 bodri
 
08.04.15
14:11
(20) тоже мучает этот вопрос)))