In Web TimeSheet users can select a task to associate with each unique expense.

They can, of course, still associate an expense with the project as a whole by setting the Task field value to <None> (the default value).

To allow users to enter expenses against tasks, you have to enable the Task column on the Expense Column Preferences page, and have users enable this column in their expense sheets; select Settings on an expense sheet to modify which columns display.

Advantages:
Users can only associate expenses with tasks to which they are assigned.
If you’ve limited which expense types can be used for a given project, users are limited to those expense types for the project’s task-level expenses.

 
Reporting Functionality:
The Expense Details report,reports based on it and the Expense Sheet List report allow you to report on what task each expense is associated with.
Tasks associated with expenses can be exported using the Expense Raw Data Export.