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

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
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
Процедура СводПродажКоличество_Свод()
     ТаблицаПродаж.Очистить();
     //Здесь с учетом возвратов
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ
                         |     ТоварыОрганизацийОбороты.Номенклатура,
                         |     ТоварыОрганизацийОбороты.КоличествоРасход КАК Количество
                         |ИЗ
                         |     РегистрНакопления.ТоварыОрганизаций.Обороты(&Период1, &Период2, Период, Склад = &Склад) КАК ТоварыОрганизацийОбороты";
     Запрос.УстановитьПараметр("Период1"     , НачалоДня(НачДата));
     Запрос.УстановитьПараметр("Период2"     , КонецДня(КонДата));
     Запрос.УстановитьПараметр("Склад"      , СкладПриемник);
     
     Рез=Запрос.Выполнить().Выбрать();
     Пока Рез.Следующий() Цикл
          Нов=ТаблицаПродаж.Добавить();
          Нов.Номенклатура=Рез.Номенклатура;
          Нов.Количество=Рез.Количество;
     КонецЦикла;     
    ТаблицаПродаж.Свернуть("Номенклатура","Количество");
КонецПроцедуры

Вот так некоторые суровые красноярские 1С-ники феерически говнокодят в вакууме!

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

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

    • Ну во-первых, заполнять таблицу значений путем обхода выборки можно лишь в том случае, когда с итератором выборки в цикле ты что-то такое делаешь, что нельзя сделать в запросе.
      Во-вторых, ТаблицаПродаж.Свернуть("Номенклатура","К оличество"); - Группировка в запросе для слабаков?

      Может автор еще что приметил. В целом, конечно, не такое лютое гавно, как ты постишь, а просто плохой код.
      Ответить
      • Как-то так:
        1. Вместо
        Нов=ТаблицаПродаж.Добавить();
        Нов.Номенклатура=Рез.Номенклатура;
        Нов.Количество=Рез.Количество;
        можно написать ЗаполнитьЗначенияСвойств(ТаблицаПродаж.Д обавить(), Рез);
        получится:

        Рез=Запрос.Выполнить().Выбрать();
        Пока Рез.Следующий() Цикл
        ЗаполнитьЗначенияСвойств(ТаблицаПродаж.Д обавить(), Рез);
        КонецЦикла;

        потом вроде мысль появляется: а зачем все это? Тогда:
        2. ТаблицаПродаж.Загрузить(Запрос.Выполнить ().Выгрузить());
        благо, что наименования колонок в ТЗ и синонимы полей в запросе совпадают.
        Итого: одна строка вместо
        Рез=Запрос.Выполнить().Выбрать();
        Пока Рез.Следующий() Цикл
        Нов=ТаблицаПродаж.Добавить();
        Нов.Номенклатура=Рез.Номенклатура;
        Нов.Количество=Рез.Количество;
        КонецЦикла;
        еще и ТаблицаПродаж.Очистить(); можно убрать.
        3. А потом смотрим на запрос и думаем: "а зачем этот цикл нужен?".
        Ответить
        • И не забыть убрать ТаблицаПродаж.Свернуть("Номенклатура","К оличество");
          Ответить
      • Какая нафиг группировка?
        Синтакс-помощник по таблице оборотов рег. накопления: "Агрегация производится по измерениям указанным в запросе". Как и во многих других вирт. таблицах. Все уже сгруппировано.
        Ответить
    • вот так достаточно для такого же результата:

      Запрос = Новый Запрос;
      Запрос.Текст =
      "ВЫБРАТЬ
      | Номенклатура,
      | КоличествоРасход КАК Количество
      |ИЗ
      | РегистрНакопления.ТоварыОрганизаций.Обор оты(&Период1, &Период2, , Склад = &Склад)";
      Запрос.УстановитьПараметр("Период1", НачалоДня(НачДата));
      Запрос.УстановитьПараметр("Период2", КонецДня(КонДата));
      Запрос.УстановитьПараметр("Склад", СкладПриемник);

      ТаблицаПродаж=Запрос.Выполнить().Выгрузи ть();
      Ответить
  • Самое главное, зачем выбирать обороты в разрезе "Периоды", если потом сворачивать до номенклатуры. Какое - же это гавно!!!!!!!!!
    Ответить

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

Переведи на "PHP", guest!

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


    8