Имя: Пароль:
1C
1С v8
УТ11 - странный код
,
0 ildary
 
30.05.17
10:35
Уважаемые специалисты, посоветуйте пожалуйста, можно ли данный код(не мной добавленный в конфигурацию) заменить на

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

Вот сам код:

    ТабТовары = ТаблицаТоваров.Выгрузить();
    Для Каждого Стр Из ТабТовары Цикл
        
        Стр.НомерСтроки = Индекс + 1;
        
        Если Стр.Выбран Тогда
            
            ЕстьТовары = Истина;
            
        КонецЕсли;
        
    КонецЦикла;
    Если Не ЕстьТовары Тогда
        Возврат Ложь;
    КонецЕсли;
1 butterbean
 
30.05.17
10:38
а где анализ поля Выбран ??
2 Jonny_Khomich
 
30.05.17
10:38
вряд ли. в таблице товаров ведь флаг есть "выбран", он то и проверяется.
3 Толич
 
30.05.17
10:39
Если ТаблицаТоваров.Количество() = 0 Тогда
   Возврат ЛОЖЬ;
КонецЕсли;
4 Ц_У
 
30.05.17
10:39
ТАм не только Выбран но и номер строки устанавливается
5 HardBall
 
30.05.17
10:39
НайтиСтроки()
6 ildary
 
30.05.17
10:41
(3) действительно, я набил вручную и пропустил.

Но в целом в коде нет никакой вуду магии, кроме анализа на наличие строки в таблице и его можно сократить? До такого:

Если ТаблицаТоваров.Количество() = 0 Тогда
   Возврат Ложь;
КонецЕсли;
7 oslokot
 
30.05.17
10:43
(6) тебе уже озвучили правильный ответ в (5)
8 Ц_У
 
30.05.17
10:43
А так, "Работает - не трожь"(с)
9 2dolist
 
30.05.17
10:44
Можешь сократить, добавив свою проверку в начале
10 2dolist
 
30.05.17
10:46
Выбран()
Синтаксис:
Выбран()
Назначение:
Определение факта позиционирования объекта типа документ.
Возвращает: 1 - если документ выбран; 0 - если не выбран.


если Документ записан в базе , метод Записать() то будет 1 , а если только создается - открыта форма , но документ не записан будет 0

Метод перекочевал ещё из 7-ки
11 CountR
 
30.05.17
10:47
В коде УТ во первых заполняется колонка Номер строки:
Стр.НомерСтроки = Индекс + 1
и во вторых устанавливается флаг ЕстьТовары по условию Если Стр.Выбран
В предложенном коде:
Если ТаблицаТоваров.Количество() = 0 Тогда
   Возврат;
КонецЕсли;
не выполняется ни одной из этих двух задач.

ЗЫ: вот потом и пишут везде - УТ11 - гуано и криво сделано.
12 patria0muerte
 
30.05.17
10:51
Функция ЕстьВыбранныеТовары()
Возврат ТаблицаТоваров.НайтиСтроки(Новый Структура("Выбран", Истина)).Количество() > 0;
КонецФункции
13 VladZ
 
30.05.17
10:53
(0) Я не вижу смысла править код.

Код читабельный: логика кода понятна. Кроме того, косяков тут нет.
14 Вафель
 
30.05.17
10:55
Лучше ТаблицаТоваров.Итог("Выбран") > 0
15 Вафель
 
30.05.17
10:55
А в (0) просто не хватает Прервать.
16 CountR
 
30.05.17
10:59
Без полного цикла по всем строкам не будет заполняться поле НомерСтроки:
Стр.НомерСтроки = Индекс + 1
17 ildary
 
30.05.17
11:00
Большое спасибо всем за помощь, меня смутил Выбран, оказалось так обозвали пометку. Самый лучший и простой код - в (12).
18 Вафель
 
30.05.17
11:00
(16) Одинаковый номер строки всем строкам тоже можно быстрее установить
19 Вафель
 
30.05.17
11:01
(16) Кстати здесь это бессмысленный код, ибо не в основную тз запись, а в выгруженную. Которая потом нигде не используется
20 УППшник
 
30.05.17
11:02
(0) При чем здесь УТ 11?
21 ildary
 
30.05.17
11:04
(20) это дописка в УТ11. Согласен, что типовой код здесь отсутствует.
22 НЕА123
 
30.05.17
11:07
(12)+

Функция ЕстьВыбранныеТовары()
Возврат ТаблицаТоваров.Найти("Выбран", Истина) <>
Неопределено;
КонецФункции