Вот так простенько, но со вкусом можно задать условие в параметрах виртуальной таблицы
ВЫБОР
КОГДА &ТехнологическаяНоменклатура
И &НетехнологическаяНоменклатура
ТОГДА ИСТИНА
ИНАЧЕ ВЫБОР
КОГДА &ТехнологическаяНоменклатура
И НЕ &НетехнологическаяНоменклатура
ТОГДА Номенклатура В (&СписокНоменклатуры)
ИНАЧЕ ВЫБОР
КОГДА &НетехнологическаяНоменклатура
И НЕ &ТехнологическаяНоменклатура
ТОГДА НЕ Номенклатура В (&СписокНоменклатуры)
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ
КОНЕЦ
Учитесь:
ИначеЕсли ТипЗнч(Объект) = ТипЗнч(Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент()) или
ТипЗнч(Объект) = ТипЗнч(Справочники.ЕдиницыИзмерения.СоздатьЭлемент()) или
ТипЗнч(Объект) = ТипЗнч(Справочники.Номенклатура.СоздатьЭлемент()) Тогда
// функция ищет элемент в массиве. Если находит - возвращает его индекс, иначе -1
Функция ВернутьИндексВМассиве(МассивДанные, Элемент) Экспорт
Если МассивДанные = Неопределено Тогда
Возврат -1;
КонецЕсли;
Для ИндексЭлемента = 0 По МассивДанные.ВГраница() Цикл
Если (МассивДанные[ИндексЭлемента] = Элемент) Тогда
Возврат ИндексЭлемента;
КонецЕсли;
КонецЦикла;
// не нашли элемент
Возврат -1;
КонецФункции
Почему не
Функция ВернутьИндексВМассиве(МассивДанные, Элемент) Экспорт
Если МассивДанные = Неопределено Тогда
Возврат -1;
КонецЕсли;
Рез = МассивДанные.Найти(Элемент);
Возврат ?(Рез = Неопределено, -1, Рез);
КонецФункции
(127) это удобно обновлять, если речь идет о типовом коде, который надо заремарить, чтобы он не выполнялся и потом был хорошо виден при сравнении-объединении :)
Быдлокодинг
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший