Бухгалтерия / Говнокод #16952 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
Результат = Запрос.Выполнить();
Если Результат.Выгрузить().Количество() <> 0 Тогда
	Выборка = Результат.Выбрать();
	Пока Выборка.Следующий() Цикл
		... тут некий код... и внутри контрольный в голову...
		Если ТЗ.Количество() <> 0 Тогда
			Для Каждого Строка Из ТЗ Цикл
				...
			КонецЦикла;	
		КонецЕсли;	
		...
	КонецЦикла;
КонецЕсли;

Видимо это такая "оптимизация", другого объяснения подобным проверкам (это не единичный случай) не нашел.

Запостил: Twilight_Sun Twilight_Sun, (Updated )

Комментарии (14) RSS

  • Если человек вот так вот проверяет количество строк в результате запроса

    Результат.Выгрузить().Количество() <> 0

    то о какой оптимизации может идти речь. Однозначно новичек писал.
    Ответить
    • > Однозначно новичек писал.

      Это же 1С. Однозначно пользователь VisualBasic.
      Ответить
    • Поэтому в кавычках написал, ага.
      возможно паранойя, типа "семь раз если один раз цикл".
      Ответить
    • Ну а вдруг оператор "Каждого" создает итератор, и создание этого итератора занимает миллиард процессорных тактов и четыре гигабайт памяти?

      "Каждого" -- они такие
      Ответить
  • "А что будет если проитерироваться по пустому массиву", -- подумал как-то программист 1C и осёкся: "мы же этого не проходили!"

    Три дня спрашивал по всем форумам программист, но ответа так и не нашел.

    И вот таким вот образом появлис я этот код.
    Ответить
  • Ребята, неплохие примеры оптимизации, нужно всем взять на заметку:

    Если Результат.Выгрузить().Количество() <> 0 Тогда - выгружаем стомильонов строк в ТЗ, чтобы тупо проверить их количество, выгрузку потом нигде не используем.

    И обязательно проверяйте количество элементов в коллекции оператором <> чем Нуралиев не шутит, вдруг там -1 окажется?
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8