Имя: Пароль:
1C
1С v8
Как получить Срез последних.
,
0 ЗлаяЗая
 
18.03.19
16:21
Нужно получить значения Должности и Подразделения на текущую дату.    
        Запрос= Новый Запрос;
    Запрос.Текст=    "ВЫБРАТЬ
                     |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
                     |    РаботникиОрганизацийСрезПоследних.Должность,
                     |    РаботникиОрганизацийСрезПоследних.Сотрудник
                     |ИЗ
                     |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, ) КАК РаботникиОрганизацийСрезПоследних";
    Запрос.УстановитьПараметр("Дата",НачалоДня(ТекущаяДата()));
    Сотрудники=Запрос.Выполнить().Выгрузить();
А у меня выгружает практически все. Что не так сделала?
ЗЫ. Знаю, что фотку не выложила. А еще?
1 runoff_runoff
 
18.03.19
16:27
поле "РаботникиОрганизацийСрезПоследних.Период" вставьте для чистоты эксперимента
2 exwill
 
18.03.19
16:36
(0) Выгружаются все сотрудники с должностями и подразделениями?
3 Ns33
 
18.03.19
16:43
ГДЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> &Увольнение

Тут возможно потребуется расширить условие на ПричинаИзмененияСостояния
4 yavasya
 
18.03.19
17:14
(0) ну правильно, сделай сначала срез последних по сотруднику (таблица сотрудник, период), помести в вт, затем соедени вт с регистром по сотрунику и периоду и будет тебе счастье
5 Вафель
 
18.03.19
17:16
так в ЗУПе нужно же их апи использовать
6 lodger
 
18.03.19
17:18
(0) все дело в том, что надо заглянуть в РС и состав измерений. много думать что такое срез последних. потом ругать автора этого РС до 7 го колена родства.
7 Greeen
 
18.03.19
18:38
Запрос= Новый Запрос;
    Запрос.Текст=    "ВЫБРАТЬ
                     |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
                     |    РаботникиОрганизацийСрезПоследних.Должность,
                     |    РаботникиОрганизацийСрезПоследних.Сотрудник
                     |ИЗ
                     |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, Сотрудник  = &Сотрудник) КАК РаботникиОрганизацийСрезПоследних";
    Запрос.УстановитьПараметр("Дата",НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("Сотрудник",Справочники.СотрудникиОрганизаций.НайтиПоНаименованию("ЗлаяЗая"));
8 Fram
 
18.03.19
22:11
(7) ИМХО, под "все" она имела ввиду не всех сотрудников, а все их должности и подразделения
9 ЗлаяЗая
 
19.03.19
08:55
Измерения- Физ.Лицо, остальное в ресурсах.
Нужно по каждому сотруднику получить последнее состояние должности и подразделения.
10 sqr4
 
19.03.19
09:13
(9) сотрудник или физлицо. Про фото надо напоминать?
11 ЗлаяЗая
 
19.03.19
09:16
(10) физ.лицо.
про фото сама помню, повинилась в сабже :)
12 sqr4
 
19.03.19
09:19
А это ЗУП 2.5?
13 ЗлаяЗая
 
19.03.19
09:19
"По каждой комбинации измерений будет найдена наиболее поздняя запись, но не более поздняя, чем указанная дата"
У меня измерение одно. Значит должна отбирать по каждому человеку 1 запись?
14 ЗлаяЗая
 
19.03.19
09:20
(12) это УПП 1.3
15 sqr4
 
19.03.19
09:22
Нет под рукой к сожалению. Одному физ лицу может соответствовать несколько сотрудников
16 ЗлаяЗая
 
19.03.19
09:25
блин.... запрос по РС РаботникиОрганизации, а структуру смотрю у РС Работники.
Эх, понедельник  :)
17 sqr4
 
19.03.19
09:26
Причем оба могут работать, а может быть и так что увольнялся и принимался заново, соответственно будет несколько записей, поэтому надо выбрать как я понимаю только работающих.
18 sqr4
 
19.03.19
09:26
Блин первая часть стерлась. Одному физ лицу может множество сотрудников соответствовать.
19 sqr4
 
19.03.19
09:27
По вашему запросу выведет всех и работающих и не работающих, выше уже подсказали как это убрать. Осталось уточнить про совместительство, нужно его выводить или нет.
20 ЗлаяЗая
 
19.03.19
09:39
Запрос= Новый Запрос;
    Запрос.Текст=    "ВЫБРАТЬ РАЗЛИЧНЫЕ
                     |    РаботникиОрганизаций.Сотрудник
                     |ПОМЕСТИТЬ СписокСотр
                     |ИЗ
                     |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
                     |    РаботникиОрганизацийСрезПоследних.Должность,
                     |    РаботникиОрганизацийСрезПоследних.Сотрудник,
                     |    РаботникиОрганизацийСрезПоследних.Сотрудник.Код КАК ТабНомер
                     |ИЗ
                     |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, ??????????) КАК РаботникиОрганизацийСрезПоследних,
                     |    СписокСотр КАК СписокСотр";
А как мне во втором параметре СрезПоследних указать, что отбор только по СписокСотр должен Быть?
21 Фрэнки
 
19.03.19
09:44
Запрос= Новый Запрос;
    Запрос.Текст=    "ВЫБРАТЬ РАЗЛИЧНЫЕ
                     |    РаботникиОрганизаций.Сотрудник
                     |ПОМЕСТИТЬ СписокСотр
                     |ИЗ
                     |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                     |;
                     |
                     ////////////////////////////////////////////////////////////////////////////////

                     |ВЫБРАТЬ
                     |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
                     |    РаботникиОрганизацийСрезПоследних.Должность,
                     |    РаботникиОрганизацийСрезПоследних.Сотрудник,
                     |    РаботникиОрганизацийСрезПоследних.Сотрудник.Код КАК ТабНомер
                     |ИЗ
                     |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Дата, Сотрудник В (Выбрать Сотрудник ИЗ СписокСотр)) КАК РаботникиОрганизацийСрезПоследних";
22 sqr4
 
19.03.19
09:46
Первый запрос не даст нужного результата, сотрудники будут разные. Допустим Иванов ИИ(код 001) пришел - уволился, затем опять принялся на работу то у НОВОГО сотрудника Иванов ИИ будет код к примеру 002.
(3) указал как убрать уволенных сотрудников, это уберет часть дублей
23 sqr4
 
19.03.19
09:52
После этого останутся только совместители. Т.е человек может в одной организации работать на нескольких должностях, но основное место работы у него будет одно. И тут уже в зависимости от поставленной вам задачи, нужно будет либо убирать совместителей либо оставлять так как есть.
http://info1c.com/?p=802
Для наглядности
24 Фрэнки
 
19.03.19
09:54
(23) я думаю, что в данном конкретном топике вопрос больше из области "правильности" составления запросов, синтаксиса и приемов написания текстов запросов, чем о самой логике решения конкретной задачи.
25 sqr4
 
19.03.19
09:57
(24) вполне может быть
26 ЗлаяЗая
 
19.03.19
10:05
(22) в этом регистре только записи при приеме нового сотрудника или при смене у него должности или подразделения, совмещения и увольнения нет.
27 sqr4
 
19.03.19
10:06
ПричинаИзмененияСостояния такого ресурса нет*
28 ЗлаяЗая
 
19.03.19
10:09
(21) сделала. программ впала в глубокую задумчивость и выходить не собирается :((((
29 ЗлаяЗая
 
19.03.19
10:10
+28 если это так долго работает- мне простым перебором быстрее выбрать нужное
30 sqr4
 
19.03.19
10:11
(28) А цель этого условия?
31 ЗлаяЗая
 
19.03.19
10:12
(30) Нужно по каждому сотруднику получить последнее состояние должности и подразделения.
32 sqr4
 
19.03.19
10:18
(31) ваш запрос это делает! Чем не устраивает, текущий результат?
33 ЗлаяЗая
 
19.03.19
10:24
(32) мой первоначальный ВСЕ дает, а не последнее.
а запрос из п 21. вообще долго крутился и объявил, что памяти ему не хватает.
34 sqr4
 
19.03.19
10:27
(33) А какая структура у регистра, сделайте скрин, набора измерений и ресурсов, я к сожалению не помню
35 Фрэнки
 
19.03.19
10:31
(33) там же не одно измерение определено у этого регистра.
Нужно смотреть на конкретной базе/конфигурации, а держать под руками УПП 1.3 ради простых экспериментов не с руки.
Или раскрывать всю структуру по кусочкам в процессе общения.
Или ждать, когда придет в ветку тот, кто прямо сейчас в УПП смотрит
36 ЗлаяЗая
 
19.03.19
10:33
А как тут вставлять?
37 Фрэнки
 
19.03.19
10:34
если скрины, то только ссылку можно оставить на скрин, брошенный куда-то еще
38 ЗлаяЗая
 
19.03.19
10:36
39 ЗлаяЗая
 
19.03.19
10:37
Оно в принципе бодро отработало и при вызове запроса по каждому сотруднику. Но это ж неправильно.
40 sqr4
 
19.03.19
10:40
Ну не может тут вывести все записи. Тут выводит последние записи по набору измерений
41 ЗлаяЗая
 
19.03.19
11:04
(40) всего 4 измерения
Организация    заполнено, одно и тоже
УдалитьФизлицо пустое
УдалитьПриказ  пустое

получается, что набор измерений один, отличаются только Сотрудником. Т.е. по сути должен отбирать 1 запись. А он не отбирает.
42 sqr4
 
19.03.19
11:05
(41) отбирает!!! рядом с сотрудником выведи код и убедись или меня в обратном убеди
43 ЗлаяЗая
 
19.03.19
11:09
(42) да вывожу код, тот же :(
44 sqr4
 
19.03.19
11:12
т.е сотрудник 1 код 1 подразделение 1
сотрудник 1 код 1 подразделение 2
Так?
45 sqr4
 
19.03.19
11:12
И пустых в 1с я пока три типа придумал
46 sqr4
 
19.03.19
11:13
Выведи типЗначения для УдалитьФизЛицо и УдалитьПРиказ