Имя: Пароль:
1C
1С v8
1с8 ЗУК программный вывод списка сотрудников почему задваиваются сотрудники
0 VBMADD
 
27.06.14
12:11
Привет братьям по разуму.
Пытаюсь вывести список сотрудников по коду:

//
Пока ВыборкаСотрудник.Следующий() Цикл
      Если ВыборкаСотрудник.ЭтоГруппа Тогда
      Иначе
          Объект_ФЛ = ВыборкаСотрудник.ФизЛицо.ПолучитьОбъект();
          Если (ВыборкаСотрудник.Актуальность = Истина) и (ВыборкаСотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор) Тогда
                Псп = РегистрыСведений.ПаспортныеДанныеФизЛиц.ПолучитьПоследнее(РабочаяДата, Новый Структура("ФизЛицо",ВыборкаСотрудник.ФизЛицо));
              ФИО                = ВыборкаСотрудник.Наименование;
              Должность          = ВыборкаСотрудник.Должность.Наименование;
              Подразделение      = ВыборкаСотрудник.ПодразделениеОрганизации.Наименование;
               Сообщить(Строка(i) +  " ФИО = " + ФИО + " = " + ВыборкаСотрудник.ВерсияДанных);      
              i=i+1;
          КонецЕсли;
      КонецЕсли;
КонецЦикла;
//

Почему-то в списке иногда некоторые сотрудники присутствуют дважды и даже трижды, причем табельный номер у двойников тот же самый.

Может кто знает, подскажите пож-ста ...

Спасибо всем, кто откликнулся.
1 Umga2002
 
27.06.14
12:12
Не зная броду полез в воду....
2 piter3
 
27.06.14
12:12
дубли физ.лиц не?
3 SeraFim
 
27.06.14
12:13
Условие соединения в запросе корявое
4 РенеДекарт
 
27.06.14
12:18
(0) по разным организациям выводит?
5 ptiz
 
27.06.14
12:31
(0) Запрос значит такой.
6 VBMADD
 
27.06.14
13:02
Организация одна, но ВыборкаСотрудник.ВерсияДанных у задвоенного сотрудника - разная, выводит типа
че это означает AAAAAQAAAPQ= не ясно, и как этим воспользоваться, чтобы избежать задвоения


43 ФИО = Варрова Алиса Валерьевна = AAAAAQAAAPQ=
44 ФИО = Варрова Алиса Валерьевна = AAAAAQAAASU=

//
СпрСотрудники = Справочники.СотрудникиОрганизаций;
    ВыборкаСотрудник = СпрСотрудники.Выбрать();

Пока ВыборкаСотрудник.Следующий() Цикл
      Если ВыборкаСотрудник.ЭтоГруппа Тогда
      Иначе
          Если (ВыборкаСотрудник.Актуальность = Истина) и (ВыборкаСотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор) Тогда
              ФИО                = ВыборкаСотрудник.Наименование;
              Должность          = ВыборкаСотрудник.Должность.Наименование;
              Подразделение      = ВыборкаСотрудник.ПодразделениеОрганизации.Наименование;
               Сообщить(Строка(i) +  " ФИО = " + ФИО + " = " + ВыборкаСотрудник.ВерсияДанных);      
              i=i+1;
          КонецЕсли;
      КонецЕсли;
КонецЦикла;
//
7 ale-sarin
 
27.06.14
13:03
(6) Так может это и есть два сотрудника?
Глазами в справочнике их сколько?
8 VBMADD
 
27.06.14
13:06
(7) десительно, в справочнике два, но табельный номер один и тот же, вот так.
Как их тогда различать то не понятно
9 VBMADD
 
27.06.14
13:07
Только поле принят разное
10 ale-sarin
 
27.06.14
13:07
(8) прав был (1).
Есть вид занятости - он разный. Если же вид занятости одинаковый, значит один из них уволен.
11 шаэс
 
27.06.14
13:09
(10) (даже если вид занятости - внутренний совместитель?)
12 ale-sarin
 
27.06.14
13:11
(11) Пытаетесь меня поймать?))
Если есть внутренний, значит второй - основной.
13 ale-sarin
 
27.06.14
13:13
(8) Как различать? По идее номер трудового договора должен быть разный. Если, конечно, кадровики не забивали на него.
14 VBMADD
 
27.06.14
13:15
Нет, видЗанятости у всех - Основное место работы
15 шаэс
 
27.06.14
13:16
(12) (не, не поймать. просто внутренних одновременно может быть больше, чем один работающий)
а смысла задания я не понимаю - вывести всех сотрудников? тогда выводить надо всех, кто не уволен. вывести только основных сотрудников? тогда (основной или внешний)+не уволен
16 VBMADD
 
27.06.14
13:18
(13) точно, номер трудового договора разный и дата трудового договора разная
17 ale-sarin
 
27.06.14
13:18
(14) Задача то в чем?
Если в базе порядок, то один из этих двоих точно уволен.

(12)Ок. Но в (6) два сотрудника. И (опять же если в базе порядок) не могут быть оба внутренними.
18 VBMADD
 
27.06.14
13:23
В кадровых данных обнаружил, кадровые перемещения, может это влияет как то.
А таб.номер, группа сотрудника, вид занятости, не в архиве - все одинаковое
19 шаэс
 
27.06.14
13:23
(17) (я дико извиняюсь за офф перед ТС, но мне все-таки интересно почему не могут быть оба работающих сотрудника внутренним совместителем?)
20 VBMADD
 
27.06.14
13:23
Подразделение и должность - все совпадает
21 шаэс
 
27.06.14
13:24
(18) не может быть одновременно два работающих основных сотрудника. кто-то уволен
22 ale-sarin
 
27.06.14
13:27
(19) Я имею ввиду, что если работник работает по внутреннему совместительству, значит он еще работает в этой же организации и по основному месту работы.
И если он имеет два действующих договора с организацией, и один из по внутреннему совместительству, для меня очевидно, что второй - по основному месту работы.
23 ale-sarin
 
27.06.14
13:28
(18) Дата приема и дата увольнения какие?
24 VBMADD
 
27.06.14
13:29
Вот мне тоже интересно, как это получается, что сотрудник с одним и тем же таб.номером в одном и том же подразделении, организации и в той же должности и с тем же видом занятости и не уволен и в списке дважды. Только в графе Принят в одном случае стоит 01.08.2012, а в другом 01.08.2013
25 шаэс
 
27.06.14
13:30
(24) а откуда знаете, что не уволен? документа увольнения не видите?
26 VBMADD
 
27.06.14
13:36
Которые уволенные - те находятся в архиве и у них должен быть реквизит ВыборкаСотрудник.Актуальность = Лож
27 VBMADD
 
27.06.14
13:39
Т.Е. получается что перезаключил человек трудовой договор без увольнения и почему то стало две записи в списке сотрудников
28 VBMADD
 
27.06.14
13:44
Не был не прав, есть дата увольнения у первого из двух,
а я считал, что реквизит ВыборкаСотрудник.Актуальность = Лож и есть признак увольнения сотрудника
29 шаэс
 
27.06.14
13:51
(28) (актуальность - это для удобства пользователя. дабы глаза не мозолил. и автоматом уволенный сотрудник (в рамках типовой) в архив не уходит). а так есть ДатаУвольнения - надежнее вроде признака нет
30 VBMADD
 
27.06.14
13:54
(29)Реквизит Актуальность - просто запись не находится в архиве.
Бухгалтерша должна после увольнения сотрудника переносить его в архив, но не перенесла, отсюда и вся путаница.

Пож-ста, Напиши строку как узнать, что сотрудник работает по ДатаУвольнения, если не трудно
31 ale-sarin
 
27.06.14
13:57
(30) Сотрудник.ДатаУвольнения
32 Segate
 
27.06.14
14:01
Ловите наркомана!

(0) перепиши запрос
минимум добавь параметрs
Сотрудник.ЭтоГруппа = ЛОЖЬ
(ВыборкаСотрудник.Актуальность = Истина) и (ВыборкаСотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор)

И это тоже в запрос засунь

И посмотри что у тебя выборка дает. Найди в чем косяки и исправь Еще один уникум со стажем 7 лет
33 VBMADD
 
27.06.14
14:01
(31) типа что ли Сотрудник.ДатаУвольнения = ПустоеЗначение?
34 VBMADD
 
27.06.14
14:03
(32) не обзывайся пож-ста, седнятоко первый раз открыл конфигурацию 1с8
35 VBMADD
 
27.06.14
14:05
(32) а у тебя Стаж: 6 лет 2 месяца 11 дней
36 Segate
 
27.06.14
14:09
(35) и я таких дурных выборок не делаю. =)
37 Segate
 
27.06.14
14:10
(35) запрос покажи
38 VBMADD
 
27.06.14
14:11
(36) и это уже положительный момент, лично мне так катца...
39 Segate
 
27.06.14
14:16
(38)

"Выбрать
Сотрудники.ссылка
Из
Справочники.сотрудники как сотрудники
Где
Сотрудники.ЭтоГруппа = ЛОЖЬ
И Сотрудники.Актуальность = Истина
И Сотрудники.ВидДоговора =&ВидДоговора//тут я бы через ЗНАЧЕНИЕ сделал, но синтаксис не помню, в конструкторе посмотри. ну или передавай параметр

И в выборку просто запрос.выполнить().выбрать()
40 VBMADD
 
27.06.14
14:18
просто добавил условие на работющего сотрудника

//
(ВыборкаСотрудник.ДатаУвольнения-ВыборкаСотрудник.ДатаПриемаНаРаботу) < 0

//

Задвоения закончились...

Всем спасибо за приятное общение
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший