Функция ОпределитьДатыСотрудника(Сотр, ПоОдномуСотр, ПроверятьПодразделение, ДатаПриема, ДеньН, ДеньК)
ОК = 1;
Если ПустоеЗначение(Сотр) = 1 Тогда
Сотр = Сотрудник;
КонецЕсли;
Если Сотр.Выбран() = 0 Тогда
ОК = 0;
ИначеЕсли Сотр.ЭтоГруппа() = 1 Тогда
ОК = 0;
Иначе
ДатаПриема = Сотр.ДатаПриема;
Если СобытиеПроизойдетПозже(ДатаПриема, КонДата) = 1 Тогда
// принят после месяца табеля
ОК = 0;
Иначе
ДатаУв = Сотр.ДатаУвольнения;
Если СобытиеУжеЗакончилось(ДатаУв, ДатаНач) = 1 Тогда
// уволен до месяца табеля
ОК = 0;
Иначе
УволенВТекМесяце = 0;
ДатаСотрК = КонДата;
Если КонМесяца(ДатаУв) = КонДата Тогда
// уволен в месяце табеля
УволенВТекМесяце = 1;
ДатаСотрК = ДатаУв;
КонецЕсли;
Если (ПроверятьПодразделение = 1) Тогда
Если Сотр.Подразделение.Получить(ДатаСотрК) <> Подразделение Тогда
ОК = 0;
КонецЕсли;
КонецЕсли;
Если ОК = 1 Тогда
ДеньН = 1;
ДеньК = ДатаЧисло(ДатаСотрК);
Если ПоОдномуСотр = 0 Тогда
НоваяСтрока();
Сотрудник = Сотр.ТекущийЭлемент();
КонецЕсли;
Прочерк = Перечисление.Табель.Нет;
Если КонМесяца(ДатаПриема) = КонДата Тогда
// принят в месяце табеля
ДеньН = ДатаЧисло(ДатаПриема);
УстановитьОбозначениеДня(1, ДеньН - 1, Прочерк);
КонецЕсли;
Если УволенВТекМесяце = 1 Тогда
// уволен в месяце табеля
УстановитьОбозначениеДня(ДеньК + 1, ДатаЧисло(КонДата), Прочерк);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат ОК
КонецФункции // ОпределитьДатыСотрудника()
Если Сотр.Подразделение.Получить(ДатаСотрК) <> Подразделение Тогда
{Документ.Табель.Форма.Модуль(941)}: Поле агрегатного объекта не обнаружено (Получить)
Сообщение отредактировал logist - 15.02.16, 1:09