Имя: Пароль:
1C
1С v8
Проблема с запросом.
,
0 Заварник
 
16.11.15
10:17
Нужно в зависимости от суммы вычисляемого поля стаж проставить коды. Ругается нет поля стаж. Не нашел где описано работает ли конструкция ВЫБОР КОГДА с вычисляемыми полями или нет.

ВЫБРАТЬ
    РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ) КАК Стаж,
    РаботникиОрганизацийСрезПоследних.Должность,
    ФИОФизЛиц.Фамилия,
    ФИОФизЛиц.Имя,
    ФИОФизЛиц.Отчество,
    Выбор когда Стаж > 36 тогда Стаж = 06
          Когда Стаж < 36 и Стаж > 12 тогда Стаж = 05
          Когда Стаж < 12 и Стаж > 6 тогда Стаж = 03
          Когда Стаж < 6  и Стаж > 3 тогда Стаж = 02
          Когда Стаж < 3 и Стаж > 0 Тогда Стаж = 01
    Конец Как Стаж
    

ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецПериода, ПодразделениеОрганизации В ИЕРАРХИИ (&Подразделение)) КАК РаботникиОрганизацийСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц
        ПО РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Ссылка = ФИОФизЛиц.ФизЛицо
ГДЕ
    (РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения = &ПустаяДата
            ИЛИ РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения >= &НачалоПериода)
АВТОУПОРЯДОЧИВАНИЕ
1 Господин ПЖ
 
16.11.15
10:18
выбор когда РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ)
2 cw014
 
16.11.15
10:18
Потому что нет поля "стаж" у тебя
3 ДенисЧ
 
16.11.15
10:19
Выбор когда РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ)> 36 тогда 06
          Когда РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ)< 36 и РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ)> 12 тогда 05
          Когда РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ)< 12 и РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ)> 6 тогда 03
          Когда Стаж = 01
    Конец Как Стаж
4 cw014
 
16.11.15
10:19
И вот это "тогда Стаж = 06" просто жедевр
5 Ненавижу 1С
 
гуру
16.11.15
10:21
а еслиСтаж равен 3, то будет NULL
6 cw014
 
16.11.15
10:22
ВЫБРАТЬ
    ВложенныйЗапрос.Должность,
    ВложенныйЗапрос.Фамилия,
    ВложенныйЗапрос.Имя,
    ВложенныйЗапрос.Отчество,
    ВЫБОР КОГДА ВложенныйЗапрос.Стаж > 36 ТОГДА 06
    КОГДА ВложенныйЗапрос.Стаж < 36 и ВложенныйЗапрос.Стаж > 12 ТОГДА 05
    КОГДА ВложенныйЗапрос.Стаж < 12 и ВложенныйЗапрос.Стаж > 6 ТОГДА 03
    КОГДА ВложенныйЗапрос.Стаж < 6 и ВложенныйЗапрос.Стаж > 3 ТОГДА 02
    КОГДА ВложенныйЗапрос.Стаж < 3 и ВложенныйЗапрос.Стаж > 0 ТОГДА 01 КОНЕЦ КАК Стаж
ИЗ
(ВЫБРАТЬ
    РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ) КАК Стаж,
    РаботникиОрганизацийСрезПоследних.Должность,
    ФИОФизЛиц.Фамилия,
    ФИОФизЛиц.Имя,
    ФИОФизЛиц.Отчество
    

ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецПериода, ПодразделениеОрганизации В ИЕРАРХИИ (&Подразделение)) КАК РаботникиОрганизацийСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц КАК ФИОФизЛиц
        ПО РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Ссылка = ФИОФизЛиц.ФизЛицо
ГДЕ
    (РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения = &ПустаяДата
            ИЛИ РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения >= &НачалоПериода)) КАК ВложенныйЗапрос
АВТОУПОРЯДОЧИВАНИЕ
7 Ненавижу 1С
 
гуру
16.11.15
10:24
можно проще:

ВЫБОР
КОГДА ВложенныйЗапрос.Стаж < 3 ТОГДА "01"
КОГДА ВложенныйЗапрос.Стаж < 6 ТОГДА "02"
КОГДА ВложенныйЗапрос.Стаж < 12 ТОГДА "03"
КОГДА ВложенныйЗапрос.Стаж < 36 ТОГДА "05"
КОГДА ВложенныйЗапрос.Стаж >= 36 ТОГДА "06"
КОНЕЦ
8 Заварник
 
16.11.15
10:25
(2) ну как нету а вот разве не поле создается
РАЗНОСТЬДАТ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, &КонецПериода, МЕСЯЦ) КАК Стаж,
9 ДенисЧ
 
16.11.15
10:25
(8) нет, не создаётся
10 Заварник
 
16.11.15
10:26
(3) спасибо понял.
11 cw014
 
16.11.15
10:29
Как так не создается? Должно. Прямо в метаданных регистра сведений налету и динамически
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.