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

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 169 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 169 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 312 18.04.17 07:32 Сейчас в теме
Я обычно такое делаю в две операции.
Сначала ищу, как хочу, НЕнужные элементы (строки ТЗ) и формирую из них массив. Потом этот массив вместе с ТЗ передаю в свою служебную процедуру, которая удаляет строки из ТЗ.
alex-l19041; herfis; +2 Ответить
15. spezc 782 18.04.17 08:06 Сейчас в теме
Что за жесть творится...

1. Проходим циклом таблицу значений, строки с показателем меньше 0 суем в массив.
2. Проходим циклом массив, и строки которые в массиве удаляем из таблицы значений.
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.
От этого и отталкивайтесь в своем запросе.
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день