1С 8.3 кон Колледж. Задача вывести в отчет количество девочек и мальчиков.
Задаю два вычисляемых поля и ресурсы. Но где-то естественно ошибаюсь потому, что количество мальчиков выводится не правильно. Подскажите пожалуйста где не верно?
---
в вычисляемом поле вы пишите конструкцию вида ВЫБОР КОГДА <условие> ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
т.е. должна выполниться некая логическая функция, которая вам вернет ИСТИНА или ЛОЖЬ и в зависимости от этого вернет 1 или 0.
вы в логическую функцию прописали ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Мужской) - в ответ система вам вернет литерал перечисления. Но это значение ни ИСТИНА и не ЛОЖЬ. СКД пытается преобразовать литерал к типу булево и получает в итоге ЛОЖЬ и уходит на ветку ИНАЧЕ.
Т.е. в полях ПолМ и ПолЖ СКД вам записывает нули.
Далее, вы говорите, а пусть мои поля будут ресурсами и ну ка СКД посчитай мне КОЛИЧЕСТВО нулей. СКД вам тихо-мирно и считает количество. Раз строка с 0, два строка 0 (тут еще надо смотреть как у вас группировки настроены) - в итоге вы видите 2, 4 и т.п.
Вы смотрите, что-то не то. Говорите скажи как мне СУММУ по моим ресурсам. СКД считает 0+0+0+0+0+0+0+0..... = 0. И выводит вам 0 (в скд поля с нулями по умолчанию не отображаются). Вот вы и видите пустоту, но это не значит, что СКД ничего не делает.

что же не так?
а не так то, что в условии вы должны проверить поле, которое содержит пол абитуриента на соответствие значению перечисления.
т.е. в запросе у вас есть поле Пол, вот его и надо подставить в выражение вычисляемого поля. И вам про это писали в (4).
ВЫБОР КОГДА ПОЛ = ЗНАЧЕНИЕ(Перечисление.ФолФизическогоЛица.Мужской) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
аналогично для подсчета лиц женского пола.

но даже если вы поправите выражение для вычисляемого поля, вы не получите желаемый результат, поскольку у вас есть ошибка в запросе.
вы на результат запроса накладываете группировку, в т.ч. по полю ПОЛ. Что вы получите в результате группировки?
Вы получить набор строк свернутых до города, специальности, финансирования и пола.
допустим у вас 10 абитуриентов из Тюмени подали документы на специальность повар на бюджет из них 3 парней, остальные девушки.
вы их в запросе выбрали и сгруппировали - у вас будет всего 2 строки. отличающиеся только полом. (город один, специальность одна, финансирование одно)
а потом вы попытаетесь посчитать свое вычисляемое поле, и вам СКД вернет 1 муж и 1 жен.

поэтому либо считайте количество муж и жен в запросе. Либо не делайте группировку в запросе, а все группировки накладывайте на уровне настроек варианта отчета СКД
---
раз уж вы решили менять запрос - не забудьте убрать вычисляемые поля.
в запросе вместо

```1c
    Иногородние.Ссылка.Пол КАК Пол
```

пропишите

```1c
    СУММА(ВЫБОР КОГДА Иногородние.Ссылка.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Женский) ТОГДА 1 иначе 0 КОНЕЦ) КАК ПолЖ,
    СУММА(ВЫБОР КОГДА Иногородние.Ссылка.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Женский) ТОГДА 0 иначе 1 КОНЕЦ) КАК ПолМ
```

т.е. вместо 1 поля будет два и они в группировке будут группируемыми полями

в блоке группировки убрать группировку по полу (убрать ПОЛ из группировочных полей)

```1c
    СГРУППИРОВАТЬ ПО
    Иногородние.Ссылка.Специальность,
    ЕСТЬNULL(Иногородние.Город, "др.нас.пункты"),
    Иногородние.Ссылка.Финансирование,
    Иногородние.Ссылка.Пол
```

поскольку в вас в запросе ОБЪЕДИНЕНИЕ, надо позаботиться о том, чтобы в остальных запросах участвующих в объединении было одинаковое количество полей.

далее во втором запросе - у вас нет поля ПОЛ. вы просто пишете NULL. вы СВОИХ по М и Ж считать не будете?

в третьем запросе - как вы думаете, он вообще у вас отработает?
---
ну запрос конечно странно сделан. но уж если использовать то, что есть, то получается подсчет общего количества абитуриентов "ВсегоАбитуриентов" происходит в третьем запросе из объединяемых. Первые два вернут NULL.
Исходя из этого в первом и втором запросе в полях ПолМ и ПолЖ должно быть NULL - тут мы не будем ничего считать,
а конструкции ВЫБРАТЬ надо перенести в третий запрос и поля поставить в группируемые по СУММе.
и будет вам счастье :-)
---
агрегатная функция должна быть Сумма, а не Количество.
---
пол в запросе получать надо, а дальше уже его с перечислением сравнивать, типа

```1c
    Выбор Когда ФизлицоПол = Значение(Перечисление.ПолФизлическогоЛица.Мужской) Тогда 1 Иначе 0 Конец
```
---
вовсе не надо. Раз добавлено вычисляемое поле, СКД сама дополнит итоговый запрос всем необходимым и прекрасно получит значение пола.
Пардон, поторопился.. Суть не в том, где получать, суть в том, что Значение перечисления надо сравнивать со значением пола Физлица
---
так где не правильно я так и не поняла. вроде поправила, как Вы сказали, но выводятся пустые поля..(
---
Значение(Перечисление.ПолФизическогоЛица.Мужской) надо сравнивать с какими-то данными из запроса. Если это студент, значит там должен быть привязан физик, или если там напрямую физики, то у физика будет поле ПолФизЛица. Вот его и сравнивать со значением перечисления.
А вы в вычисляемом выражении просто написали, если перечисление.мужик, значит 1. И что система должна сделать?
---
Строго не судите я только изучаю все это. То есть неверно я думаю, что если я в вычисляемом поле получаю 1цу (в случае если пол Мужской) и потом в ресурсах указываю ПолМ - Сумма(полМ) подсчет вестись не будет? А почему тогда если количество вывожу в ресурсах выводятся какие-то данные?
---
в вычисляемом поле вы пишите конструкцию вида ВЫБОР КОГДА <условие> ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
т.е. должна выполниться некая логическая функция, которая вам вернет ИСТИНА или ЛОЖЬ и в зависимости от этого вернет 1 или 0.
вы в логическую функцию прописали ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Мужской) - в ответ система вам вернет литерал перечисления. Но это значение ни ИСТИНА и не ЛОЖЬ. СКД пытается преобразовать литерал к типу булево и получает в итоге ЛОЖЬ и уходит на ветку ИНАЧЕ.
Т.е. в полях ПолМ и ПолЖ СКД вам записывает нули.
Далее, вы говорите, а пусть мои поля будут ресурсами и ну ка СКД посчитай мне КОЛИЧЕСТВО нулей. СКД вам тихо-мирно и считает количество. Раз строка с 0, два строка 0 (тут еще надо смотреть как у вас группировки настроены) - в итоге вы видите 2, 4 и т.п.
Вы смотрите, что-то не то. Говорите скажи как мне СУММУ по моим ресурсам. СКД считает 0+0+0+0+0+0+0+0..... = 0. И выводит вам 0 (в скд поля с нулями по умолчанию не отображаются). Вот вы и видите пустоту, но это не значит, что СКД ничего не делает.

что же не так?
а не так то, что в условии вы должны проверить поле, которое содержит пол абитуриента на соответствие значению перечисления.
т.е. в запросе у вас есть поле Пол, вот его и надо подставить в выражение вычисляемого поля. И вам про это писали в (4).
ВЫБОР КОГДА ПОЛ = ЗНАЧЕНИЕ(Перечисление.ФолФизическогоЛица.Мужской) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
аналогично для подсчета лиц женского пола.

но даже если вы поправите выражение для вычисляемого поля, вы не получите желаемый результат, поскольку у вас есть ошибка в запросе.
вы на результат запроса накладываете группировку, в т.ч. по полю ПОЛ. Что вы получите в результате группировки?
Вы получить набор строк свернутых до города, специальности, финансирования и пола.
допустим у вас 10 абитуриентов из Тюмени подали документы на специальность повар на бюджет из них 3 парней, остальные девушки.
вы их в запросе выбрали и сгруппировали - у вас будет всего 2 строки. отличающиеся только полом. (город один, специальность одна, финансирование одно)
а потом вы попытаетесь посчитать свое вычисляемое поле, и вам СКД вернет 1 муж и 1 жен.

поэтому либо считайте количество муж и жен в запросе. Либо не делайте группировку в запросе, а все группировки накладывайте на уровне настроек варианта отчета СКД
---
Спасибо, очень доходчиво рассказали!!!). Еще вопрос тогда такой. Просто группировки из запроса не удаляются, выдается ошибка. Как мне дополнить этот запрос? Есть в запросе в самом начале Выбрать разрешенные и там вытаскивается поле пол. Куда вписывать запрос по подсчету? или нужно как-то по новой его писать отдельно?
---
раз уж вы решили менять запрос - не забудьте убрать вычисляемые поля.
в запросе вместо

```1c
    Иногородние.Ссылка.Пол КАК Пол
```

пропишите

```1c
    СУММА(ВЫБОР КОГДА Иногородние.Ссылка.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Женский) ТОГДА 1 иначе 0 КОНЕЦ) КАК ПолЖ,
    СУММА(ВЫБОР КОГДА Иногородние.Ссылка.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Женский) ТОГДА 0 иначе 1 КОНЕЦ) КАК ПолМ
```

т.е. вместо 1 поля будет два и они в группировке будут группируемыми полями

в блоке группировки убрать группировку по полу (убрать ПОЛ из группировочных полей)

```1c
    СГРУППИРОВАТЬ ПО
    Иногородние.Ссылка.Специальность,
    ЕСТЬNULL(Иногородние.Город, "др.нас.пункты"),
    Иногородние.Ссылка.Финансирование,
    Иногородние.Ссылка.Пол
```

поскольку в вас в запросе ОБЪЕДИНЕНИЕ, надо позаботиться о том, чтобы в остальных запросах участвующих в объединении было одинаковое количество полей.

далее во втором запросе - у вас нет поля ПОЛ. вы просто пишете NULL. вы СВОИХ по М и Ж считать не будете?

в третьем запросе - как вы думаете, он вообще у вас отработает?
---
Спасибо! Да, теперь получается. Осталось разобраться с группировками, чтобы выводилось понятно. Получается вот такая картина. Я все правильно сделала? Только группировки надо сделать, я пытаюсь настроить через предприятие?
---
ну запрос конечно странно сделан. но уж если использовать то, что есть, то получается подсчет общего количества абитуриентов "ВсегоАбитуриентов" происходит в третьем запросе из объединяемых. Первые два вернут NULL.
Исходя из этого в первом и втором запросе в полях ПолМ и ПолЖ должно быть NULL - тут мы не будем ничего считать,
а конструкции ВЫБРАТЬ надо перенести в третий запрос и поля поставить в группируемые по СУММе.
и будет вам счастье :-)
---
Все вроде получилось, но выводится криво по какому полю мне сгруппировать чтоб в одну строку слить?
---
когда я сумму ставлю пусто выводит...
---
в (9) Stref75 описал в чем проблема.
Вычисляемые поля работают с результатами запроса, а раз из запроса не прилетели ни какие поля по "Пол", вот вы и получаете пустоту.

В запросе нужно получить пол и далее уже в вычисляемом поле можно будет оперировать этими данными.
---
Лучше текст запроса скиньте.
---
Я дорабатываю уже существующий отчет на скд. Вот текст:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
 Иногородние.Ссылка.Специальность КАК Специальность,
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Иногородние.Ссылка) КАК Иногородних,
 NULL КАК Своих,
 NULL КАК ВсегоАбитуриентов,
 ЕСТЬNULL(Иногородние.Город, "др.нас.пункты") КАК Город,
 NULL КАК ТребуетсяОбщежитие,
 Иногородние.Ссылка.Финансирование КАК Финансирование,
 Иногородние.Ссылка.Пол КАК Пол
ИЗ
 Документ.АнкетаАбитуриента.КонтактнаяИнформация КАК Иногородние
  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации.КонтактнаяИнформация КАК ОрганизацииКонтактнаяИнформация
  ПО Иногородние.Город <> ОрганизацииКонтактнаяИнформация.Город
ГДЕ
 ОрганизацииКонтактнаяИнформация.Вид = &Вид
 И ОрганизацииКонтактнаяИнформация.Тип = &Тип
 И Иногородние.Вид = &ВидУАбитуриента
 И ОрганизацииКонтактнаяИнформация.Ссылка = &Организация
 И Иногородние.Ссылка.ПриемнаяКампания = &ПриемнаяКампания

СГРУППИРОВАТЬ ПО
 Иногородние.Ссылка.Специальность,
 ЕСТЬNULL(Иногородние.Город, "др.нас.пункты"),
 Иногородние.Ссылка.Финансирование,
 Иногородние.Ссылка.Пол

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 Свои.Ссылка.Специальность,
 NULL,
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свои.Ссылка),
 NULL,
 ЕСТЬNULL(Свои.Город, "др.нас.пункты"),
 NULL,
 NULL,
 NULL
ИЗ
 Документ.АнкетаАбитуриента.КонтактнаяИнформация КАК Свои
  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации.КонтактнаяИнформация КАК ОрганизацииКонтактнаяИнформация
  ПО Свои.Город = ОрганизацииКонтактнаяИнформация.Город
ГДЕ
 ОрганизацииКонтактнаяИнформация.Тип = &Тип
 И ОрганизацииКонтактнаяИнформация.Вид = &Вид
 И Свои.Вид = &ВидУАбитуриента
 И ОрганизацииКонтактнаяИнформация.Ссылка = &Организация
 И Свои.Ссылка.ПриемнаяКампания = &ПриемнаяКампания

СГРУППИРОВАТЬ ПО
 Свои.Ссылка.Специальность,
 ЕСТЬNULL(Свои.Город, "др.нас.пункты")

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
 АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.Специальность,
 NULL,
 NULL,
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ АнкетаАбитуриентаКонтактнаяИнформация.Ссылка),
 ЕСТЬNULL(АнкетаАбитуриентаКонтактнаяИнформация.Город, "др.нас.пункты"),
 СУММА(ВЫБОР
   КОГДА АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.ТребуетсяОбщежитие
    ТОГДА 1
   ИНАЧЕ 0
  КОНЕЦ),
 NULL,
 NULL
ИЗ
 Документ.АнкетаАбитуриента.КонтактнаяИнформация КАК АнкетаАбитуриентаКонтактнаяИнформация
ГДЕ
 АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.Организация = &Организация
 И АнкетаАбитуриентаКонтактнаяИнформация.Вид = &ВидУАбитуриента
 И АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.ПриемнаяКампания = &ПриемнаяКампания

СГРУППИРОВАТЬ ПО
 АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.Специальность,
 ЕСТЬNULL(АнкетаАбитуриентаКонтактнаяИнформация.Город, "др.нас.пункты")
---
NULL КАК Своих - почему NULL

зачем вообще в запросе объединение когда считаете своих и иногородних
т.е. перебор анкет идет дважды, сначала для отбора своих, потом для отбора иногородних.

последний запрос кого считает - ни своих ни иногородних?!
---
Этот запрос создан как типовой разработчиками 1С Колледж. Поэтому не могу сказать зачем. Я его хотела изменить чтоб по полу делил абитуриентов.
---
скрины
---
Может:
 ".. когда значение = Перечисление.ПолФизич...."
---
Когда Пол = Значение(...
Или как там у вас поле называется