УТ11 - странный код

1. olo_lo4 30.05.17 23:47 Сейчас в теме
Уважаемые специалисты, посоветуйте пожалуйста, можно ли данный код(не мной добавленный в конфигурацию) заменить на

Если ТаблицаТоваров.Количество() = 0 Тогда
   Возврат;
КонецЕсли;


Вот сам код:
    ТабТовары = ТаблицаТоваров.Выгрузить();
    Для Каждого Стр Из ТабТовары Цикл
        
        Стр.НомерСтроки = Индекс + 1;
        
        Если Стр.Выбран Тогда
            
            ЕстьТовары = Истина;
            
        КонецЕсли;
        
    КонецЦикла;
    Если Не ЕстьТовары Тогда
        Возврат Ложь;
    КонецЕсли;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. h00k 51 31.05.17 02:00 Сейчас в теме
(1)
можно ли данный код(не мной добавленный в конфигурацию) заменить на

Конечно можно. Вот только смысл такой "замены" я, как-то, не улавливаю. Что получить то в итоге хотите?
3. ResetAtreides 31.05.17 09:36 Сейчас в теме
Нельзя. как минимум потому, что оригинальный код что-то возвращает, а ваш нет. И у оригинального, похоже, дальше какая-то обработка идет, которая вашим куском не учитывается
10. h00k 51 31.05.17 15:57 Сейчас в теме
(3)
Нельзя.

Не будьте так категоричны, заменить - можно, удалить - тоже можно, вообще всё что угодно сделать можно, если есть понимание какой конечный результат должен быть на выходе.
Вот, например, у ТС такого понимания нет. Так-как приведены два абсолютно по разному работающих куска кода - оригинальный нумерует строки таблицы и возвращает признак наличия товарных позиций если в строке с товаром установлена пометка, а предлагаемый на замену прерывает выполнение если в табличной части нет строк. Цель, которую преследует топик стартер, так же не озвучена, так что вполне можно и дальше фантазировать на тему:

ЕстьТовары = Ложь; 

Если ТаблицаТоваров.Количество() = 0 Тогда
   Возврат ЕстьТовары ;
КонецЕсли;

ТабТовары = ТаблицаТоваров.Выгрузить();
 Для Каждого Стр Из ТабТовары Цикл
        
        Стр.НомерСтроки = Индекс + 1;  // WTF? Откуда индекс берётся?!
        Если Стр.Выбран Тогда
            
            ЕстьТовары = Истина;            
        КонецЕсли;
КонецЦикла;

Возврат ЕстьТовары ;
Показать
11. KazanKokos 11 31.05.17 16:12 Сейчас в теме
(10)
WTF? Откуда индекс берётся?!
нафига там вообще эта строчка? :)
4. Rain88 376 31.05.17 09:51 Сейчас в теме
Думаю, что нельзя потому что идет проверка не на заполненность таблицы ТаблицаТоваров, а проверка на конкретное значение реквизита "Выбран" в проверке условия "Если Стр.Выбран Тогда".
5. Rain88 376 31.05.17 09:56 Сейчас в теме
Хотя, с другой стороны, если в таблице нет строк, то цикл не отработает, соответственно переменная "ЕстьТовары" будет равна Ложь и значение будет возвращено - Ложь. Т.е. в вашем случае, если проверка все же идет на заполнение таблицы, нужно будет просто добавить значение возврата:
 
Если ТаблицаТоваров.Количество() = 0 Тогда
   Возврат Ложь;
КонецЕсли; 
6. herfis 513 31.05.17 09:59 Сейчас в теме
Можно на такой заменить:
ТабТовары = ТаблицаТоваров.Выгрузить().Скопировать(Новый Структура("Выбран", Истина));
Если ТабТовары.Количество() = 0 Тогда
     Возврат;
КонецЕсли;
Для Каждого Стр Из ТабТовары Цикл
   ...
КонецЦикла;

Если б знать, что там дальше, то можно было бы и больше оптимизировать. Хотя если там ниже вдруг есть изменение и обратная загрузка в контекст формы, то даже так нельзя. И может, вообще нет необходимости в таблицу значений выгружать.
7. user633533_encantado 11 31.05.17 10:50 Сейчас в теме
(6) Это не оптимизация. Если таблица пустая, то цикл и так не отработает.
8. KazanKokos 11 31.05.17 10:55 Сейчас в теме
(7) я так полгаю что автор предполагает что в таблице будут товары но если не стоит галка "Выбран" он в проводках не участвует. соответственно он хочет проверить естьли в таблице выбранный товар. тогда логично
9. KazanKokos 11 31.05.17 10:59 Сейчас в теме
(7) ему еще можно на форме отображать галочки а в таблицу писать единички и тупо считать итог по этой колонке.
но это сложности при отображении.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот