One thing that I have noticed that the device is virtually undoped because compensation charge per atom is too small. For 2D material, one should set doping in units of charge per atom, not charge per volume.
The best way is to decide on doping concentration in units of charge per area as it would be normally defined in experimental work, and then recalculate it to charge per atom, and set it in the GUI or in the script directly. In the GUI, there is an option to charge units from charge per volume to charge per atom.
Regarding work function, one does not need to set it explicitly, as it is implicitly defined/computed for given potentials of source, drain and gate electrodes. If one uses the IVCharacteristics study object, then source potential is set to zero by default, and bias voltage V_ds is essentially drain potential. The gate potentials are then defined with respect to zero potential of the source electrode. For example, if gate potential is zero and V_ds=0 too, then work function of the metal gate = -E_Fermi, i.e., given by the Fermi energy of the system, which is computed and outputted into the log file after QuantumATK device calculation is finished.
If one uses IVCurve analysis object, then the source and drain potentials, as well as the gate potentials, can be set separately with respect to the common zero-energy reference level of the system.