Единственное, что приходит в голову - перед компоновкой специальным запросом выкупать ситуацию с отсутствием данных и корректировать список выбранных полей.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДанныеТЗ = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ДанныеТЗ.ВыбратьСтроку();
Для Каждого ТекКолонка Из ДанныеТЗ.Колонки Цикл
Если (ДанныеТЗ.Итог(ТекКолонка.Имя) = 0) И (ТекКолонка.Имя <> "КоличествоНачальныйОстаток") Тогда
Счетчик = 0;
Пока Счетчик < Настройки.Выбор.Элементы.Количество() Цикл
ПолеКомпоновкиДанных = Настройки.Выбор.Элементы[Счетчик];
Если Строка(ПолеКомпоновкиДанных.Поле) = ТекКолонка.Имя Тогда
Настройки.Выбор.Элементы.Удалить(ПолеКомпоновкиДанных);
Продолжить;
КонецЕсли;
Счетчик = Счетчик + 1;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн