Yes, the Symbol Fields Table would be the most appropriate place for this info.
The same missing feature in v7.
v7 has introduced the “do not populate” attribute, which should now be preferably used when you want the footprint on the layout but do not want the part in BOM (this attribute didn’t exist in v6, so all we had was “exclude from BOM”). It does show the corresponding symbol on the schematic with a large cross over it, so you can’t miss it. (But I wish there was maybe some a bit less obnoxious way of showing that.) Could be useful to show the “exclude from BOM” attribute on schematic as well, in some different, and still not too obnoxious way.
But there’s still no summary of those attributes anywhere, so it’s still much too easy to miss one or more parts with it, and sc*ew up a BOM. That is, to me and in my very humble, much obliged, opinion, a long-standing missing feature that looks very necessary for professional work. There’s no way we should have to check BOMs with hundreds of parts manually just to see if we haven’t excluded something by mistake, or just finding out what we have.
Be aware that all attributes, including these two, get copied when you copy/paste or duplicate a symbol in the schematic editor. So if you duplicate an excluded part and you didn’t want the copy to be excluded, and you didn’t notice, you’re done. (Been there, done that!)
I haven’t found an obvious way of extracting this in a Python script, but there probably is. The thing is, last I tried, when some symbol was “excluded from BOM”, it just wouldn’t be listed when enumerating parts using the KiCad Python API. I haven’t tried with the “Do not populate” attribute, to see if the same issue exists. But I didn’t find a way of getting those excluded parts from Python.
So I really, strongly, fervently suggest the team to add this in the next version. Still very humbly.
But meanwhile, if I’ve missed a simple way of extracting this info reliably from Python, that’ll be good enough. If anyone knows.