I know this was asked a few years ago so it's likely not relevant to Mr. B any more, however I had this same issue and spent a bit over a day figuring it out so maybe this can help someone else with the same problem.
As Ryan said the field_weight (custom_field) is part of commerce_product so another link is required. The path to a custom field is commerce-line-item:commerce-product:custom_field. However to get this field available within a loop, a rule component (which contains the conditions and calculations) must be called from within that loop. Also using "data comparison" rather than "has field" opens up all the fields within that entity.
To be able to reference these conditions you must have the module entity_reference installed. www.drupal.org/project/entityreference
Creating the rule component
- From the rules page click on Components tab
- Click Add new component
- Component plugin = Rule
- Add a custom name
- Variables: Date type = Commerce Line Item, Label = Line Item, Machine name = commerce_line_item
- Condition 1: Add new conditions -> Data comparision -> Data selector = commerce-line-item:type, Value = equals, Value = Product
- Condition 2: Add new conditions -> Data comparision -> Data selector = commerce-line-item:commerce-product:type, Value = equals, Value = your_product_type
- Action: Any action can now be used with the data selector commerce-line-item:commerce-product:custom_field
- Processing or calculations that you would like done on each line item should be done here.
Creating the rule
- Add new rule
- Name = Your rule name, React on event = Completing the checkout process
- Conditions are not required as these have been set up in the rule component
- Add loop variable name = list_item
- Add action within loop: Action to add = Components -> Rule: Your rule component name, Data selector = list_item
- Any other actions that apply to the order as a whole can be added outside the loop
Using this method any custom fields that you have created should now be accessible for all line items with a loop.