Полезные функции: Принятые и Уволенные, работающие сотрудники, Неполное рабочее время, Отпуск без ЗП Дорабатывая у клиента отчет по данным для предоставления в статистику - появилось несколько готовых функций, которые Вам наверняка понадобятся:
Код 1C v 8.х Функция ПолучитьКоличествоСотрудниковСНеполнымРабочимДнём(Запрос)
Запрос.Текст =
"ВЫБРАТЬ
| МАКСИМУМ(Работники.НеполноеРабочееВремя) КАК НеполноеРабочееВремя,
| Работники.Сотрудник КАК Сотрудник
|ПОМЕСТИТЬ ВТ_СписокРаботниковНаНеполномРабочемГрафике
|ИЗ
| (ВЫБРАТЬ
| РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
| РаботникиОрганизацийСрезПоследних.ГрафикРаботы.СокращенноеРабочееВремя КАК НеполноеРабочееВремя
| ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НачалоПериода, Организация =Организация) КАК РаботникиОрганизацийСрезПоследних
| ГДЕ
| РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
| И РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РаботникиОрганизаций.Сотрудник,
| РаботникиОрганизаций.ГрафикРаботы.СокращенноеРабочееВремя
| ИЗ
| РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
| ГДЕ
| РаботникиОрганизаций.Период МЕЖДУНачалоПериода ИКонецПериода
| И РаботникиОрганизаций.Организация =Организация
| И РаботникиОрганизаций.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)) КАК Работники
|ГДЕ
| Работники.НеполноеРабочееВремя
|
|СГРУППИРОВАТЬ ПО
| Работники.Сотрудник
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СписокРаботниковНаНеполномРабочемГрафике.Сотрудник) КАК КоличествоСотрудниковНаСокрРабВремени
|ИЗ
| ВТ_СписокРаботниковНаНеполномРабочемГрафике КАК ВТ_СписокРаботниковНаНеполномРабочемГрафике";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.КоличествоСотрудниковНаСокрРабВремени
Иначе
Возврат 0
КонецЕсли;
КонецФункции //ПолучитьКоличествоСотрудниковСНеполнымРабочимДнём()
Функция ПолучитьКоличествоСотрудниковИмевшихОтпускаБезСохраненияЗП(Запрос)
Запрос.Текст =
"ВЫБРАТЬ
| СостояниеРаботниковСрезПоследних.Сотрудник КАК Сотрудник
|ПОМЕСТИТЬ ВТ_СотрудникиВОтпускахБезСохрЗП
|ИЗ
| РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&НачалоПериода, Организация =Организация) КАК СостояниеРаботниковСрезПоследних
|ГДЕ
| СостояниеРаботниковСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускБезСохраненияЗарплаты)
| И ВЫБОР
| КОГДА СостояниеРаботниковСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА СостояниеРаботниковСрезПоследних.ПериодЗавершения >=НачалоПериода
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И СостояниеРаботниковСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СостояниеРаботниковОрганизаций.Сотрудник
|ИЗ
| РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
|ГДЕ
| СостояниеРаботниковОрганизаций.Период МЕЖДУНачалоПериода ИКонецПериода
| И СостояниеРаботниковОрганизаций.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускБезСохраненияЗарплаты)
| И СостояниеРаботниковОрганизаций.Организация =Организация
| И СостояниеРаботниковОрганизаций.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СотрудникиВОтпускахБезСохрЗП.Сотрудник) КАК КоличествоСотрудниковВОтпускеБезСохраненияЗП
|ИЗ
| ВТ_СотрудникиВОтпускахБезСохрЗП КАК ВТ_СотрудникиВОтпускахБезСохрЗП";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.КоличествоСотрудниковВОтпускеБезСохраненияЗП
Иначе
Возврат 0
КонецЕсли;
КонецФункции //ПолучитьКоличествоСотрудниковИмевшихОтпускаБезСохраненияЗП()
Функция ПолучитьКоличествоПринятыхСотрудников(Запрос)
Запрос.Текст =
"ВЫБРАТЬ
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник
|ПОМЕСТИТЬ ВТ_СотрудникиПринятыеПоПриемуНаРаботу
|ИЗ
| Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
|ГДЕ
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема МЕЖДУНачалоПериода ИКонецПериода
| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен
| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация =Организация
| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СотрудникиПринятыеПоПриемуНаРаботу.Сотрудник) КАК КоличествоСотрудниковПринятыхНаРаботу
|ИЗ
| ВТ_СотрудникиПринятыеПоПриемуНаРаботу КАК ВТ_СотрудникиПринятыеПоПриемуНаРаботу";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.КоличествоСотрудниковПринятыхНаРаботу
Иначе
Возврат 0
КонецЕсли;
КонецФункции //ПолучитьКоличествоПринятыхСотрудников()
Функция ПолучитьКоличествоУволенныхСотрудников(Запрос)
Запрос.Текст =
"ВЫБРАТЬ
| УвольнениеИзОрганизацийРаботникиОрганизации.Сотрудник
|ПОМЕСТИТЬ ВТ_СотрудникиУволенные
|ИЗ
| Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК УвольнениеИзОрганизацийРаботникиОрганизации
|ГДЕ
| УвольнениеИзОрганизацийРаботникиОрганизации.ДатаУвольнения МЕЖДУНачалоПериода ИКонецПериода
| И УвольнениеИзОрганизацийРаботникиОрганизации.Ссылка.Проведен
| И УвольнениеИзОрганизацийРаботникиОрганизации.Ссылка.Организация =Организация
| И УвольнениеИзОрганизацийРаботникиОрганизации.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СотрудникиУволенные.Сотрудник) КАК КоличествоУволенныхСотрудников
|ИЗ
| ВТ_СотрудникиУволенные КАК ВТ_СотрудникиУволенные";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.КоличествоУволенныхСотрудников;
Иначе
Возврат 0
КонецЕсли;
КонецФункции
Функция ПолучитьКоличествоСотрудниковСписочногоСостава(Запрос)
Запрос.Текст =
"ВЫБРАТЬ
| РаботникиОрганизацийСрезПоследних.Сотрудник
|ПОМЕСТИТЬ ВТ_СотрудникиСписочногоСостава
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1), Организация =Организация) КАК РаботникиОрганизацийСрезПоследних
|ГДЕ
| РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
| И (РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
| ИЛИ РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство))
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СотрудникиСписочногоСостава.Сотрудник) КАК КоличествоСотрудниковСписочногоСостава
|ИЗ
| ВТ_СотрудникиСписочногоСостава КАК ВТ_СотрудникиСписочногоСостава";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.КоличествоСотрудниковСписочногоСостава;
Иначе
Возврат 0
КонецЕсли;
КонецФункции
---------- Использование -------------------
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(мДатаНачалаПериодаОтчета));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(мДатаКонцаПериодаОтчета));
// Сотрудники с неполным рабочим днём
СтруктураПолей.П0001000201 = ПолучитьКоличествоСотрудниковСНеполнымРабочимДнём(Запрос);
// Отпуска без сохранения зп
СтруктураПолей.П0001000501 = ПолучитьКоличествоСотрудниковИмевшихОтпускаБезСохраненияЗП(Запрос);
// Принятые сотрудники
СтруктураПолей.П0001000601 = ПолучитьКоличествоПринятыхСотрудников(Запрос);
// Выбывшие сотрудники
СтруктураПолей.П0001000801 = ПолучитьКоличествоУволенныхСотрудников(Запрос);
// По собственному желанию
СтруктураПолей.П0001001201 = СтруктураПолей.П0001000801;
// Количество сотрудников списочного состава на конец месяца
СтруктураПолей.П0001001301 = ПолучитьКоличествоСотрудниковСписочногоСостава(Запрос);
Категория:
1С Зарплата и Управление Персоналом 2.5 Как сформировать отчет по личным данным работника (образование, семья и т.д.) Кадровикам часто нужны отчеты по личным данным сотрудников, которые они вводят в справочнике физических лиц.
для формирования откройте Кадровый учет - Списки сотрудников организации
Укажите организацию и дату формирования работников, в настройках поставьте галку только не уволенные , если галки нет, то нужно будет задать отбор в структуре настроек:
Перейдите в настройку структуры
В настройке справа раскройте данные сотрудника и нужные Вам поля перенесите в колонки отчета
Так же в колонках отчета - галочками Вы можете указать, выводить колонку или нет.
Настройка Отбора и сортировки
Нажмите сформировать для просмотра результата.
Если каких-то данных не хватает, то снова зайдите в настройки структуры и добавьте.
Категория:
1С Зарплата и Управление Персоналом 2.5 Что такое архив сотрудников. Как поместить сотрудника в архив? В архив помещаются неактуальные (уволенные ) сотрудники. Тем самым появляется возможность выводить в справочнике Сотрудники только работающих в данный момент сотрудников. Чтобы поместить сотрудника в архив необходимо выделить его в списке, нажать кнопку Действия->Поместить сотрудника в Архив. Чтобы вывести только актуальных сотрудников необходимо по кнопке Действия снять флаг «Показывать архив сотрудников»
Категория:
1С Зарплата и Управление Персоналом 2.5 Функция дни рождения сотрудников Данная функция написана для ЗиК 7.7
Код 1C v 7.x
//Функция подбирает окончание для возраста
Функция СтрГода(Возраст)
Остаток = Возраст%10;
Если Остаток = 1 Тогда
Стр = "год";
ИначеЕсли ((Остаток > 1) и (Остаток < 5)) Тогда
Стр = "года";
Иначе
Стр = "лет";
КонецЕсли;
Возврат Стр;
КонецФункции
//Формируем дни рождения Сотрудников
Процедура ДниРожденияСотрудников()
ТекстДР="";
Именинники = СоздатьОбъект("СписокЗначений");
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()= 1 Цикл
ТекЭлем = СпрСотр.ТекущийЭлемент();
Если ТекЭлем.ЭтоГруппа() = 0 Тогда
Если ((ТекЭлем.Родитель <> "Уволенные")) Тогда
ТекСотр = СпрСотр.ТекущийЭлемент();
Если (ПустоеЗначение(ТекСотр.СостояниеФизЛица.Получить(НачМесяца(ТекущаяДата()))) = 0) Тогда
Если (ДатаМесяц(ТекСотр.ДатаРождения) = ДатаМесяц(ТекущаяДата())) Тогда
Именинники.ДобавитьЗначение(ТекСотр);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Именинники.РазмерСписка() <> 0 Тогда
ТекстДР=ТекстДР+" ********* СПИСОК ИМЕНИННИКОВ *********"+РазделительСтрок+" за месяц "+Формат(ТекущаяДата(),"ДММММ")+РазделительСтрок;
ТекстДР=ТекстДР+"-----------------------------------------------------------------------------------------------------------------------------------------------"+РазделительСтрок;
Для к = 1 по Именинники.РазмерСписка() Цикл
Сотр = Именинники.ПолучитьЗначение(к);
Возраст = (Число(ДатаГод(ТекущаяДата()))-Число(ДатаГод(Сотр.ДатаРождения)));
РазницаДней = (Число(ДатаЧисло(Сотр.ДатаРождения))-Число(ДатаЧисло(ТекущаяДата())));
СтрГода = СтрГода(Возраст);
Если (ДатаЧисло(Сотр.ДатаРождения) < ДатаЧисло(ТекущаяДата())) Тогда
ТекстДР=ТекстДР+" "+Сотр+" "+Сотр.ДатаРождения+" уже исполнилось "+Возраст+" "+СтрГода+"!"+РазделительСтрок;
Иначе
Если (РазницаДней = 2) Тогда
ТекстДР=ТекстДР+"ПОСЛЕЗАВТРА! "+Сотр+" послезавтра "+Сотр.ДатаРождения+" будет праздновать " + Возраст + "-й День Рождения!!!! ";
ИначеЕсли (РазницаДней = 1) Тогда
ТекстДР=ТекстДР+"ЗАВТРА! "+ Сотр + " будет отмечает свой " + Возраст + "-й День рождения!";
ИначеЕсли (РазницаДней = 0) Тогда
ТекстДР=ТекстДР+"СЕГОДНЯ! "+ Сотр + " отмечает свой " + Возраст + "-й День рождения!";
КонецЕсли;
ТекстДР=ТекстДР+" ( "+Сотр.Подразделение.Получить(ТекущаяДата())+" , "+Сотр.Должность.Получить(ТекущаяДата())+" )"+РазделительСтрок;
КонецЕсли;
КонецЦикла;
Иначе
ТекстДР=ТекстДР+"В текущем месяце именинников нет!";
КонецЕсли;
Сообщить(ТекстДР);
КонецПроцедуры
В файловом архиве есть и сама обработка.
Категория:
Полезные, Универсальные Функции