С одной стороны хочется уменьшить код и количество операций, а с другой иногда свой код вызывает сомнение, и возникает необходимость об этом спросить. Можно ли так писать или нельзя?

```1c
    Если Выборка.Следующий() И Выборка.Номенклатура.Наименование<>"xxxxxxxxxx" Тогда
```
 Но с другой стороны два вложенных ифа, для получения одного значения, вроде как избыточно.
---
Возникает закономерный вопрос: если нужно всего одно значение, то почему бы его не получить сразу в запросе? Аналогичный вопрос и касательно наименования номенклатуры.
---
Возникает закономерный вопрос: если нужно всего одно значение, то почему бы его не получить сразу в запросе? Аналогичный вопрос и касательно наименования номенклатуры.
---
Так я его в запросе и получаю, его же потом из запроса нужно все равно прочитать? Или это условие сразу заложить в запрос? Тогда да наверно так можно, спасибо. Глупый был вопрос. Но раз уже я его задал, такая конструкция все же может быть или нет?
---
такая конструкция все же может быть или нетВполне.
---
по качеству кода криво.
По вопросу будет ли работать? Будет.
По оптимизации кода, то все условия максимально в запросе указывают, чтобы ускорить сам запрос и уменьшить количество обрабатываемых данных.
Если код в качестве примера выложили, то тут уже думайте сами что и как вам менять.
Если запросы не умеете писать, то курс по запросам Кузнеца на ютубе пройдите думаю за глаза будет.
---
Ну не боги горшки обжигают, все делают ошибки, проглядел, бывает.
---
```1c
    Пока Выборка.Следующий() Цикл
    Если Выборка.Номенклатура.Наименование <> "xxxxxxxxxx" Тогда
    //Обработка
    КонецЕсли;
    КонецЦикла;
```

Так или нет? что смущает?
---
смущает то, что если это выборка из запроса, почему не сделать условие в запросе.
смущает обращение через точку к наименованию ...
---
наименования никакого в рабочем коде нет, просто удалил из кода лишнее и заменил наименованием, а условие да надо добавить в запрос.
---
это не просто "смущает" - это код для баз с 10-ю элементами. Он делает запрос к справочнику "Номенклатура", выборку из него (уже таблицу всего справочника крутит, разве что данные порциями получает т.к. Выборка), так потом еще и разъименование в цикле (новый запрос к этому же справочнику, уже на получение значения реквизита конкретного элемента).
Т.е. человек вообще не понимает механизм работы.
Но работать будет. На 10 элементах.
---
запрос в цикле только получается...
---
Если Выборка.Номенклатура.НаименованиеВы запрос к результату запроса делаете? Т.е. вам пофиг вообще, что написали, да еще все в цикле?
---
ну если с 0 писать, то я бы вообще в наименование не лез))) если наименование содержит какой-то текст и мы хотим по этому признаку отобрать элементы, то это скорее должен быть отдельный признак и вот по нему уже отбор осуществлять.
Приведенный код - это переписанный из (1) с целью выяснить чего хочет товарищ
---
В 1с логика ленивая насколько я помню, поэтому работать будет. Насколько это удобно и ясно читается по сравнению со стандартным вариантом- другой вопрос. Хакерский стиль сишников)
---
Странно что будет, но раз два человека из 5 сказали явно, что будет, да собственно и работает. По логике вроде бы не должно работать.
---
По логике вроде бы не должно работать.Почему? Архитектурно чушь написана, а работать будет (хотя надо проверять - 1С такая 1С).
---
(12) а, понял - у 1С есть "пунктик" по поводу равнозначности параметров условий. Т.е. возможно, что

```1c
    Выборка.Следующий() И Выборка.Номенклатура.Наименование
```

- оба параметра будут выполняться одновременно, и "Выборка.Номенклатура.Наименование" просто будет неоткуда взяться.
Но надо проверять прямо на коде.
И это не "логика", а одноэсовая бредятина - когда параметры равнозначны, и если оно взаимозависимы, то нужно городить многоуровневые Если..Тогда вместо читаемого и понятного кода.

```1c
    Если Выборка.Следующий() Тогда
    Если Выборка.Наименование<>"xxxxxxxxxx" Тогда
    ...
    КонецЕсли
    КонецЕсли
```
вместо:

```1c
    Если Выборка.Следующий() И Выборка.Номенклатура.Наименование<>"xxxxxxxxxx" Тогда
```
---
то нужно городить многоуровневые Если. да, вот ключевое слово городить, городить то и не хочется, но при огороде лучше читается код, по крайней мере понятнее.
---
где ж он понятнее, если куча вложенных уровней, совершенно здесь неуместных? Искусственные уровни условий, хотя условие одно, только сложное.
А код уже превратился в винегрет "Если ... Тогда".
---
Хакерский стиль сишниковЭто не стиль, а непонимание с чем работаешь. И к хакерам вообще никакого отношения. Как и к "сишникам".
---
Тему можно закрыть, позор Виктору Перестукину.