Имя: Пароль:
1C
1С v8
Задание 1С специалист. Почему в итогах используем функцию МАКСИМУМ?
0 Scandsv
 
05.01.16
20:55
Добрый день дорогие форумчане.
Если кому не трудно, подскажите.

Решаю задачки по 1с специалист и сравниваю их с теми решениями, что предлагают на сайтах.

Вот возник вопрос.

Есть запрос который отбирает партии товаров для списания по ФИФО/ЛИФО

"ВЫБРАТЬ
            |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
            |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Услуга КАК Услуга,
            |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
            |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
            |ПОМЕСТИТЬ РасходнаяНакладная
            |ИЗ
            |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
            |ГДЕ
            |    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
            |
            |СГРУППИРОВАТЬ ПО
            |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
            |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.Услуга
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    РасходнаяНакладная.Номенклатура КАК Номенклатура,
            |    РасходнаяНакладная.Услуга КАК Усуга,
            |    РасходнаяНакладная.Количество КАК Количество,
            |    РасходнаяНакладная.Сумма КАК Сумма,
            |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
            |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СтоимостьОстаток, 0) КАК СтоимостьОстаток
            |ИЗ
            |    РасходнаяНакладная КАК РасходнаяНакладная
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
            |                &МоментВремени,
            |                Номенклатура В
            |                    (ВЫБРАТЬ
            |                        РасходнаяНакладная.Номенклатура
            |                    ИЗ
            |                        РасходнаяНакладная)) КАК ОстаткиНоменклатурыОстатки
            |        ПО РасходнаяНакладная.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
            |
            |УПОРЯДОЧИТЬ ПО
            |    ОстаткиНоменклатурыОстатки.Партии.МоментВремени" + СортировкаПартий + "
            |ИТОГИ
            |    МАКСИМУМ(Услуга),
            |    МАКСИМУМ(Количество),
            |    МАКСИМУМ(Сумма),
            |    СУММА(КоличествоОстаток)
            |ПО
            |    Номенклатура";

Почему в итогах используем функцию МАКСИМУМ????
1 Builder
 
05.01.16
21:37
Насколько помню, можно использовать любую функцию, хоть СРЕДНЕЕ, результат будет одинаковый.
2 RomanYS
 
05.01.16
21:57
В данном случае логичнее поместить эти поля в раздел "По" итогов чтобы сгруппировать по ним. Но тогда последующая выборка будет содержать четыре вложенных цикла, что очччень не удобно. Поэтому идут на хитрость: итоги берут по одному заведомо уникальному полю (номенклатура), а по остальным полям берут минимум или максимум (от заведомо одинаковых значений). Если поля не помещать в итоги, то выборке по номенклатуре(итог первого уровня) эти поля будут NULL, а значения будут только в выборке детальных записей.

(1)СРЕДНЕЕ не применимо к типам булево и строка.
AdBlock убивает бесплатный контент. 1Сергей