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

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Ошибка в Табеле в 1с77 Торговля

Автор: inna.innainna84 15.02.16, 1:00

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



Если Сотр.Подразделение.Получить(ДатаСотрК) <> Подразделение Тогда
{Документ.Табель.Форма.Модуль(941)}: Поле агрегатного объекта не обнаружено (Получить)


 i 

Выделяйте код
 

Автор: Vofka 15.02.16, 9:25

Похоже, что Подразделение у Сотрудника это не периодический реквизит.

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