Как определить, отрицательное число или нет

1. stagov 11 18.04.17 01:53 Сейчас в теме
Подобных вопросов давненько никто не задавал.
Все просто - цикл, строки ТЗ, положительные убираем, отрицательные оставляем.
В теме - как определить отрицательное число или нет.
Поисковики дают ссылки на темы давно минувших лет.... да и ответы не блещут
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. корум 287 18.04.17 02:05 Сейчас в теме
(1) отрицательные меньше нуля...
herfis; shalimski; +2
3. stagov 11 18.04.17 02:13 Сейчас в теме
(2) Вот как раз ради такого ответа и создавалась эта тема.
Спасибо что оправдали мои ожидания.
0,5 и 0,02 и т.д. то же меньше нуля...
+
11. collider 18.04.17 06:54 Сейчас в теме
(3) А если 0.5 меньше нуля, то что тут будет ответом?
0 - 0,5 = ?
PhoenixAOD; +1
20. корум 287 18.04.17 09:11 Сейчас в теме
(3)
0,5 и 0,02 и т.д. то же меньше нуля...

Вот и наступил тот день, когда программист спутал ноль с единицей.
user1530636; ong1990; +2
25. PhoenixAOD 62 18.04.17 09:32 Сейчас в теме
(3)Поржал))) В школу иди учись. меньше нуля
+
4. madonov 190 18.04.17 02:19 Сейчас в теме
Для каждого Строка из ТЗ Цикл

   Если не Строка.ПроверяемаяКолонка < 0 Тогда
      ТЗ.Удалить(Строка);
   КонецЕсли;

КонецЦикла;



0,5 и 0,02 и т.д. то же меньше нуля...

Серьезно?
+
5. stagov 11 18.04.17 02:26 Сейчас в теме
7. boln 1040 18.04.17 05:43 Сейчас в теме
(4) В таком цикле удаления засада есть. Если в следующей строке после удаленной условие тоже истинно, то цикл её "перескочит". Цикл для удаления лучше делать по индексу в обратном порядке - от последней строки к первой.
alex-l19041; taiwanchik; +2
9. madonov 190 18.04.17 06:13 Сейчас в теме
(7) Да, перескочит. Думаю разберется с обходом по индексу. Но это не точно =) .

(8)
положительные убираем, отрицательные оставляем.

Вопрос о том, что же делать с нулем остается открытым. И что вообще есть ноль... можно прямо пофилософствовать
+
10. boln 1040 18.04.17 06:36 Сейчас в теме
(9)
Вопрос о том, что же делать с нулем остается открытым. И что вообще есть ноль... можно прямо пофилософствовать
"Ноль - это такое число, которое не отрицательное и не положительное" ©Кэп :)
+
12. fokin 18.04.17 07:08 Сейчас в теме
(7)
получай в цикле строку таблицу по индексу с конца

Количество = ТЗ.Количество();
Пока Количество > 0 Цикл

   Если не СтрокаТЗ[Количество-1].ПроверяемаяКолонка < 0 Тогда
      ТЗ.Удалить(Строка);
   КонецЕсли;
   Количество = Количество - 1;

КонецЦикла;
Показать
13. Octopus 337 18.04.17 07:30 Сейчас в теме
(12) А чем цикл "Для каждого" не устраивает? Не будет мороки с индексами.
+
16. boln 1040 18.04.17 08:33 Сейчас в теме
17. Octopus 337 18.04.17 08:36 Сейчас в теме
28. fokin 21.04.17 15:30 Сейчас в теме
(13) в (7) тебе написали чем
+
19. boln 1040 18.04.17 08:45 Сейчас в теме
Еще раз для всех, кто не проснулся: см. (7)
+
6. Octopus 337 18.04.17 05:32 Сейчас в теме
Ой, парни, спасибо за поднятое настроение с утра
+
8. boln 1040 18.04.17 05:50 Сейчас в теме
"Отрицательные числа меньше нуля, положительные больше нуля" ©капитан Очевидность :)
+
14. ImHunter 315 18.04.17 07:32 Сейчас в теме
Я обычно такое делаю в две операции.
Сначала ищу, как хочу, НЕнужные элементы (строки ТЗ) и формирую из них массив. Потом этот массив вместе с ТЗ передаю в свою служебную процедуру, которая удаляет строки из ТЗ.
alex-l19041; herfis; +2
15. spezc 782 18.04.17 08:06 Сейчас в теме
Что за жесть творится...

1. Проходим циклом таблицу значений, строки с показателем меньше 0 суем в массив.
2. Проходим циклом массив, и строки которые в массиве удаляем из таблицы значений.
herfis; +1
18. boln 1040 18.04.17 08:43 Сейчас в теме
(15) Это тогда будет два цикла. Я раньше так и делал :)

Граница = ТЗ.Количество() - 1;
Для Индекс = -Граница по 0 Цикл
      Если ТЗ[-Индекс].ТаКолонка < 0 Тогда
             ТЗ.Удалить(ТЗ[-Индекс]);
      КонецЕсли;
КонецЦикла;

Такая рекомендация была на ИТС.
+
21. maksimov.andrey 18 18.04.17 09:26 Сейчас в теме
Топикстартер на сайте 7 лет, специализация - Программист 1С. Тут попахивает троллем.
По теме:
Сч = 0;
Пока Сч < ТЗ.Количество() -1 Цикл
    Стр = ТЗ.Получить(Сч);
    Если Стр.Колонка < 0 Тогда
        Сч = Сч + 1;
    Иначе
        ТЗ.Удалить(Стр);
    КонецЕсли;
КонецЦикла;
Показать
+
24. herfis 498 18.04.17 09:31 Сейчас в теме
(21) В (18) более лаконичная реализация.
+
22. herfis 498 18.04.17 09:28 Сейчас в теме
Я в 7.7 всегда удалял с конца по индексу, потому как лучше вариантов не было. А в 8-ке я всегда в "для каждого" набираю массив ссылок на строки для удаления и во втором цикле "для каждого" их удаляю. Да, второй цикл. Но второй цикл только по удаляемым. Гораздо читабельнее выглядит. Да и прием более унифицированный. Например, когда можно отобрать ссылки на удаляемые строки через те же НайтиСтроки() и потом удалить тем же самым циклом удаления.
В общем, на вкус и цвет... Но мне так нравится больше. Хорошо же выглядит
Для Каждого Строка Из Таблица Цикл
   Если ... Тогда
      УдаляемыеСтроки.Добавить(Строка);
   КонецЕсли;
КонецЦикла;
Для Каждого УдаляемаяСтрока Из УдаляемыеСтроки Цикл
   Таблица.Удалить(УдаляемаяСтрока);
КонецЦикла;
+
27. boln 1040 18.04.17 10:49 Сейчас в теме
(22) Угу, если нужно использовать НайтиСтроки(), то, конечно, через цикл по массиву.
+
23. boln 1040 18.04.17 09:29 Сейчас в теме
Да ладно, зато пообщались :)
+
26. ipoloskov 162 18.04.17 10:33 Сейчас в теме
Сначала нужно определить, что есть нуль, и что есть операция сравнения.
Как известно, нуль обладает следующими свойствами:
А + 0 = А для всех А данного поля.
Существует, и единственное, такое В, что А + В = 0
Следовательно, А > 0, если B < 0.
От этого и отталкивайтесь в своем запросе.
+
Внимание! Тема сдана в архив

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