--Исправляем GetCreationDate: теперь будем использовать не дату начала работы, а дату окончания.
DROP FUNCTION [dbo].[GetCreationDate]
GO
CREATE FUNCTION GetCreationDate(@ObjID int)
RETURNS datetime
AS
BEGIN
  DECLARE @res datetime
  SET @res = NULL
  DECLARE @ParentID int
  DECLARE @TypeID int
  SELECT @ParentID = IsNull(Код_объекта_владельца,0), @TypeID = Код_типа_объекта FROM Объект WHERE Код_объекта = @ObjID
  SELECT @res = MIN(Дата_окончания_по_факту) FROM Работа WHERE Код_объекта = @ObjID
  WHILE (@ParentID<>0) AND (@res IS NULL)
  BEGIN
    SET @ObjID = @ParentID
    SELECT @ParentID = IsNull(Код_объекта_владельца,0), @TypeID = Код_типа_объекта FROM Объект WHERE Код_объекта = @ObjID
    SELECT @res = MIN(Дата_окончания_по_факту) FROM Работа WHERE Код_объекта = @ObjID
  END
  RETURN @res
END
