Разрешается ли такая конструкция обхода запроса?
С одной стороны хочется уменьшить код и количество операций, а с другой иногда свой код вызывает сомнение, и возникает необходимость об этом спросить. Можно ли так писать или нельзя?
Но с другой стороны два вложенных ифа, для получения одного значения, вроде как избыточно.
Если Выборка.Следующий() И Выборка.Номенклатура.Наименование<>"xxxxxxxxxx" Тогда
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) по качеству кода криво.
По вопросу будет ли работать? Будет.
По оптимизации кода, то все условия максимально в запросе указывают, чтобы ускорить сам запрос и уменьшить количество обрабатываемых данных.
Если код в качестве примера выложили, то тут уже думайте сами что и как вам менять.
Если запросы не умеете писать, то курс по запросам Кузнеца на ютубе пройдите думаю за глаза будет.
По вопросу будет ли работать? Будет.
По оптимизации кода, то все условия максимально в запросе указывают, чтобы ускорить сам запрос и уменьшить количество обрабатываемых данных.
Если код в качестве примера выложили, то тут уже думайте сами что и как вам менять.
Если запросы не умеете писать, то курс по запросам Кузнеца на ютубе пройдите думаю за глаза будет.
(5)это не просто "смущает" - это код для баз с 10-ю элементами. Он делает запрос к справочнику "Номенклатура", выборку из него (уже таблицу всего справочника крутит, разве что данные порциями получает т.к. Выборка), так потом еще и разъименование в цикле (новый запрос к этому же справочнику, уже на получение значения реквизита конкретного элемента).
Т.е. человек вообще не понимает механизм работы.
Но работать будет. На 10 элементах.
Т.е. человек вообще не понимает механизм работы.
Но работать будет. На 10 элементах.
(16) ну если с 0 писать, то я бы вообще в наименование не лез))) если наименование содержит какой-то текст и мы хотим по этому признаку отобрать элементы, то это скорее должен быть отдельный признак и вот по нему уже отбор осуществлять.
Приведенный код - это переписанный из (1) с целью выяснить чего хочет товарищ
Приведенный код - это переписанный из (1) с целью выяснить чего хочет товарищ
(12)(12) а, понял - у 1С есть "пунктик" по поводу равнозначности параметров условий. Т.е. возможно, что
- оба параметра будут выполняться одновременно, и "Выборка.Номенклатура.Наименование" просто будет неоткуда взяться.
Но надо проверять прямо на коде.
И это не "логика", а одноэсовая бредятина - когда параметры равнозначны, и если оно взаимозависимы, то нужно городить многоуровневые Если..Тогда вместо читаемого и понятного кода.
вместо:
Выборка.Следующий() И Выборка.Номенклатура.Наименование
- оба параметра будут выполняться одновременно, и "Выборка.Номенклатура.Наименование" просто будет неоткуда взяться.
Но надо проверять прямо на коде.
И это не "логика", а одноэсовая бредятина - когда параметры равнозначны, и если оно взаимозависимы, то нужно городить многоуровневые Если..Тогда вместо читаемого и понятного кода.
Если Выборка.Следующий() Тогда
Если Выборка.Наименование<>"xxxxxxxxxx" Тогда
...
КонецЕсли
КонецЕсли
Если Выборка.Следующий() И Выборка.Номенклатура.Наименование<>"xxxxxxxxxx" Тогда
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот