(0) твой изначальный алгоритм не равен (4)
Если ТекущиеДанные.НомерЗаявки <> "" Тогда
ОтборПоКорзинe = Новый ФиксированнаяСтруктура("НомерЗаявки",ТекущиеДанные.НомерЗаявки);
Если НЕ ТекущиеДанные.ТМЦ.Пустая() Тогда
ОтборПоКорзинe = Новый ФиксированнаяСтруктура("НомерЗаявки,ТМЦ",ТекущиеДанные.НомерЗаявки,ТекущиеДанные.ТМЦ);
Если НЕ ТекущиеДанные.ФизЛицо.Пустая() Тогда
ОтборПоКорзинe = Новый ФиксированнаяСтруктура("НомерЗаявки,ТМЦ,ФизЛицо",ТекущиеДанные.НомерЗаявки,ТекущиеДанные.ТМЦ,ТекущиеДанные.ФизЛицо);
КонецЕсли;
КонецЕсли;
КонецЕсли;
У тебя не будет формироваться структура если НомерЗаявки =""
В (4) собрал структуру отбора нужной конфигурации и отправил в отбор, только предусмотри ситуацию, когда не выбрано ни одной строки ОтборСтрок = Неопределено, возможно, при вводе новой строки, у тебя пока не заполнены нужные поля, соответственно и отбор некорректный. Собственно, текущая строка уже установлена, но пустая (дообработай отбор после окончания редактирования строки)