По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) AnnaM, на сколько помню такой стандартной функции нет, можно использовать примерно такой запрос (выдран из стандартной ЗУП):
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВЫБОР
КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА РаботникиОрганизацииСрезПоследних.ЗанимаемыхСтавокЗавершения
ИНАЧЕ РаботникиОрганизацииСрезПоследних.ЗанимаемыхСтавок
КОНЕЦ КАК ЗанимаемыхСтавок,
ВЫБОР
КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА РаботникиОрганизацииСрезПоследних.ДолжностьЗавершения.Представление
ИНАЧЕ РаботникиОрганизацииСрезПоследних.Должность.Представление
КОНЕЦ КАК Должность,
ВЫБОР
КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизацииЗавершения.Представление
ИНАЧЕ РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизации.Представление
КОНЕЦ КАК Подразделение,
РаботникиОрганизацииСрезПоследних.Организация.Представление КАК Организация,
РаботникиОрганизацииСрезПоследних.Организация КАК ОрганизацияСсылка,
ВЫБОР
КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА ВЫБОР
КОГДА РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостоянияЗавершения = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
ТОГДА "Не работает (уволен)"
ИНАЧЕ "Работает"
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
ТОГДА "Не работает (уволен)"
ИНАЧЕ "Работает"
КОНЕЦ
КОНЕЦ КАК Состояние,
РаботникиОрганизацииСрезПоследних.Сотрудник.Код КАК ТабельныйНомер
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(
&ДатаАктуальности,
Сотрудник.ФизЛицо = &ФизЛицо
И НЕ Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство)) КАК РаботникиОрганизацииСрезПоследних
УПОРЯДОЧИТЬ ПО
Организация,
РаботникиОрганизацииСрезПоследних.Период УБЫВ,
РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостояния.Порядок
Показать
Стандартный отчет "Списки сотрудников". Вариант отчета "Список сотрудников организации". В Настройках структуры можно установить отбор по полю Сотрудник.Физлицо = ..., Текущее состояние = Работает. (можно убрать указание отбора и вывести его как колонку отчета, тогда сразу можно увидеть работающих и уволенных сотрудников)
Может эта подойдет))
// Функция получает должность, подразделение и табельный номер сотрудника организации.
//
// Параметры
// ФизЛицо. - физ. лицо, для которго необходимо получить данные
// ДатаПериода - дата получения сведений
// Организация - организация, для которой необходимо получить данные
// Сотрудник - Сотрудник, для которго необходимо получить данные
//
// Возвращаемое значение:
// Структура с данными
//
Функция СведенияОСотруднике(ФизЛицо, ДатаПериода, Организация = Неопределено, Сотрудник = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаПериода", ДатаПериода);
Если НЕ ЗначениеЗаполнено(Организация) Тогда
// Для совместимости
Запрос.УстановитьПараметр("ФизЛицо", ФизЛицо);
Запрос.Текст =
"ВЫБРАТЬ
| Подразделение.Представление КАК Подразделение,
| Подразделение.Код КАК КодПодразделения,
| Должность.Представление КАК Должность
|ИЗ
| РегистрСведений.Работники.СрезПоследних(&ДатаПериода, ФизЛицо = &ФизЛицо)
|";
ИначеЕсли ЗначениеЗаполнено(Сотрудник) Тогда
// Если известен сотрудник, получим данные из регистра сведений "РаботникиОрганизаций"
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ДатаПериода
| И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения.Представление
| ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность.Представление
| КОНЕЦ КАК Должность,
| ВЫБОР
| КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ДатаПериода
| И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения.Представление
| ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Представление
| КОНЕЦ КАК ПодразделениеОрганизации,
| ВЫБОР
| КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ДатаПериода
| И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения.Код
| ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Код
| КОНЕЦ КАК КодПодразделения,
| РаботникиОрганизацийСрезПоследних.Сотрудник.Код КАК ТабельныйНомер
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаПериода, Сотрудник = &Сотрудник) КАК РаботникиОрганизацийСрезПоследних"
Иначе
// Если сотрудник не передан, тогда произведем поиск этого сотрудника в справочнике по физлицу и организации,
// и затем произведем поиск данных в регистре сведений "РаботникиОрганизаций"
Запрос.УстановитьПараметр("ФизЛицо", ФизЛицо);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СотрудникиОрганизаций.Код КАК ТабельныйНомер,
| ВЫБОР
| КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ДатаПериода
| И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения.Представление
| ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Представление
| КОНЕЦ КАК ПодразделениеОрганизации,
| ВЫБОР
| КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ДатаПериода
| И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения.Код
| ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Код
| КОНЕЦ КАК КодПодразделения,
| ВЫБОР
| КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ДатаПериода
| И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения.Представление
| ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность.Представление
| КОНЕЦ КАК Должность,
| ВЫБОР
| КОГДА СотрудникиОрганизаций.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
| ТОГДА 0
| КОГДА СотрудникиОрганизаций.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство)
| ТОГДА 1
| ИНАЧЕ 2
| КОНЕЦ КАК Приоритет,
| РаботникиОрганизацийСрезПоследних.Период КАК Период
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
| &ДатаПериода,
| Сотрудник В
| (ВЫБРАТЬ
| СотрудникиОрганизаций.Ссылка
| ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
| ГДЕ
| СотрудникиОрганизаций.Физлицо = &Физлицо
| И (НЕ СотрудникиОрганизаций.ПометкаУдаления)
| И СотрудникиОрганизаций.Организация = &Организация)) КАК РаботникиОрганизацийСрезПоследних
| ПО СотрудникиОрганизаций.Ссылка = РаботникиОрганизацийСрезПоследних.Сотрудник
|ГДЕ
| СотрудникиОрганизаций.Физлицо = &Физлицо
| И СотрудникиОрганизаций.Организация = &Организация
|
|УПОРЯДОЧИТЬ ПО
| Приоритет,
| Период УБЫВ"
КонецЕсли;
Результат = Новый Структура("ТабельныйНомер, ПодразделениеОрганизации, КодПодразделения, Должность");
ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
Если ВыборкаЗапроса.Следующий() Тогда
ЗаполнитьЗначенияСвойств(Результат,ВыборкаЗапроса)
Иначе
// Если в запросе ничего не нашли тогда вернем вместо табельного номера код физ.лица
Результат.ТабельныйНомер = ?(ЗначениеЗаполнено(ФизЛицо), ФизЛицо.Код,"")
КонецЕсли;
Возврат Результат
КонецФункции // СведенияОСотруднике()
Показать
Искал ответ на такой же ответ, но в Бухгалтерии, наткнулся поиском на эту ветку, напишу, может кому пригодится - в бухии есть функция, которая возвращает ссылку на сотрудника по заданному физическому лицу:
ПроцедурыУправленияПерсоналом.ОсновнойСотрудникФизлица(ФизЛицо, Организация)
ПроцедурыУправленияПерсоналом.ОсновнойСотрудникФизлица(ФизЛицо, Организация)
это все здорово, но вот когда надо отфильтровать по работающим сотрудникам, которые приняты на работу, в очередной раз, а прошлые не помещены в архив, работать будет кривовастенько.(10)
(8) Вот это больше похоже на подходящий вариант, но ломаю голову как сделать связь по физлицам и сотрудникам одним запросом. (с учетом возможных увольнений и принятий в периоде.
(8) Вот это больше похоже на подходящий вариант, но ломаю голову как сделать связь по физлицам и сотрудникам одним запросом. (с учетом возможных увольнений и принятий в периоде.
Tavisdm, добрый день!
Для УТ реквизит "Сотрудник" элемента справочника "Физические лица" не является значимым, как в ЗУП или соответствующих блоках комплексных программ и бухгалтерий.
В УТ нет бизнес-процессов, которые требуют идентификации персональных данных. Можно только попытаться определить: не является ли физлицо ответственным сотрудником организации. Для этого можно использовать функцию "ПолучитьОтветственныеЛицаОрганизации(Организация, Дата)".
Для УТ реквизит "Сотрудник" элемента справочника "Физические лица" не является значимым, как в ЗУП или соответствующих блоках комплексных программ и бухгалтерий.
В УТ нет бизнес-процессов, которые требуют идентификации персональных данных. Можно только попытаться определить: не является ли физлицо ответственным сотрудником организации. Для этого можно использовать функцию "ПолучитьОтветственныеЛицаОрганизации(Организация, Дата)".
Спасибо, uk09, за стремление помочь. Я, кажется, понял - в УТ, в отличии от ЗУП, не предполагается, что одно и то же физлицо может совместительствовать, занимая разные должности...
PS. Но функции "ПолучитьОтветственныеЛицаОрганизации" в УТ то же не существует :(
PS. Но функции "ПолучитьОтветственныеЛицаОрганизации" в УТ то же не существует :(
Так как мне надо сразу списком физлиц подобное, я запилил такой запрос:
ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Период КАК Период,
РаботникиОрганизацийСрезПоследних.Сотрудник
ПОМЕСТИТЬ ВТ_ПервичныйОтбор
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(
&НаДату,
Сотрудник В
(ВЫБРАТЬ
СотрудникиОрганизаций.Ссылка
ИЗ
Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ГДЕ
СотрудникиОрганизаций.Физлицо В (&СписокФизлиц)
И НЕ СотрудникиОрганизаций.ПометкаУдаления
И СотрудникиОрганизаций.Организация = &Организация)) КАК РаботникиОрганизацийСрезПоследних
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЗ_ИтоговыйОтбор.Период,
ВЗ_ИтоговыйОтбор.СотрудникФизлицо,
ВТ_ПервичныйОтбор.Сотрудник
ИЗ
(ВЫБРАТЬ
МАКСИМУМ(ВТ_ПервичныйОтбор.Период) КАК Период,
ВТ_ПервичныйОтбор.Сотрудник.Физлицо КАК СотрудникФизлицо
ИЗ
ВТ_ПервичныйОтбор КАК ВТ_ПервичныйОтбор
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПервичныйОтбор КАК ВТ_ПервичныйОтбор1
ПО ВТ_ПервичныйОтбор.Период > ВТ_ПервичныйОтбор1.Период
И ВТ_ПервичныйОтбор.Сотрудник.Физлицо = ВТ_ПервичныйОтбор1.Сотрудник.Физлицо
СГРУППИРОВАТЬ ПО
ВТ_ПервичныйОтбор.Сотрудник.Физлицо) КАК ВЗ_ИтоговыйОтбор
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПервичныйОтбор КАК ВТ_ПервичныйОтбор
ПО ВЗ_ИтоговыйОтбор.Период = ВТ_ПервичныйОтбор.Период
И ВЗ_ИтоговыйОтбор.СотрудникФизлицо = ВТ_ПервичныйОтбор.Сотрудник.Физлицо
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВТ_ПервичныйОтбор
Показать
А вот с договорниками:
ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Период КАК Период,
РаботникиОрганизацийСрезПоследних.Сотрудник
ПОМЕСТИТЬ ВТ_ПервичныйОтбор
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(
&НаДату,
Сотрудник В
(ВЫБРАТЬ
СотрудникиОрганизаций.Ссылка
ИЗ
Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ГДЕ
СотрудникиОрганизаций.Физлицо В (&СписокФизлиц)
И НЕ СотрудникиОрганизаций.ПометкаУдаления
И СотрудникиОрганизаций.Организация = &Организация)) КАК РаботникиОрганизацийСрезПоследних
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ДоговорНаВыполнениеРаботСФизЛицом.ДатаОкончания,
ДоговорНаВыполнениеРаботСФизЛицом.Сотрудник
ИЗ
Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом
ГДЕ
ДоговорНаВыполнениеРаботСФизЛицом.Сотрудник В
(ВЫБРАТЬ
СотрудникиОрганизаций.Ссылка
ИЗ
Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ГДЕ
СотрудникиОрганизаций.Физлицо В (&СписокФизлиц)
И НЕ СотрудникиОрганизаций.ПометкаУдаления
И СотрудникиОрганизаций.Организация = &Организация)
И ДоговорНаВыполнениеРаботСФизЛицом.Проведен = ИСТИНА
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЗ_ИтоговыйОтбор.Период,
ВЗ_ИтоговыйОтбор.СотрудникФизлицо,
ВТ_ПервичныйОтбор.Сотрудник
ИЗ
(ВЫБРАТЬ
МАКСИМУМ(ВТ_ПервичныйОтбор.Период) КАК Период,
ВТ_ПервичныйОтбор.Сотрудник.Физлицо КАК СотрудникФизлицо
ИЗ
ВТ_ПервичныйОтбор КАК ВТ_ПервичныйОтбор
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПервичныйОтбор КАК ВТ_ПервичныйОтбор1
ПО ВТ_ПервичныйОтбор.Период > ВТ_ПервичныйОтбор1.Период
И ВТ_ПервичныйОтбор.Сотрудник.Физлицо = ВТ_ПервичныйОтбор1.Сотрудник.Физлицо
СГРУППИРОВАТЬ ПО
ВТ_ПервичныйОтбор.Сотрудник.Физлицо) КАК ВЗ_ИтоговыйОтбор
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПервичныйОтбор КАК ВТ_ПервичныйОтбор
ПО ВЗ_ИтоговыйОтбор.Период = ВТ_ПервичныйОтбор.Период
И ВЗ_ИтоговыйОтбор.СотрудникФизлицо = ВТ_ПервичныйОтбор.Сотрудник.Физлицо
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВТ_ПервичныйОтбор
Показать
Апну тему.
ЗУП 2.5.121.1 переписанная вдоль и поперек.
Возникла задача - выдать реестр ВЫПЛАЧЕННОЙ зарплаты за год в формате :
Подразделение - Должность - Сотрудник - Документ выплаты - Период - Сумма
Реестр формировать по выпискам банка.
Как получить сотрудников по физ.лицам, если есть куча приемов-увольнений по многим физлицам?
Варианты ситуации :
1. Один сотрудник - одно физлицо - самый простой.
2. Сотр по основному месту работы + по совместительству. Физлицо одно.
3. Сотр был уволен, затем принят на другое место работы
4. Сотр увольнялся 4 раза, сейчас работает
5. Сотр увольнялся и сейчас уволен.
К тому же в выписке могут присутствовать и уволенные на момент выписки(перерасчет и т. п.)
Прошу совета.
ЗУП 2.5.121.1 переписанная вдоль и поперек.
Возникла задача - выдать реестр ВЫПЛАЧЕННОЙ зарплаты за год в формате :
Подразделение - Должность - Сотрудник - Документ выплаты - Период - Сумма
Реестр формировать по выпискам банка.
Как получить сотрудников по физ.лицам, если есть куча приемов-увольнений по многим физлицам?
Варианты ситуации :
1. Один сотрудник - одно физлицо - самый простой.
2. Сотр по основному месту работы + по совместительству. Физлицо одно.
3. Сотр был уволен, затем принят на другое место работы
4. Сотр увольнялся 4 раза, сейчас работает
5. Сотр увольнялся и сейчас уволен.
К тому же в выписке могут присутствовать и уволенные на момент выписки(перерасчет и т. п.)
Прошу совета.
Добрый день! Может кому пригодится: для БП 3.0.82.24 данная функция находится: КадровыйУчет.ОсновныеСотрудникиФизическихЛиц(СписокФизическихЛиц, ТолькоРазрешенные, Организация, Период). Здесь можно получить для массива физических лиц таблицу сотрудников.
(29)БСП никакого отношения к этим вышеприведенным функциям не имеет, это чисто функционал подсистемы зарплаты, а именно программного интерфейса этой подсистемы.
Не совсем понятен вопрос по поводу организации, выше функции все привели, они работают в т.ч. если в качестве параметра Организация передать пустую ссылку на организацию(или Неопределено), достаточно посмотреть внутрь этих функций и увидеть, что там эта ситуация отрабатывается.
Не совсем понятен вопрос по поводу организации, выше функции все привели, они работают в т.ч. если в качестве параметра Организация передать пустую ссылку на организацию(или Неопределено), достаточно посмотреть внутрь этих функций и увидеть, что там эта ситуация отрабатывается.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот