I think you're having some confusion about the word "elements". That's super-common; when I was teaching ControlLogix classes I illustrated with Lego blocks.
In an SLC/MicroLogix, an "element" is the data type of the data table.
For Integer data tables, each "element" is a 16-bit word. N50:0 is the first element, N50:1 is the second element, and so on.
Those Integers also have "sub-elements", the individual bits that make up the word. You address those in the SLC/MicroLogix with slashes, so N50:0/0 is the first bit of the first word.
In a ControlLogix/CompactLogix, an "element" is the data type of the tag.
A DINT type tag has just one element, but if you made it an Array, each element would itself be a DINT.
DINTs and INTs have sub-elements as well; you can address a bit inside a DINT with a dot notation, where MyTag[0].0 is the first bit in the first element of the array tag.
BOOL tags are different between the two platforms. On the ControlLogix, a BOOL is itself just one bit and a BOOL MyTag[x] array has individual boolean elements that have no sub-elements.
When you're messaging between CompactLogix and SLC/MicroLogix, you can only use 16-bit Integers (INT) or 32-bit Floating Point (REAL) tags.
Your message as described is trying to write to a 15 word block starting at N50:1 and going through N50:15.
But your source is just one tag, called Photoeyes. If that tag is an INT, then its value will be written into N50:1 and the rest of the destination block (N50:2 through N50:15) will get zeroes.
If you intend to send only one 16-bit Word, change the Length to one Element.
If you need to send multiple words, change Photoeyes to Photoeyes[x] and make it an INT array tag, and set the Length of the message to the number of integer words you want to write to the MicroLogix.