1. 1C / Говнокод #19512

    −99

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 22 Февраля 2016

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

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

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

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

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

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

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

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