Версия для печати темы (https://pro1c.org.ua/index.php?s=9f7189b8e6f98d93fec2f75c795d6fbd&showtopic=54056)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Подразделение в расчетной ведомости организации

Автор: aik2001 10.09.19, 12:47

Есть несколько сотрудников которые работали в одном подразделении, а потом в другом, переведены кадровым перемещением, не совместители.
Если в ведомости делать отбор по актуальному подразделению сотрудник попадает в него если, по старому подразделению то в старое.
Если без отбора то показывает в актуальном. В чем может быть причина.


Управление торговым предприятием для Украины", редакция 1.2. (1.2.51.1)

Автор: fly 10.09.19, 14:14

aik2001 @ Сегодня, 13:47 * ,

Цитата(aik2001 @ 10.09.19, 13:47) *
В чем может быть причина.


в ведомость попадают сотрудники работавшие в этом подразделении за указанный период.

доступными словами "почему не подает и в старое и новое?":
"примерно такое условие, если сотрудник уже в числиться сейчас в другом подразделении, то попадает - где числиться, иначе попадает в текущее подразделение"

Автор: aik2001 10.09.19, 14:30

Цитата(fly @ 10.09.19, 15:14) *
доступными словами "почему не подает и в старое и новое?":


Проблема в том что он как раз попадает. Хотя уже не работает в этом подразделении, переведен 01.04 в другое.
А в ведомости за август попадает и в старое и в новое, если делать по ним отбор. Без отбора подразделение указывается актуальное.


Автор: fly 10.09.19, 14:47

aik2001 @ Сегодня, 13:47 * ,

Цитата(aik2001 @ 10.09.19, 13:47) *
Если в ведомости делать отбор


там есть несколько ведомостей, какую имели ввиду конкретно?

Автор: fly 10.09.19, 15:47

aik2001 @ Сегодня, 15:30 * ,

Цитата(aik2001 @ 10.09.19, 15:30) *
Проблема в том что он как раз попадает. Хотя уже не работает в этом подразделении, переведен 01.04 в другое.
А в ведомости за август попадает и в старое и в новое, если делать по ним отбор. Без отбора подразделение указывается актуальное.



Когда ставите отбор - Подразделение, то он на уровне Последних значений ищет Сотрудника и Подразделение
Если не ставите отбор - Подразделдение, ищет только последнее значение только - Сотрудник

ВЫБРАТЬ
    |                Работники.ПодразделениеОрганизации                        КАК Подразделение,
    |                Работники.Сотрудник                                        КАК Сотрудник,
    |                Работники.Организация                                    КАК Организация
    |            ИЗ
    |                РегистрСведений.РаботникиОрганизаций.СрезПоследних(КОНЕЦПЕРИОДА(&Период, МЕСЯЦ),
    |                    Сотрудник.ВидЗанятости В (&ПарамОсновнойСотрудник)
    |                    {ПодразделениеОрганизации КАК Подразделение, Организация}
    |                    )                    КАК Работники



что приводит к двум строкам при установке Отборов по Подразделению.
Так отбор происходит не в целом по сотруднику - где он только в новом подразделении
Добавляете "Отобор" (Сотрудник + Подразделение) - то существую две записи "Последних значений" в старом подразделении и в новом.

Т.е. находит
1я строка - Сотрудник - Подразделение Старое
2я строка - Сотрудник - Подразделение Новое

Автор: aik2001 10.09.19, 17:00

fly @ Сегодня, 16:47 * ,

Не понимаю.
этот запрос отбирает нормально

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



{ПодразделениеОрганизации КАК Подразделение

это же то же самое что и

Работники.ПодразделениеОрганизации = &ПодразделениеОрганизации

Автор: Макс1С 10.09.19, 18:49

aik2001 @ Сегодня, 18:00 * ,
не то же самое, конструкция в фигурных скобках используется построителем отчета и в случае пустых значений просто игнорируется.
По сути, в зависимости от выбранных на форме отборов, исполняемый в БД запрос(текст запроса) может быть разным. Не проверял на практике, но думаю профайлером SQL это будет видно наглядно

aik2001 @ Сегодня, 18:00 * ,
+ к тому же это параметры виртуальной таблицы, это совсем не то же самое что условия в разделе "ГДЕ"
аналог запроса без конструкций для построителя была бы:

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

Автор: Макс1С 10.09.19, 21:57

Ещё мысля созрела: разница между параметром вирт.таблицы и условием "Где" в следующем:
в первом случае будут отобраны все записи удовлетворяющие всем параметрам(сотрудник, подразделение, организация), и среди них будет выбрана последняя запись(срез последних). Так и получим действующую запись по старому подразделению.
во втором случае будут отобраны все записи по сотруднику, среди них будет взята последняя(актуальное подразделение на тек.момент) и потом только применятся условия из раздела "Где" - т.е. результат будет пустым если указать старое подразделение

Автор: aik2001 11.09.19, 11:25

Макс1С @ Вчера, 22:57 * ,
Спасибо поставил в запросе "Где" и все заработало.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua