Месторасположение: Отчёты → Ассортимент → Отчёт по реализации квартир
Отчёт показывает, как продаются квартиры в выбранных домах. Квартиры сгруппированы по типу и площади. По каждой группе видно, сколько квартир всего, сколько из них продано, в сделке, в брони и свободно. Также показаны средние цены и суммы. Отдельные столбцы показывают, по каким программам покупки оформлены сделки. Отчёт помогает оценить темп продаж и остаток квартир по домам.
#Работа с отчётом
#Фильтры
Чтобы сформировать отчёт, выберите дом и нажмите Сформировать. Чтобы сбросить фильтры, нажмите Сбросить фильтр.
- Дом — дома, по которым строится отчёт. Можно выбрать несколько. Фильтр обязательный: без него отчёт не сформируется. В списке — дома компании и дома партнёров, к которым открыт доступ. Архивных домов в списке нет.
- Город — город, в котором находится дом. Можно выбрать несколько. В списке — рабочие города из настроек компании. Список домов от выбранного города не зависит. Если выбранный дом находится в другом городе, он не попадёт в отчёт.
- Дата проведения сделки (с — по) — период по дате сделки. Название фильтра — это выпадающий список, в котором выбирается тип даты:
- Дата начала сделки — выбрана по умолчанию;
- Дата ДДУ;
- Дата сдачи в росреестр;
- Дата регистрации;
- Дата проведения сделки.
Можно заполнить только одну границу периода. Если даты не заполнены, отчёт показывает текущее состояние. На какие столбцы влияет период, описано в разделе «Структура отчёта».
#Опции
В поле Опции можно включить одну или несколько опций:
-
Учитывать неактив как проданные — квартиры в статусе Неактив учитываются в столбце «Сделок проведено».
-
Учитывать маркетинговые резервы/сделки как брони/сделки — маркетинговые статусы учитываются вместе с обычными:
- Маркетинговый резерв — в столбце «Бронь»;
- Сделка в работе* — в столбце «Сделок в работе»;
- Маркетинговая сделка — в столбце «Сделок проведено».
Стоимость маркетинговых сделок по прайсу добавляется к столбцу «Сумма проведённых сделок».
-
Учитывать сделки в работе как свободные — квартиры в статусе Сделка в работе учитываются в столбце «Свободно», а не в «Сделок в работе».
-
Учитывать брони как свободные — квартиры в статусе Бронь учитываются в столбце «Свободно», а не в «Бронь».
-
Учитывать студии отдельно — дополнительно разделяет квартиры по типу планировки: классическая (например, 1К, 2К), студия (1С) и европланировка (1Е, 2Е) учитываются отдельными строками. Остальные условия группировки сохраняются. Квартира с комнатностью 2+ и типом планировки «Студия» попадут в отчёт как 2Е, 3Е и т.п.
-
Группировать по кол-ву комнат — строки формируются только по типу квартиры, без разбивки по площади.
-
Использовать классы в качестве типов квартир — в столбце «Тип квартиры» выводится класс квартиры из карточки объекта. Если класс не указан, выводится обычный тип. При этой опции «Группировать по кол-ву комнат» не действует.

Опции, которые переносят квартиры в «Свободно», меняют и столбцы, которые от него зависят: «Свободно с учётом брони», «Средн. прайс» и «Сумма свободных».
Чтобы выгрузить отчёт в Excel, нажмите → XLS. В файл попадает та же таблица, что на экране, вместе с итоговыми строками.
#Структура отчёта

Строки сгруппированы по домам. В заголовке группы — название дома и срок сдачи. По клику на название дома открывается его карточка. Каждая строка внутри дома — квартиры одного типа и одной площади.
(1) Тип квартиры — количество комнат и буква:
- К — обычная квартира, например «2К»;
- С — студия, например «1С»;
- Е — квартира с признаком студии и двумя или более комнатами, например «2Е».
С опцией классов здесь выводится класс квартиры.
(2) S, м² — общая площадь квартиры из карточки объекта.
(3) Кол-во, шт. — все квартиры группы в любом статусе.
(4) Сделок проведено, шт. — квартиры в статусе Сделка проведена.
(5) Сделок в работе, шт. — квартиры в статусе Сделка в работе.
(6) Свободно с учётом брони, шт. — сумма столбцов «Бронь» и «Свободно».
(7) Бронь, шт. — квартиры в статусе Бронь.
(8) Свободно, шт. — квартиры в статусе Подбор.
(9) М. резерв, шт. — квартиры в статусе Маркетинговый резерв.
(10) М. сделка, шт. — квартиры в статусах Сделка в работе* и Маркетинговая сделка.
(11) Средн. прайс, ₽/м² — средняя цена за м² из карточек свободных квартир (столбец «Свободно»), округлённая до рубля.
(12) Средн. по договору проведённых сделок, ₽/м² — средняя цена за м² по договору. Для каждой проведённой сделки сумма договора делится на площадь по договору, затем по группе считается среднее.
(13) Сумма свободных, ₽ — сумма прайсовых цен свободных квартир. Квартиры в брони сюда не входят, если не включена опция «Учитывать брони как свободные».
(14) Сумма М. резервов, ₽ — сумма прайсовых цен квартир в статусе Маркетинговый резерв.
(15) Сумма М. сделок, ₽ — сумма прайсовых цен квартир в маркетинговых сделках. Берётся прайс, а не сумма договора.
(16) Сумма проведённых сделок, ₽ — сумма договоров по проведённым сделкам.
(17) Прогр. «…» — по столбцу на каждую программу покупки компании. В ячейке — количество квартир, у которых в сделке выбрана эта программа. Учитываются квартиры в статусах Сделка в работе и Сделка проведена. Столбцы выводятся для всех программ, даже если сделок по ним нет.
Как период влияет на столбцы
- Учитывают период: «Сделок проведено», «Сделок в работе», «М. сделка», «Средн. по договору проведённых сделок», «Сумма проведённых сделок» и столбцы программ. В них попадают только квартиры, у которых выбранная дата сделки входит в период. Квартиры с пустой датой не учитываются.
- Всегда показывают текущее состояние: «Кол-во», «Свободно с учётом брони», «Бронь», «Свободно», «М. резерв», «Средн. прайс», «Сумма свободных» и «Сумма М. резервов».
Поэтому при заданном периоде сумма столбцов со статусами может не совпадать с «Кол-во». Расхождение бывает и без периода: «Кол-во» включает квартиры в статусах, которых нет в отдельных столбцах, например В архиве. Об этом же напоминает подсказка справа от фильтров.
Итоговые строки. После каждого дома выводятся три строки:
- Итого — количество квартир и суммы по столбцам;
- Итого S — суммарная площадь квартир, учтённых в каждом столбце;
- Итого % — доля от столбца «Кол-во».
В конце отчёта выводятся такие же три строки по всем объектам. Средние цены в итоговых строках не рассчитываются.
#Технический паспорт отчёта
#Условия попадания в отчёт
Квартира (estate_sells) попадает в отчёт, если выполнены все условия:
- категория объекта — квартира:
estate_sells.estate_sell_category = 'flat'; - объект выставлен на продажу:
estate_sells.activity = 'sell'; - объект не удалён:
estate_sells.estate_sell_status > 0. Архивные квартиры (статус 1) попадают в отчёт; - дом (
estate_sells.house_id→estate_houses.house_id) не удалён и не в архиве:estate_houses.status > 0иestate_houses.status <> 1; - дом входит в фильтр «Дом» и принадлежит компании или открыт ей через партнёрский доступ. Данные о партнёрском доступе не выгружаются в MacroData, поэтому запросы ниже строятся только по домам компании.
Фильтр «Город» сравнивается с городом дома — estate_houses.geo_city_name.
Сделка квартиры — текущая сделка объекта: estate_sells.deal_id → estate_deals.deal_id.
Коды статусов объекта (справочник estate_statuses):
| Код | Статус | Столбец по умолчанию | С опцией |
|---|---|---|---|
| 20 | Подбор | (8) Свободно | — |
| 30 | Бронь | (7) Бронь | «Брони как свободные» → (8) |
| 32 | Маркетинговый резерв | (9) М. резерв | «Маркетинговые…» → (7) |
| 50 | Сделка в работе | (5) Сделок в работе | «Сделки в работе как свободные» → (8) |
| 53 | Сделка в работе* | (10) М. сделка | «Маркетинговые…» → (5) |
| 52 | Маркетинговая сделка | (10) М. сделка | «Маркетинговые…» → (4) |
| 100 | Сделка проведена | (4) Сделок проведено | — |
| 3 | Нецелевой | только (3) Кол-во | «Неактив как проданные» → (4) |
Поля дат для фильтра по периоду:
| Тип даты | Поле |
|---|---|
| Дата начала сделки | estate_deals.deal_date_start |
| Дата ДДУ | estate_deals.agreement_date |
| Дата сдачи в росреестр | estate_deals.justice_date_send |
| Дата регистрации | estate_deals.justice_date |
| Дата проведения сделки | estate_deals.deal_date |
Ключ строки:
- по умолчанию — дом + тип квартиры + площадь;
- с опцией «Группировать по кол-ву комнат» — дом + тип квартиры;
- с опцией «Учитывать студии отдельно» к ключу добавляется признак студии
estate_sells.estate_studia.
#Данные в системе
Дом — заголовок группы
| Элемент | Поле | Логика |
|---|---|---|
| Название дома | estate_houses.name | — |
| Срок сдачи | estate_houses.inServiceDate | — |
| Город (фильтр) | estate_houses.geo_city_name | — |
SELECT
h.house_id AS `ID дома`,
h.name AS `Дом`,
FROM_UNIXTIME(h.inServiceDate, '%d.%m.%Y') AS `Срок сдачи`,
h.geo_city_name AS `Город`
FROM estate_houses h
WHERE h.status > 0
AND h.status <> 1;
Квартира — текущее состояние: (1) Тип квартиры, (2) S, м², (3) Кол-во, (6) Свободно с учётом брони, (7) Бронь, (8) Свободно, (9) М. резерв, (13) Сумма свободных, (14) Сумма М. резервов, (15) Сумма М. сделок
| Столбец | Поле | Логика |
|---|---|---|
| (1) Тип квартиры | estate_sells.estate_rooms, estate_sells.estate_studia | «NК» — обычная квартира. При признаке студии и одной комнате — «1С», при двух и более комнатах — «NЕ». С опцией классов — estate_sells.flatClass, если он заполнен. |
| (2) S, м² | estate_sells.estate_area | Общая площадь, округление до 0,01. |
| (3) Кол-во | estate_sells.estate_sell_id | Все квартиры группы в любом статусе. |
| (7), (8), (9) | estate_sells.estate_sell_status | Коды — в таблице статусов. |
| (13), (14), (15) | estate_sells.estate_price | Прайсовая цена из карточки объекта, скидки и спецпредложения не учитываются. |
SELECT
h.name AS `Дом`,
CASE
WHEN s.estate_studia = 1 AND IFNULL(s.estate_rooms, 0) <= 1 THEN '1С'
WHEN s.estate_studia = 1 THEN CONCAT(s.estate_rooms, 'Е')
ELSE CONCAT(IFNULL(s.estate_rooms, 0), 'К')
END AS `Тип квартиры`,
ROUND(s.estate_area, 2) AS `S, м²`,
COUNT(s.estate_sell_id) AS `Кол-во, шт.`,
SUM(s.estate_sell_status IN (20, 30)) AS `Свободно с учётом брони, шт.`,
SUM(s.estate_sell_status = 30) AS `Бронь, шт.`,
SUM(s.estate_sell_status = 20) AS `Свободно, шт.`,
SUM(s.estate_sell_status = 32) AS `М. резерв, шт.`,
SUM(CASE WHEN s.estate_sell_status = 20
THEN s.estate_price ELSE 0 END) AS `Сумма свободных, ₽`,
SUM(CASE WHEN s.estate_sell_status = 32
THEN s.estate_price ELSE 0 END) AS `Сумма М. резервов, ₽`,
SUM(CASE WHEN s.estate_sell_status IN (52, 53)
THEN s.estate_price ELSE 0 END) AS `Сумма М. сделок, ₽`
FROM estate_sells s
INNER JOIN estate_houses h ON h.house_id = s.house_id
WHERE s.estate_sell_category = 'flat'
AND s.activity = 'sell'
AND s.estate_sell_status > 0
AND h.status > 0
AND h.status <> 1
GROUP BY h.house_id, h.name, `Тип квартиры`, `S, м²`
ORDER BY h.name, `Тип квартиры`, `S, м²`;
С опцией «Использовать классы в качестве типов квартир» используйте этот запрос вместо предыдущего:
SELECT
h.name AS `Дом`,
IF(s.flatClass IS NULL OR s.flatClass = '',
CASE
WHEN s.estate_studia = 1 AND IFNULL(s.estate_rooms, 0) <= 1 THEN '1С'
WHEN s.estate_studia = 1 THEN CONCAT(s.estate_rooms, 'Е')
ELSE CONCAT(IFNULL(s.estate_rooms, 0), 'К')
END,
s.flatClass) AS `Тип квартиры`,
ROUND(s.estate_area, 2) AS `S, м²`,
COUNT(s.estate_sell_id) AS `Кол-во, шт.`,
SUM(s.estate_sell_status IN (20, 30)) AS `Свободно с учётом брони, шт.`,
SUM(s.estate_sell_status = 30) AS `Бронь, шт.`,
SUM(s.estate_sell_status = 20) AS `Свободно, шт.`,
SUM(s.estate_sell_status = 32) AS `М. резерв, шт.`,
SUM(CASE WHEN s.estate_sell_status = 20
THEN s.estate_price ELSE 0 END) AS `Сумма свободных, ₽`,
SUM(CASE WHEN s.estate_sell_status = 32
THEN s.estate_price ELSE 0 END) AS `Сумма М. резервов, ₽`,
SUM(CASE WHEN s.estate_sell_status IN (52, 53)
THEN s.estate_price ELSE 0 END) AS `Сумма М. сделок, ₽`
FROM estate_sells s
INNER JOIN estate_houses h ON h.house_id = s.house_id
WHERE s.estate_sell_category = 'flat'
AND s.activity = 'sell'
AND s.estate_sell_status > 0
AND h.status > 0
AND h.status <> 1
GROUP BY h.house_id, h.name, `Тип квартиры`, `S, м²`
ORDER BY h.name, `Тип квартиры`, `S, м²`;
Сделка — столбцы с учётом периода: (4) Сделок проведено, (5) Сделок в работе, (10) М. сделка, (16) Сумма проведённых сделок
| Столбец | Поле | Логика |
|---|---|---|
| (4) Сделок проведено | estate_sells.estate_sell_status | Код 100. |
| (5) Сделок в работе | estate_sells.estate_sell_status | Код 50. |
| (10) М. сделка | estate_sells.estate_sell_status | Коды 52 и 53. |
| (16) Сумма проведённых сделок | estate_deals.deal_sum | Сумма договора по квартирам со статусом 100. |
| Период | поле даты из таблицы дат | Квартира учитывается, если дата её текущей сделки входит в период. Квартиры с пустой датой не учитываются. |
SELECT
h.name AS `Дом`,
CASE
WHEN s.estate_studia = 1 AND IFNULL(s.estate_rooms, 0) <= 1 THEN '1С'
WHEN s.estate_studia = 1 THEN CONCAT(s.estate_rooms, 'Е')
ELSE CONCAT(IFNULL(s.estate_rooms, 0), 'К')
END AS `Тип квартиры`,
ROUND(s.estate_area, 2) AS `S, м²`,
SUM(s.estate_sell_status = 100) AS `Сделок проведено, шт.`,
SUM(s.estate_sell_status = 50) AS `Сделок в работе, шт.`,
SUM(s.estate_sell_status IN (52, 53)) AS `М. сделка, шт.`,
SUM(CASE WHEN s.estate_sell_status = 100
THEN d.deal_sum ELSE 0 END) AS `Сумма проведённых сделок, ₽`
FROM estate_sells s
INNER JOIN estate_houses h ON h.house_id = s.house_id
INNER JOIN estate_deals d ON d.deal_id = s.deal_id
WHERE s.estate_sell_category = 'flat'
AND s.activity = 'sell'
AND s.estate_sell_status IN (50, 52, 53, 100)
AND h.status > 0
AND h.status <> 1
AND d.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
GROUP BY h.house_id, h.name, `Тип квартиры`, `S, м²`
ORDER BY h.name, `Тип квартиры`, `S, м²`;
Программы покупки — (17) Прогр. «…»
| Столбец | Поле | Логика |
|---|---|---|
| (17) Прогр. «…» | estate_deals.deal_program_name | Количество квартир со статусами 50 и 100, у которых в текущей сделке выбрана программа. Учитывается период. |
SELECT
h.name AS `Дом`,
CASE
WHEN s.estate_studia = 1 AND IFNULL(s.estate_rooms, 0) <= 1 THEN '1С'
WHEN s.estate_studia = 1 THEN CONCAT(s.estate_rooms, 'Е')
ELSE CONCAT(IFNULL(s.estate_rooms, 0), 'К')
END AS `Тип квартиры`,
ROUND(s.estate_area, 2) AS `S, м²`,
d.deal_program_name AS `Программа покупки`,
COUNT(s.estate_sell_id) AS `Квартир, шт.`
FROM estate_sells s
INNER JOIN estate_houses h ON h.house_id = s.house_id
INNER JOIN estate_deals d ON d.deal_id = s.deal_id
WHERE s.estate_sell_category = 'flat'
AND s.activity = 'sell'
AND s.estate_sell_status IN (50, 100)
AND h.status > 0
AND h.status <> 1
AND d.deal_program_name IS NOT NULL
AND d.deal_program_name <> ''
AND d.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
GROUP BY h.house_id, h.name, `Тип квартиры`, `S, м²`, d.deal_program_name
ORDER BY h.name, `Тип квартиры`, `S, м²`, d.deal_program_name;
#Расчётные данные
- (6) Свободно с учётом брони = (7) Бронь + (8) Свободно.
- (11) Средн. прайс, ₽/м² =
ROUND(AVG(estate_sells.estate_price_m2))по квартирам столбца (8). Это простое среднее: квартиры с разной площадью весят одинаково. - (12) Средн. по договору проведённых сделок, ₽/м² =
AVG(estate_deals.deal_sum / estate_deals.deal_area)по квартирам столбца (4) с учётом периода. Это тоже простое среднее по сделкам. - Итого — суммы количества и сумм по квартирам дома или всего отчёта. Средние цены не рассчитываются.
- Итого S — сумма
estate_sells.estate_areaпо квартирам, учтённым в столбце. - Итого % = значение столбца в строке «Итого» / «Кол-во» в строке «Итого» × 100.
Средние цены по группам:
SELECT
h.name AS `Дом`,
CASE
WHEN s.estate_studia = 1 AND IFNULL(s.estate_rooms, 0) <= 1 THEN '1С'
WHEN s.estate_studia = 1 THEN CONCAT(s.estate_rooms, 'Е')
ELSE CONCAT(IFNULL(s.estate_rooms, 0), 'К')
END AS `Тип квартиры`,
ROUND(s.estate_area, 2) AS `S, м²`,
ROUND(AVG(CASE WHEN s.estate_sell_status = 20
THEN s.estate_price_m2 END)) AS `Средн. прайс, ₽/м²`,
ROUND(AVG(CASE WHEN s.estate_sell_status = 100
AND d.deal_area > 0
AND d.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
THEN d.deal_sum / d.deal_area END)) AS `Средн. по договору проведённых сделок, ₽/м²`
FROM estate_sells s
INNER JOIN estate_houses h ON h.house_id = s.house_id
LEFT JOIN estate_deals d ON d.deal_id = s.deal_id
WHERE s.estate_sell_category = 'flat'
AND s.activity = 'sell'
AND s.estate_sell_status > 0
AND h.status > 0
AND h.status <> 1
GROUP BY h.house_id, h.name, `Тип квартиры`, `S, м²`;
Итого S и Итого % по дому (пример для столбцов текущего состояния):
SELECT
h.name AS `Дом`,
COUNT(s.estate_sell_id) AS `Кол-во, шт.`,
SUM(s.estate_area) AS `Итого S: Кол-во, м²`,
SUM(CASE WHEN s.estate_sell_status = 30
THEN s.estate_area ELSE 0 END) AS `Итого S: Бронь, м²`,
SUM(CASE WHEN s.estate_sell_status = 20
THEN s.estate_area ELSE 0 END) AS `Итого S: Свободно, м²`,
SUM(s.estate_sell_status = 30) * 100
/ COUNT(s.estate_sell_id) AS `Итого %: Бронь`,
SUM(s.estate_sell_status = 20) * 100
/ COUNT(s.estate_sell_id) AS `Итого %: Свободно`
FROM estate_sells s
INNER JOIN estate_houses h ON h.house_id = s.house_id
WHERE s.estate_sell_category = 'flat'
AND s.activity = 'sell'
AND s.estate_sell_status > 0
AND h.status > 0
AND h.status <> 1
GROUP BY h.house_id, h.name WITH ROLLUP;
Строка с пустым домом — итоги по всем объектам.