Имя: Пароль:
1C
1С v8
Запрос к регистру сведений
, ,
0 Woiager1984
 
14.09.16
22:23
Подскажите почему запрос выбирает только 1 запись из периодич.регистра сведений подчин. регистратору,сам запрос такой:
Запрос = Новый Запрос;
    Запрос.Текст =

    "ВЫБРАТЬ
    |    Axel_ОкладПедагогиСрезПоследних.Оклад
    |ИЗ
    |    РегистрСведений.Axel_ОкладПедагоги.СрезПоследних(&Дата,Сотрудник В (&Сотрудники)) КАК Axel_ОкладПедагогиСрезПоследних
    |";
    
    Запрос.УстановитьПараметр("Дата",Дата);
    Запрос.УстановитьПараметр("Сотрудники",Сотрудник);

    Выборка = Запрос.Выполнить().Выбрать();
1 jsmith
 
14.09.16
22:26
Сотрудник что за тип данных?
2 mkalimulin
 
14.09.16
22:27
(0) А сколько должно быть?
3 hhhh
 
14.09.16
22:28
(0) а где цикл по выборке?
4 Woiager1984
 
14.09.16
22:29
Тип СправочникСсылка.СотрудникиОрганизаций

У меня в данном регистре хранится оклад сотрудника,который иногда меняется и мне нужно на определенную дату получить значение оклада. Вот весь код
Запрос = Новый Запрос;
    Запрос.Текст =

    "ВЫБРАТЬ
    |    Axel_ОкладПедагогиСрезПоследних.Оклад
    |ИЗ
    |    РегистрСведений.Axel_ОкладПедагоги.СрезПоследних(&Дата) КАК Axel_ОкладПедагогиСрезПоследних
    |";
    
    Запрос.УстановитьПараметр("Дата",Дата);
    //Запрос.УстановитьПараметр("Сотрудники",Сотрудник);

    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() Тогда
        Оклад=Выборка.Оклад;
    КонецЕсли;
5 Woiager1984
 
14.09.16
22:30
вернее вот такой

Запрос = Новый Запрос;
    Запрос.Текст =

    "ВЫБРАТЬ
    |    Axel_ОкладПедагогиСрезПоследних.Оклад
    |ИЗ
    |    РегистрСведений.Axel_ОкладПедагоги.СрезПоследних(&Дата,Сотрудник = &Сотрудники) КАК Axel_ОкладПедагогиСрезПоследних
    |";
    
    Запрос.УстановитьПараметр("Дата",Дата);
    Запрос.УстановитьПараметр("Сотрудники",Сотрудник);

    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() Тогда
        Оклад=Выборка.Оклад;
    КонецЕсли;
6 hhhh
 
14.09.16
22:31
(5) ну, правильно работает, должна быть одна запись.
7 jsmith
 
14.09.16
22:31
А сколько записей-то должно быть. Одна и должна быть, не?
8 mkalimulin
 
14.09.16
22:33
(5) Так в чем вопрос-то?
9 Woiager1984
 
14.09.16
22:33
01.01.2015 2000
01.01.2006 3000
мне нужно получить на 01.09.2016 3000, а в запросе хоть тресни 2000 )))
10 mkalimulin
 
14.09.16
22:35
(9) Последний оклад - 2000. Тебе ведь последний нужен?
11 youalex
 
14.09.16
22:35
(0) что за Axel? За использование разных языков в одном имени - нужно отбивать пальцы молотком, ждать когда они сгниют, отделять  их от кисти  пилочкой от ногтей, и потом, этими же сгнившими вялыми пальцами вытыкать глаза тем кто так сделал.
12 Woiager1984
 
14.09.16
22:36
01.01.2015 2000
01.01.2016 3000
ошибся годом
13 mkalimulin
 
14.09.16
22:38
(12) Так может ты и в параметре ошибся?
14 Woiager1984
 
14.09.16
22:38
нет
15 hhhh
 
14.09.16
22:39
(12) наверно разные сотрудники у этих окладов. Сделай одинакового сотрудника, тогда 3000 выберется.
16 mkalimulin
 
14.09.16
22:39
(14) да
17 AdApter
 
14.09.16
22:41
Woiager - это типа путешественник, моряк? У тебя даже в нике ошибка :)
18 hhhh
 
14.09.16
22:41
(16) ничего он не ошибся, просто срез последних так работает, по каждому сотруднику, выдает строчку.
19 Woiager1984
 
14.09.16
22:42
А как мне получить последнее значение оклада?
20 Woiager1984
 
14.09.16
22:43
Открываю регистр сведений делаю отбор по сотруднику именно по тому,там две строки.
21 mkalimulin
 
14.09.16
22:45
(19) Проверить параметры. Запрос правильный.
22 hhhh
 
14.09.16
22:46
(20) значит еще есть измерения у этого регистра
23 youalex
 
14.09.16
22:46
(19) для последнего - период не нужно указывать.  Оно и так выберет последний (на 3999 год вроде, но в случае с РС не уверен)
24 Woiager1984
 
14.09.16
23:03
Есть еще два измерения.
25 1sanekmaloi1
 
15.09.16
00:02
"Поздравляю Шарик ты балбес" ©
Срез последних это не одна запись, это последнии записи по комбинациям измерений, и если в коде поменять условный оператор на цикл, мне кажется там будут еще записи.