Имя: Пароль:
1C
1С v8
ЗУП 2.5. Вопрос по запросу.
,
0 Target1025
 
06.05.20
11:44
регистр сведений РаботникиОрганизаций имеет измерение Сотрудник и ресурс "ПричинаИзмененияСостояния": ПриемНаРаботу, Перемещение, Увольнение. Как отобрать СрезПоследних на определенную дату, исключив из таблицы сотрудников, у кого на данную дату ПричинаИзмененияСостояния = Увольнение?
Так запрос не работает:
"ВЫБРАТЬ
|    РаботникиОрганизаций.Сотрудник
|ПОМЕСТИТЬ СотрудникиНаРаботе
|ИЗ
|    РегистрСведений.РаботникиОрганизаций.СрезПоследних(ДАТАВРЕМЯ(2018, 12, 31, 23, 59, 59), ПричинаИзменениясостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) КАК РаботникиОрганизаций"

В более широком плане, требуется отобрать работающих сотрудников на нужную дату, при этом взять запись приема на работу.
1 Target1025
 
06.05.20
11:59
(0) Либо, как сделать выборку тех сотрудников, у кого среди записей данного регистра нет записи с причиной изменения = увольнение, т.е., отобрать работающих на данную дату?
2 RomaH
 
naïve
06.05.20
12:04
... зачем ты отбор в параметры виртуальной таблицы в этом случае засовываешь?
так ты получаешь именно срез последних у которых не уволен

там есть еще причина изменения состояния завершение ... но для увольнения она не важна
3 RomaH
 
naïve
06.05.20
12:04
засовывай в "ГДЕ"
4 Target1025
 
06.05.20
12:08
(2) Какое-то сильное колдунство...
5 Target1025
 
06.05.20
12:33
(0) В развитие вопроса. Вот этот запрос почему-то в результат возвращает таблицу значений, где ровно одна колонка "Количество" и ровно одна строка с числом 784 (количество записей):

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    ЗАпрос.Текст = "ВЫБРАТЬ
                   |    РаботникиОрганизаций.Сотрудник,
                   |    РаботникиОрганизаций.Должность КАК ДолжностьНа3112,
                   |    РаботникиОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизацииНа3112
                   |ПОМЕСТИТЬ СотрудникиНаРаботе
                   |ИЗ
                   |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(ДАТАВРЕМЯ(2018, 12, 31, 23, 59, 59), ) КАК РаботникиОрганизаций
                   |ГДЕ
                   |    РаботникиОрганизаций.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    РаботникиОрганизаций.Период,
                   |    РаботникиОрганизаций.ПервичныйДокумент,
                   |    РаботникиОрганизаций.Сотрудник,
                   |    РаботникиОрганизаций.Организация,
                   |    РаботникиОрганизаций.ПодразделениеОрганизации,
                   |    РаботникиОрганизаций.Должность,
                   |    СотрудникиНаРаботе.ДолжностьНа3112,
                   |    СотрудникиНаРаботе.ПодразделениеОрганизацииНа3112
                   |ПОМЕСТИТЬ СотрудникиПринятые
                   |ИЗ
                   |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ СотрудникиНаРаботе КАК СотрудникиНаРаботе
                   |        ПО РаботникиОрганизаций.Сотрудник = СотрудникиНаРаботе.Сотрудник
                   |ГДЕ
                   |    РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)";
    результаты = Запрос.ВыполнитьПакет();
    ТЗ = Результаты[1].Выгрузить();

САма таблица не "выдергивается". Что-то сделал не так? ps. Если ответа не видите, то не парьтесь, я выдерну сведения через Менеджервременныхтаблиц, но это уже способ "удаляем гланды через ж..."ю
6 RomaH
 
naïve
06.05.20
13:18
ПОМЕСТИТЬ СотрудникиПринятые
7 Target1025
 
06.05.20
14:21
(6) запись же есть... При чем, там в пакете создаются две таблицы, и ни одна через результаты[X].выгрузить() не читаются.ю
8 RomaH
 
naïve
06.05.20
14:23
удали строку
9 ИУБиПовиц
 
06.05.20
14:40
(7) А если так Запрос.МенеджерВременныхТаблиц.Таблицы["СотрудникиПринятые"].ПолучитьДанные().Выгрузить()
10 Gucci76
 
06.05.20
16:54
А по реквизиту ДатаУвольнения сотрудника не проще?
Знаю что 1с так не рекомендует, но думаю прокатит и достаточно надежно.
11 RomaH
 
naïve
06.05.20
17:12
(10) отменя проведения документа увольнения чистит реквизит?
12 Gucci76
 
06.05.20
21:11
(11) Отменяет.
AdBlock убивает бесплатный контент. 1Сергей