Получить подразделение сотрудника 1с
Помогите разобраться с регистром сведений "Кадровая история сотрудников".
Цель - получить текущее подразделение сотрудника.
Беру "срез последних", который по идее должен выдавать только актуальную запись(последнюю).
На примере одного сотрудника:
1. Если сделать запрос с отбором по сотруднику, то все выводит корректно
2. Если сделать запрос без отбора, то выводит две записи
Сам регистр сведений по этому сотруднику выглядит так:
Почему запросы с отбором и без, по одному сотруднику выводят различные данные? Или я что-то не понимаю или упустил.
Получить оклад из регистра сведений "Плановые начисления сотрудников организации"
Здравствуйте. Суть такова. В шаблон Word для ВПФ мне надо подставить два значения. ВПФ работает.
Запрос к регистру сведений в УТ
Доброго времени! Скажите пожалуйста, как передать в параметр запроса к регистру сведений несколько.
Построить запрос по непереодическому регистру сведений
Доброго времени суток господа программисты ! Вопрос в следующем: Есть непериодический регистр.
Запрос sql: "Список категорий должностей сотрудников N-ого подразделения"
Список категорий должностей сотрудников «п-ого» подразделения Таблица Подразделение(столбцы-код.
Потому что надо читать теорию!
Нет такой таблицы срез последних, есть только одна таблица, КадроваяИсторияСотрудников, срез последних достигается вложенным запросом с отбором по максимальному значению периода, соотвественно, если незадавать значения отбра в срезе последних, будут выбраны все максимальные значения по всем измерениям регистра.
вот у нас в ЗУПе этим регистром не пользуются.
только КадроваяИсториясотрудниковИнтервальный
вот там да. без срезов. в общем им надо пользоваться.
как у вас - не знаю. может другое что.
Yulunga, Не имеет значения как организован доступ к данным, нужно понимать как они храняться и каким образом выбираются. Срезы, обороты, остатки, все это не конечные данные, это результаты запросов к данным, а данные тупо лежат в таблицах, в свое время не уделив должного внимания данной части теории, я не хило тормозил в написании запросов.
Volexovich, а можно пример запроса? Не пойму как сделать отбор по максимальному значению периода. Недавно начал с запросами работать
Ведь максимальный период нужно определять для каждого сотрудника. Если группирую период по сотруднику, то все равно выводит одного сотрудника 2 раза с разными периодами
emkaa , вообще ключевые слова были: "максимальные значения по всем измерениям регистра"
Это говорит о том, что отбор надо делать по всем измерениям! А у вас они скорее всего сотрудник, организация и подразделение, когда укажете все измерения в отборе, тогда и будет только одна запись соответствующая отбору.
там смысл в том что в обычном тебя hgbyzkb на работу и лежит строка приём с датой окончания 3999 год
а в интервальном при увольнении или переводе появляются строки действует до, и с ними и надо плясать.
Volexovich, сделал отбор по всем измерениям(у меня это сотрудник, ГоловнаяОрганизация. ФизЛицо), так же вывело две записи на одного сотрудника.
Дело было в том, что тот сотрудник, который выводится дважды с разными периодами, был уволен(перестал быть сотрудником), а затем снова принят на работу, и его соответственно завели как нового сотрудника. Вот и получается, что в регистре физ. лицо одно, а сотрудников на это физ. лицо два.
В общем сделал следующим образом. Однако такой запрос выведет некорректные данные, если будут сотрудники с одинаковыми ФИО(вероятность мала, но она есть).
Yulunga, в регистре КадроваяИсториясотрудниковИнтервальный ресурс "ДействуетДо" не заполняется, строки тупо пустые(ERP 2.4.3), зато заполняется в регистре "КадроваяИсториясотрудников". Но как раз у того сотрудника, который был уволен и снова принят на работу записей в этом ресурсе нет, почему не понятно
Доброго времени суток!
подскажите пожалуйста как в ЗУП 3.1 последней версии получить
1. Подразделение Сотрудника на указанную дату
2. Получить Бухгалтерский учет зарплаты счет, субконто т.е. "Способ отражения зарплаты в бухгалтерском учете" (на вкладке сотрудника Выплаты , учет затрат это поле находится)
верно ли по подразделению из регистра сведений "КадроваяИсторияСотрудниковСрезПоследних":
(6)(7)(9)Если хотите свой отчет, то сначала посмотрите, как работают типовые.
В СКД описываете "представление" запроса для формирования временной таблицы, а потом вызовом общих процедур/функций из программного интерфейса подменяете "представление" на полноценный запрос формирования временной таблицы.
В противном случае рискуете тем, что при очередном обновлении ваши поделки перестанут работать, и будете переписывать заново.
(4) КадровыйУчет.КадровыеДанныеСотрудников() - можно об этом подробнее или если можно пример?! много все понаписали сразу и не разобраться. к примеру почему именно регистр "КадроваяИсторияСотрудниковИнтервальный" (9) ? почему нельзя использовать регистр "КадроваяИсторияСотрудниковСрезПоследних" ?
(12) Пример получения Подразделения и Способа отражения зарплаты в бухучете.
(12) Регистры "КадроваяИсторияСотрудниковИнтервальный" и "КадроваяИсторияСотрудников" нельзя использовать, т.к. в будущих релизах ЗУП могут быть выполнены следующие изменения:
1. Регистры могут быть переименованы.
2. Могут быть переименованы измерения, ресурсы и реквизиты регистров.
3. Может быть изменен состав измерений, ресурсов и реквизитов регистров.
4. Информация из одного регистра может быть разнесена в несколько новых регистров.
Соответственно, все ваши запросы к регистрам "КадроваяИсторияСотрудниковИнтервальный", "КадроваяИсторияСотрудников", либо к каким-нибудь другим, после обновления перестанут работать.
И вам придется переделывать все доработки.
Список параметров вызова процедур/функций программного интерфейса общих модулей (к коим относится и функция "КадровыйУчет.КадровыеДанныеСотрудников()") 1С обещала не изменять.
Соответственном, все доработки с использованием программного интерфейса будут работать и в новых релизах.
(12)Методическими указаниями по доработке ЗУПа разработчики ЗУПа делились в партнерской конференции 1С.
Если у вас есть к ней доступ можете их там найти. Здесь ссылки на конференцию не приветствуются.
Отдельно они нигде не публиковались.
Ну и можно почиать код самого ЗУПа. Процедуры и функции программного интерфейса там снабжены подробными комментариями.
Очень часто необходимо получать актуальные кадровые данные как для одного сотрудника, так и для списка сотрудников. Конечно же мы можем просто написать свой запрос и получить эти данные, но очень часто, после изменения структуры регистров, запрос перестает работать. Кроме того, для получения некоторых данных необходимо писать большие запросы в несколько сотен строк, особенно если необходимо получить данные для списка сотрудников. Поэтому лучше воспользоваться тем функционалом, который для нас создали разработчики библиотеки стандартных подсистем.
В данной статье рассматриваются только способы получения кадровой информации для сотрудников и физических лиц. Описанным способом можно получить следующую кадровую информацию: кадровые данные сотрудников (дата приема, текущее подразделение, должность, работает сотрудник, находится в отпуске или же на больничном), кадровые данные физических лиц (ФИО, информация о стаже, образовании и т.д.) и данные о начислениях.
Все примеры проверены на конфигурации ЗУП 3.1.10.135, версия 1C БСП 3.0.3.59.
Получение информации для одного сотрудника или физического лица
Рассмотрим получение текущей фамилии для сотрудника Боровой Дмитрий Валентинович. Для наглядности добавим ему в историю изменения ФИО фамилию Бонд и изменим отчество.
Для получения кадровой информации используется общий модуль КадровыйУчет. Для получения кадровых данных физических лиц используется функция КадровыеДанныеФизическихЛиц. Более подробно о принимаемых параметрах вы можете в описании к функции. Для нас важен параметр СписокФизическихЛиц, куда мы передаем ссылку на физическое лицо или массив ссылок на физические лица, параметр КадровыеДанные, в котором указываются те кадровые данные, которые мы хотим получить и параметр ДатаПолученияДанных – дата, на которую мы получаем данные.
Видов кадровых данных, которые мы можем получить, очень много, поэтому мы рассмотрим только несколько из них.
Чтобы узнать какие кадровые данные можно получить с помощью данной функции вы можете обратиться к описанию функции КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеФизическихЛиц.
Если мы выполним этот код, то получим следующую строку:
Т.е. функция нам вернет фамилию актуальную в период с 30.11.2019 по 01.01.2020. Если же указать дату получения данных не из этого периода, то функция вернет другую фамилию.
Кроме того, у данной функции есть еще один параметр, с помощью которого мы можем накладывать дополнительные отборы – ПоляОтбораПериодическихДанных. В данном параметре указывается коллекция отборов. Для примера мы можем наложить отбор на отчество:
В результате получим строку:
Т.е. мы получили другую фамилию, используя одну и ту же дату.
Для получения кадровых данных сотрудников используется функция КадровыеДанныеСотрудников из того же модуля. И, по аналогии, чтобы узнать список возможных кадровых данных можно посмотреть описание функции КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеСотрудников.
Для получения кадровой информации по списку сотрудников или списку физлиц можно использовать эти же функции. Только вместо ссылки на физическое лицо в параметр СписокФизическихЛиц передается массив физических лиц, а в параметр СписокСотрудников – массив сотрудников.
Получение информации для списка сотрудников с использованием временных таблиц
Иногда гораздо удобнее не получать данные в промежуточных переменных, а формировать временные таблицы и использовать эти временные таблицы в одном запросе. Для этого мы можем использовать функции СоздатьНаДатуВТКадровыеДанныеСотрудников и СоздатьНаДатуВТКадровыеДанныеФизическихЛиц из общего модуля КадровыйУчет. Данные функции отличаются тем, что не возвращают таблицу кадровых данных, а формируют временную таблицу в менеджере временных таблиц.
Для демонстрации можно использовать данный код.
После выполнения данного кода мы получим таблицу кадровых данных следующего вида:
В данном примере мы сначала подготовили кадровые данные сотрудника и кадровые данные физического лица во временных таблицах, и затем использовали их в одном запросе.
Получение кадровой информации для списка сотрудников на разные даты
Кроме получения кадровых данных на конкретную дату очень часто бывает нужно получить кадровые данные на разные даты. Это бывает нужно, например, в случае печати нескольких документов с разными датами. Когда для каждого документа на разные даты нужно получать отдельную кадровую информацию. Так как в цикле запросы выполнять не хорошо, то нужно сформировать один запрос сразу для всех документов. Для этого можно использовать функции ЗапросВТКадровыеДанныеФизическихЛиц и ЗапросВТКадровыеДанныеСотрудников все из того же общего модуля КадровыйУчет.
Для примера используем все того же сотрудника Борового Дмитрия Валентиновича и его таблицу изменения ФИО.
Чтобы продемонстрировать как работают данные функции подготовим таблицу физических лиц, которая содержит список физических лиц и дат. В нашем примере физическое лицо будет одно, но мы добавим несколько дат:
Во временной таблице будет три строки с разными датами.
Далее формируем описание нашей временной таблицы с физическими лицами:
Если колонка, содержащая ссылки на физические лица, будет называться не ФизическоеЛицо, необходимо указать это в функции ОписаниеВременнойТаблицыОтборовФизическихЛиц в параметре ИмяПоляФизическоеЛицо. Это же касается и колонки, содержащей даты, по умолчанию она должна называться Период.
Далее получим запрос и выполним его, чтобы сформировать временную таблицу, содержащую кадровые данные:
Ну и в конце мы можем использовать эту временную таблицу. В данном примере мы просто выведем ее в таблицу значений.
В результате мы получим следующую таблицу:
Как мы видим, запрос вернул нам актуальную информацию для всех дат указанных в исходной таблице ВТФизическиеЛица.
Нужно добавить в диалог Расчетной ведомости (Начисление налогов с ФОТ) возможность выбора сотрудников одного подразделения. Есть вопрос по постановке условия для выбора. В цикле выбирается сотрудник
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
и дальше идет расчет по счетам, какой командой получить подразделение выбранного сотрудника?
Проблема оказалась не в этом, думал будет просто проверить, сравнить и выдать. Так в конфе идет прокрутка всех сотрудников по каждому счету (а не счета по каждому сотруднику, что было бы проще). Сделал условие:
Ит.ВыбратьСчета();
Если Ит.ПолучитьСчет(,"70") = 1 Тогда
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
//***
Под = Ит.Субконто(1).Подразделение.Получить(ДатаКон); //Под - подразделение выбранного сотрудника
//////**** нач
Если ВсеАбсолютно <> 1 Тогда //ВсеАбсолютно - галка для формирования отчета для всех
Если Под <> Подр Тогда //Подр - подразделение, для которого делается отчет
Продолжить;
КонецЕсли;
КонецЕсли;
////////**** кон
Получается такое - сотрудники выводятся все, но цифры есть только у тех, кто соответствует выбранному подразделению (за исключением колонок с ПФР и для некоторых подразделений + колонки с ФедБюдж). Сделал отсеивание вывода в таблицу:
Т.ВывестиСекцию("Шапка");
КПеречислениюИтого = 0;
Табл.ВыбратьСтроки();
Пока Табл.ПолучитьСтроку() = 1 Цикл
ПодрУСотрудника=Табл.Сотрудник.Подразделение.Получить(ДатаКон); //Это Я
Расшифровка.Установить("Субконто1", Табл.Сотрудник);
РасшифровкаПФ.Установить("Субконто2", Табл.Сотрудник);
РасшифровкаФСС.Установить("Субконто2", Табл.Сотрудник);
РасшифровкаТОМС.Установить("Субконто3", Табл.Сотрудник);
РасшифровкаФОМС.Установить("Субконто3", Табл.Сотрудник);
РасшифровкаПФР_страх.Установить("Субконто2", Табл.Сотрудник);
РасшифровкаПФР_нак.Установить("Субконто2", Табл.Сотрудник);
КПеречислению = Табл.ПФ - Табл.Вычет;
КПеречислениюИтого = КПеречислениюИтого + КПеречислению;
Если ВсеАбсолютно <> 1 Тогда //Это Я
Если ПодрУСотрудника <> Подр Тогда //Это Я
Продолжить; //Это Я
КонецЕсли; //Это Я
КонецЕсли; //Это Я
Т.ВывестиСекцию("Строка");
КонецЦикла;
и оставил прежнее вычисление колонок (без него сумма по колонкам была как для всех, а не только для выбранного подразделения). Теперь всё шло только для первых трех колонок - Начислено, НДФЛ, К выплате. а остальные дают цифры для общего числа. Применил условие выбора сотрудников для всех счетов - появились отрицательные числа в ФедБюдж. В чем я неправ?
При разработке в ЗУП часто приходится получать различные данные сотрудников, для этого используется стандартная функция"КадровыйУчет.КадровыеДанныеСотрудников".
Но список возможных параметров, в свободном доступе нигде найти не смог (видимо плохо искал).
Сама функция выглядит так:
И я хочу поделится возможными параметрами используемыми в значении переменной "КадровыеДанные".
Список возможных параметров:
ФИОПолные,Пол,ТабельныйНомер,Организация,Подразделение,Должность,ДатаПриема,ДатаУвольнения,Возраст,
Фамилия, Имя, Отчество, Наименование, ФизическоеЛицоНаименование, Код, ФизическоеЛицоКод,
АдресДляИнформирования, АдресДляИнформированияПредставление, АдресЗаПределамиРФ, АдресЗаПределамиРФПредставление
АдресМестаПроживания, АдресМестаПроживанияПредставление, АдресПоПрописке,АдресПоПропискеПредставление
ТелефонДомашний, ТелефонДомашнийПредставление, ТелефонРабочий, ТелефонРабочийПредставление, EMail, EMailПредставление
ДокументПериодРегистрации, ДокументВид, ДокументКодМВД, ДокументСерия, ДокументНомер, ДокументДатаВыдачи,ДокументСрокДействия
ДокументКемВыдан, ДокументКодПодразделения, ДокументПредставление, ИнвалидностьПериодРегистрации, Инвалидность
ИнвалидностьДатаВыдачи, ИнвалидностьСрокДействияСправки, ГражданствоПериодРегистрации, Страна, ИННВСтранеГражданства,
ПроцентСевернойНадбавки, ТекущаяОрганизация, ТекущееПодразделение, ТекущаяДолжность, ТекущийВидЗанятости,
ОсновноеРабочееМестоВОрганизации, ДатаПриема, ДатаЗавершенияРаботы, ОформленПоТрудовомуДоговору, ДатаУвольнения,
ТекущаяТарифнаяСтавка, ТекущийСпособРасчетаАванса, ТекущийАванс, ДатаНачалаУчета, ПриказОПриеме, ПриказОПриемеДата,
ПриказОПриемеНомер, НазначениеПодработки, ПриказОбУвольнении, ПриказОбУвольненииДата, ПриказОбУвольненииНомер,
ПриказОбУвольненииСтатьяТКРФ, ПрекращениеПодработки, РабочееМестоПериодРегистрации, РабочееМестоРегистратор
ВидСобытия, КоличествоСтавок, ЭтоГоловнойСотрудник, УчетЗатратПериодРегистрации,
СпособОтраженияЗарплатыВБухучете, ОтношениеКЕНВД, СтатьяФинансирования, УчетЗатратДокументОснование,
ОплатаТрудаПериодЗаписи, ОплатаТрудаРегистратор, ТарифнаяСтавка, ФОТ, Надбавка, ВидЗанятостиПериодЗаписи,
ВидЗанятостиРегистратор, ВидЗанятости, АвансПериодЗаписи, АвансРегистратор, СпособРасчетаАванса, Аванс,
КлассУсловийТрудаПериодРегистрации, КлассУсловийТруда, КлассУсловийТрудаДатаРегистрацииИзменений,
ЗарплатныйПроектПериодРегистрации, ЗарплатныйПроектРегистратор, ЗарплатныйПроект, НомерЛицевогоСчета.
Как использую я:
В основном использую для составления динамических печатных форм.
Читайте также: