Имя: Пароль:
1C
1С v8
Как из Регистра сведений получить всех уволенных/оставшихся сотрудников?
,
0 MrKartez
 
09.07.14
09:26
Делаю вот таким образом:

ВЫБРАТЬ
    РаботникиОрганизаций.Период,
    РаботникиОрганизаций.Регистратор,
    РаботникиОрганизаций.Сотрудник,
    РаботникиОрганизаций.Организация
ИЗ
    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ГДЕ
    РаботникиОрганизаций.Регистратор = &Регистратор

Смысл в чем, при установке конкретного документа Увольнения, мне выдаёт один результат - конкретные данные по конкретному документу. Мне надо, чтобы мне показывало всех сотрудников, на которых был заведен документ увольнения - это регистратор. Одного показывает нормально (когда в качестве параметра ставлю конкретный документ). По идее, когда оставляю поле параметра пустым мне должны выставлять ВСЕХ сотрудников, на которых заводился Док Увольнения, но этого не происходит. Не могу понять почему.

p.s. условие на отбор же лучше задавать в свойствах виртуальной таблицы?
1 piter3
 
09.07.14
09:32
все работает
2 skunk
 
09.07.14
09:33
там вроде как должен быть ресурс ПричинаИзмененияСостояния ... в котором кажут увольнение(это перечисление)
3 Никулин Леонид
 
09.07.14
09:36
Где
РаботникиОрганизаций.Регистратор Ссылка Документ.Увольнение
4 Никулин Леонид
 
09.07.14
09:39
(+3) Да. Действительно условие лучше накладывать в свойствах виртуальной таблицы
5 MrKartez
 
09.07.14
09:49
Спасибо. А вот еще вопрос: работаю в ВТ.СрезПоследних. Думал, что будет выдавать последнее состояние на работника. Например : Уволен или Принят. Но выдаёт весь список состояние: например 11.11.11 Перемещен, 12.12.12 Уволен хотелось бы получать только последнее значение, а именно - 12.12.12 Уволен. Как реализовать? В условии ВТ поставил параметр &Дата
6 barrgand
 
09.07.14
09:56
7 prince64
 
09.07.14
09:56
(5) сейчас на тестовой все пробую, выдает последнюю запись по работнику. приведи текст запроса
8 barrgand
 
09.07.14
09:58
(7) А ты знаешь его конфу?
9 Никулин Леонид
 
09.07.14
10:00
Срез последних для этого как раз и придумали. Возможно не верно составлен запрос. Показывай
10 MrKartez
 
09.07.14
10:07
ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Период,
    РаботникиОрганизацийСрезПоследних.Регистратор,
    РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
    РаботникиОрганизацийСрезПоследних.Должность
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, ) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
    РаботникиОрганизацийСрезПоследних.Сотрудник = &Сотрудник

УПОРЯДОЧИТЬ ПО
    РаботникиОрганизацийСрезПоследних.Период УБЫВ

Написал вот так, сейчас проверял полученные данные, в нем сотрудники дублируются. Когда ставлю в параметры конкретного сотрудника, мне выдает последнюю инфу на него. Ставлю параметрт сотрудника пустым и мне ничего не выдаёт в результат О_о
11 barrgand
 
09.07.14
10:10
(10) Удивительно, нет записей по пустому сотруднику?? Да как так.
12 MrKartez
 
09.07.14
10:16
(11) Решил проблему. Справочник сотрудники Иерархический, прописал в условии В ИЕРАРХИИ и заработало
13 barrgand
 
09.07.14
10:21
(12) Хм, молодец. А что должно было заработать?
И параметр убери в параметры ВТ, а то некрасиво
14 MrKartez
 
09.07.14
10:26
(13) Отражение всех сотрудников при пустом параметре.

Я так и не понял, почему мне не выдает последние значения. Регистр же называется СрезПоследних,по логике он же должен будет выдавать мне Последние, иначе зачем его называть "СрезПоследних")
15 barrgand
 
09.07.14
10:28
(14) Получает наиболее поздние записи регистра, соответствующие установленным в параметрах метода значениям ключевых полей. Записи подбираются для каждого сочетания из всех имеющихся значений измерений регистра. (с) СП
16 MrKartez
 
09.07.14
10:32
(15) ух, это получается я должен получить запросом список всех физических лиц (сотрудники тут не подойдут, по скольку люди уволенные не числятся как сотры), потом передать этот список в качестве параметра в запрос и только тооогда мне выдаст последнее по каждому сотруднику
17 MrKartez
 
09.07.14
10:32
+(16)  Буду пробовать :DDD
18 bvg
 
09.07.14
10:36
(0) с этим регистром не все так просто )
19 barrgand
 
09.07.14
10:36
(16) Я такого не говорил. Если что, я тут ни при чем
20 Крошка Ру
 
09.07.14
10:40
(14) Срез последних выдает срез в разрезе измерений регистра. Если у двух строк регистра различается хотя бы одно измерение, в срез попадут обе.
Посмотри список измерений регистра, в запросе выведи их список, сравни дублирующиеся строки по всем измерениями.
И на будущее - пиши с какой конфигурацией работаешь.
21 Никулин Леонид
 
09.07.14
11:11
ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Период,
    РаботникиОрганизацийСрезПоследних.Регистратор,
    РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
    РаботникиОрганизацийСрезПоследних.Должность
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
            &Дата,
            Организация = &Организация
                И Регистратор ССЫЛКА Документ.УвольнениеИзОрганизаций) КАК РаботникиОрганизацийСрезПоследних

УПОРЯДОЧИТЬ ПО
    РаботникиОрганизацийСрезПоследних.Период УБЫВ
22 Никулин Леонид
 
09.07.14
11:15
(21+) Это запрос для УПП. Вероятно твои сотрудники увольнялись несколько раз из разных организаций. Вот у тебя и записей > 1
23 MrKartez
 
09.07.14
12:12
(22) к сожалению все они работают на одном предприятии(
24 MrKartez
 
09.07.14
12:20
(21) а как например сделать так, чтобы наоборот, выбирались только документы которые не являются увольнениями?
25 Крошка Ру
 
09.07.14
12:21
(24) Вестимо

НЕ Регистратор ССЫЛКА Документ.УвольнениеИзОрганизаций
26 Никулин Леонид
 
09.07.14
12:37
(25) Да.

Значит если одна организация тогда смотри вот что. Найди 2 (или больше) записи по одному сотруднику и меджу ними найди различия по другим реквизитам
27 Никулин Леонид
 
09.07.14
12:39
может их с разных должностей увольняли или разные причины изменения состояния
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.