Spaces:
Configuration error
Configuration error
|
Download Project_documentation.md from Eremenko/mcp-tech-spec: direct link, hf CLI and curl.
- Browser
- Download file 64.9 kB
-
https://huggingface.co/spaces/Eremenko/mcp-tech-spec/resolve/main/Project_documentation.md
- Command line
-
hf download hf://spaces/Eremenko/mcp-tech-spec/Project_documentation.md
-
curl -L -o Project_documentation.md https://huggingface.co/spaces/Eremenko/mcp-tech-spec/resolve/main/Project_documentation.md
64.9 kB
# Продажи
## Мера "Кол-во"
### 1. Общая информация
**Название меры:** Кол-во
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Кол-во" предназначена для подсчета общего количества товаров/услуг в заказах клиентов с учетом определенных фильтров. Данная мера является базовой и используется для расчета других производных показателей в аналитических отчетах.
### 3. Исходные данные
**Основная таблица:** М001 Заказы Клиентов
**Основное поле:** [Количество]
**Дополнительные поля для фильтрации:**
- [ВГО булево] - булево поле для исключения ВГО (внутригрупповые операции)
- [Отмененный] - булево поле для исключения отмененных заказов
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
CALCULATE (
SUM ( 'М001 Заказы Клиентов'[Количество] ),
NOT 'М001 Заказы Клиентов'[ВГО булево],
NOT ( 'М001 Заказы Клиентов'[Отмененный] )
)
```
#### 4.2. Описание логики
1. **Основная агрегация:** Суммирование значений поля [Количество] из таблицы 'М001 Заказы Клиентов'
2. **Фильтрация по ВГО:** Исключение записей, где [ВГО булево] = TRUE
3. **Фильтрация по статусу:** Исключение отмененных заказов, где [Отмененный] = TRUE
4. **Контекстная фильтрация:** Мера автоматически применяет фильтры из срезов и других измерений
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Штуки/единицы товара
#### 5.2. Примеры использования
1. **Общее количество товаров в заказах** - без дополнительных фильтров
2. **Количество по клиентам** - с фильтром по конкретному клиенту
3. **Количество по периодам** - с фильтром по дате заказа
4. **Количество по товарным группам** - с фильтром по категории товара
### 6. Зависимости
#### 6.1. Таблицы
- **М001 Заказы Клиентов** - основная таблица фактов
- Связанные справочные таблицы через внешние ключи
#### 6.2. Поля
- **[Количество]** - основное поле для агрегации
- **[ВГО булево]** - поле для фильтрации
- **[Отмененный]** - поле для фильтрации
#### 6.3. Связанные меры
Мера может использоваться в качестве основы для:
- Производных мер (проценты, коэффициенты)
- Расчетных полей
- Других агрегированных показателей
#### 6.4. Поток данных
1. **OLAP мера:** `[Кол-во]` в кубе OLAP.
2. **Представление DWH:** Данные для меры поступают из представления `[uni].[vt_order]`.
3. **Таблицы фактов DWH:** Представление `[uni].[vt_order]` агрегирует данные из следующих таблиц:
* `[dbo].[fact_order]`
* `[dbo].[fact_cancelled_order]`
* `[dbo].[fact_order_characteristics_received]`
4. **Хранимые процедуры:** Эти таблицы фактов загружаются и обрабатываются следующими хранимыми процедурами:
* `[dbo].[sp_load_fact_order]`
* `[dbo].[sp_load_fact_cancelled_order]`
* `[dbo].[sp_load_fact_order_characteristics_received]`
##### ``[dbo].[sp_load_fact_order]``
**Назначение:** Процедура формирует основной набор данных для анализа продаж.
**Источники и логика:**
* **Основные данные:** Берутся из документа **"Заказ клиента"** из системы 1С. Для каждой товарной позиции в заказе извлекается информация о количестве, цене, сумме, предоставленных скидках и ставке НДС.
* **Обогащение данных:** Информация о заказе дополняется сведениями из связанных справочников 1С:
* **Клиент и партнер:** Кто является покупателем.
* **Менеджер:** Кто ответственный за заказ.
* **Номенклатура:** Какой товар заказан.
* **Организация:** От лица какой нашей организации оформлен заказ.
* **Склад, подразделение, сезон:** Дополнительные аналитические разрезы.
* **Финансовые показатели:** Процедура также рассчитывает состояние оплаты по заказу, обращаясь к регистру **"Расчеты с клиентами"**, и определяет наличие просроченной задолженности.
**Бизнес-ценность:** Позволяет получить полную и обогащенную картину по каждому заказу для построения отчетов по продажам, маржинальности и эффективности работы менеджеров.
##### `[dbo].[sp_load_fact_cancelled_order]`
**Назначение:** Процедура собирает данные по отмененным позициям в заказах клиентов.
**Источники и логика:**
* **Основные данные:** Как и в предыдущей процедуре, источником является документ **"Заказ клиента"** из 1С. Ключевое отличие — отбираются только те строки товаров, у которых установлен признак **"Отменено"**.
* **Дата отмены:** Для понимания, когда именно произошла отмена, процедура обращается к регистру **"История изменений заказа клиента"**.
* **Контекст заказа:** Вся остальная информация (клиент, менеджер, суммы, скидки) подтягивается аналогично процедуре загрузки основных заказов, чтобы сохранить полный контекст на момент отмены.
**Бизнес-ценность:** Дает возможность анализировать объем и причины отмен, оценивать упущенную выручку и выявлять тенденции, связанные с отказами от товаров.
##### `[dbo].[sp_load_fact_order_characteristics_received]`
**Назначение:** Процедура отслеживает поступление товаров по заказам, у которых в процессе обработки менялись характеристики (например, цвет, размер).
**Источники и логика:**
* **Основные данные:** Процедура отталкивается от данных, где зафиксированы факты **поступления** товаров по заказам, в которых были изменения (`fact_order_characteristics_changes`).
* **Связь с заказом:** Используя номер заказа, процедура обращается к исходному документу **"Заказ клиента"** в 1С, чтобы получить полную информацию о клиенте, менеджере, дате и других атрибутах заказа.
* **Фильтр:** Отбираются только те записи, которые отражают фактическое поступление товара (`quantity_received > 0`), а не просто резервирование.
**Бизнес-ценность:** Позволяет контролировать и анализировать исполнение "сложных" заказов, где характеристики товара были изменены. Это помогает понять, как такие изменения влияют на сроки и полноту выполнения заказа.
---
## Мера "Кол-во реальное"
### 1. Общая информация
**Название меры:** Кол-во реальное
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Кол-во реальное" предназначена для расчета количества товаров в заказах, имеющих статус "Реальный". Этот статус означает, что заказ подтвержден и находится в процессе выполнения. Мера позволяет отделить фактические, подтвержденные продажи от предварительных или отмененных заказов.
### 3. Исходные данные
**Основная мера:** [Кол-во]
**Таблица для фильтрации:** '010 Документы заказов'
**Поле для фильтрации:** [Статус заказа]
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
CALCULATE (
[Кол-во],
KEEPFILTERS ( '010 Документы заказов'[Статус заказа] = "Реальный" )
)
```
#### 4.2. Описание логики
1. **Базовый расчет:** Мера использует в качестве основы уже существующую меру `[Кол-во]`, которая агрегирует общее количество товаров.
2. **Фильтрация по статусу:** На результат меры `[Кол-во]` накладывается фильтр по полю `[Статус заказа]` из таблицы `'010 Документы заказов'`.
3. **Условие фильтрации:** Учитываются только те строки, где значение статуса заказа строго равно "Реальный".
4. **Сохранение контекста:** Функция `KEEPFILTERS` используется для того, чтобы новый фильтр не перезаписывал существующие фильтры, а применялся в дополнение к ним.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Штуки/единицы товара
#### 5.2. Примеры использования
1. **Объем реальных продаж** - для оценки подтвержденных обязательств.
2. **Сравнение реального и общего количества** - для анализа воронки продаж и доли подтвержденных заказов.
3. **Динамика реальных заказов** - для отслеживания роста или падения фактических продаж по периодам.
### 6. Зависимости
#### 6.1. Таблицы
- **'М001 Заказы Клиентов'** - как источник данных для базовой меры `[Кол-во]`.
- **'010 Документы заказов'** - для применения фильтра по статусу.
#### 6.2. Поля
- **'М001 Заказы Клиентов'[Количество]** - основное поле для агрегации в мере `[Кол-во]`.
- **'010 Документы заказов'[Статус заказа]** - поле для фильтрации.
#### 6.3. Связанные меры
- **[Кол-во]** - является основой для расчета данной меры.
#### 6.4. Поток данных
Поток данных для этой меры идентичен потоку для меры `[Кол-во]`, но с дополнительным шагом фильтрации на уровне OLAP.
1. **OLAP мера:** `[Кол-во реальное]` в кубе OLAP.
2. **Представления DWH:** Данные поступают из представлений `[uni].[vt_order]` (для количества) и `[uni].[vt_order_attributes]` (для статуса заказа).
3. **Таблицы фактов и измерений DWH:**
* Представление `[uni].[vt_order]` агрегирует данные из таблиц `[dbo].[fact_order]`, `[dbo].[fact_cancelled_order]`, `[dbo].[fact_order_characteristics_received]`.
* Представление `[uni].[vt_order_attributes]` основано на таблице `[dbo].[dim_order_attributes]`.
4. **Хранимые процедуры:** Эти таблицы загружаются и обрабатываются следующими хранимыми процедурами:
* `[dbo].[sp_load_fact_order]`
* `[dbo].[sp_load_fact_cancelled_order]`
* `[dbo].[sp_load_fact_order_characteristics_received]`
* `[dbo].[sp_load_dim_order_attributes]`
##### `[dbo].[sp_load_dim_order_attributes]`
**Назначение:** Процедура создает и обновляет справочник атрибутов заказов.
**Источники и логика:**
* **Основные данные:** Источником является документ **"Заказ клиента"** из 1С.
* **Атрибуты:** Процедура извлекает ключевые атрибуты, характеризующие состояние заказа в целом: его номер, дата, статус (например, "К выполнению", "Закрыт"), состояние (например, "Ожидается аванс", "В резерве") и другие флаги, такие как "Проведен" или "Согласовано клиентом".
* **Обновление:** Процедура работает в режиме `MERGE`, что позволяет эффективно обновлять существующие записи, если статус или состояние заказа изменились в 1С, и добавлять новые, если появились новые заказы.
**Бизнес-ценность:** Позволяет получить срез актуальных статусов и состояний по всем заказам, что является ключевым для фильтрации и анализа в отчетах (например, для меры "Кол-во реальное").
---
## Мера "Сумма (со скидкой)"
### 1. Общая информация
**Название меры:** Сумма (со скидкой)
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Сумма (со скидкой)" предназначена для расчета общей суммы продаж с учетом предоставленных скидок. Данная мера является базовой для анализа выручки и используется для расчета других производных показателей в аналитических отчетах.
### 3. Исходные данные
**Основная таблица:** М001 Заказы Клиентов
**Основное поле:** [Сумма со скидкой]
**Дополнительные поля для фильтрации:**
- [Отмененный] - булево поле для исключения отмененных заказов
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
CALCULATE (
SUM ( 'М001 Заказы Клиентов'[Сумма со скидкой] ),
NOT ( 'М001 Заказы Клиентов'[Отмененный] )
)
```
#### 4.2. Описание логики
1. **Основная агрегация:** Суммирование значений поля [Сумма со скидкой] из таблицы 'М001 Заказы Клиентов'
2. **Фильтрация по статусу:** Исключение отмененных заказов, где [Отмененный] = TRUE
3. **Контекстная фильтрация:** Мера автоматически применяет фильтры из срезов и других измерений
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Валюта (рубли)
#### 5.2. Примеры использования
1. **Общая выручка от продаж** - без дополнительных фильтров
2. **Выручка по клиентам** - с фильтром по конкретному клиенту
3. **Выручка по периодам** - с фильтром по дате заказа
4. **Выручка по товарным группам** - с фильтром по категории товара
### 6. Зависимости
#### 6.1. Таблицы
- **М001 Заказы Клиентов** - основная таблица фактов
- Связанные справочные таблицы через внешние ключи
#### 6.2. Поля
- **[Сумма со скидкой]** - основное поле для агрегации
- **[Отмененный]** - поле для фильтрации
#### 6.3. Связанные меры
Мера может использоваться в качестве основы для:
- Производных мер (проценты, коэффициенты)
- Расчетных полей
- Других агрегированных показателей
#### 6.4. Поток данных
1. **OLAP мера:** `[Сумма (со скидкой)]` в кубе OLAP.
2. **Представление DWH:** Данные для меры поступают из представления `[uni].[vt_order]`.
3. **Таблицы фактов DWH:** Представление `[uni].[vt_order]` агрегирует данные из следующих таблиц:
* `[dbo].[fact_order]`
* `[dbo].[fact_cancelled_order]`
* `[dbo].[fact_order_characteristics_received]`
4. **Хранимые процедуры:** Эти таблицы фактов загружаются и обрабатываются следующими хранимыми процедурами:
* `[dbo].[sp_load_fact_order]`
* `[dbo].[sp_load_fact_cancelled_order]`
* `[dbo].[sp_load_fact_order_characteristics_received]`
##### `[dbo].[sp_load_fact_order]`
**Назначение:** Процедура формирует основной набор данных для анализа продаж.
**Источники и логика:**
* **Основные данные:** Берутся из документа **"Заказ клиента"** из системы 1С. Для каждой товарной позиции в заказе извлекается информация о количестве, цене, сумме, предоставленных скидках и ставке НДС.
* **Обогащение данных:** Информация о заказе дополняется сведениями из связанных справочников 1С:
* **Клиент и партнер:** Кто является покупателем.
* **Менеджер:** Кто ответственный за заказ.
* **Номенклатура:** Какой товар заказан.
* **Организация:** От лица какой нашей организации оформлен заказ.
* **Склад, подразделение, сезон:** Дополнительные аналитические разрезы.
* **Финансовые показатели:** Процедура также рассчитывает состояние оплаты по заказу, обращаясь к регистру **"Расчеты с клиентами"**, и определяет наличие просроченной задолженности.
**Бизнес-ценность:** Позволяет получить полную и обогащенную картину по каждому заказу для построения отчетов по продажам, маржинальности и эффективности работы менеджеров.
##### `[dbo].[sp_load_fact_cancelled_order]`
**Назначение:** Процедура собирает данные по отмененным позициям в заказах клиентов.
**Источники и логика:**
* **Основные данные:** Как и в предыдущей процедуре, источником является документ **"Заказ клиента"** из 1С. Ключевое отличие — отбираются только те строки товаров, у которых установлен признак **"Отменено"**.
* **Дата отмены:** Для понимания, когда именно произошла отмена, процедура обращается к регистру **"История изменений заказа клиента"**.
* **Контекст заказа:** Вся остальная информация (клиент, менеджер, суммы, скидки) подтягивается аналогично процедуре загрузки основных заказов, чтобы сохранить полный контекст на момент отмены.
**Бизнес-ценность:** Дает возможность анализировать объем и причины отмен, оценивать упущенную выручку и выявлять тенденции, связанные с отказами от товаров.
##### `[dbo].[sp_load_fact_order_characteristics_received]`
**Назначение:** Процедура отслеживает поступление товаров по заказам, у которых в процессе обработки менялись характеристики (например, цвет, размер).
**Источники и логика:**
* **Основные данные:** Процедура отталкивается от данных, где зафиксированы факты **поступления** товаров по заказам, в которых были изменения (`fact_order_characteristics_changes`).
* **Связь с заказом:** Используя номер заказа, процедура обращается к исходному документу **"Заказ клиента"** в 1С, чтобы получить полную информацию о клиенте, менеджере, дате и других атрибутах заказа.
* **Фильтр:** Отбираются только те записи, которые отражают фактическое поступление товара (`quantity_received > 0`), а не просто резервирование.
**Бизнес-ценность:** Позволяет контролировать и анализировать исполнение "сложных" заказов, где характеристики товара были изменены. Это помогает понять, как такие изменения влияют на сроки и полноту выполнения заказа.
---
## Мера "Сумма (со скидкой) реальная"
### 1. Общая информация
**Название меры:** Сумма (со скидкой) реальная
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Сумма (со скидкой) реальная" предназначена для расчета суммы продаж с учетом скидок только для заказов, имеющих статус "Реальный". Этот статус означает, что заказ подтвержден и находится в процессе выполнения. Мера позволяет отделить фактические, подтвержденные продажи от предварительных или отмененных заказов.
### 3. Исходные данные
**Основная мера:** [Сумма (со скидкой)]
**Таблица для фильтрации:** 'М001 Заказы Клиентов'
**Поля для фильтрации:**
- [ВГО булево] - для исключения внутригрупповых операций
- [Статус заказа] - для фильтрации по статусу "Реальный"
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
CALCULATE (
[Сумма (со скидкой)],
NOT 'М001 Заказы Клиентов'[ВГО булево],
KEEPFILTERS( 'М001 Заказы Клиентов'[Статус заказа] = "Реальный" )
)
```
#### 4.2. Описание логики
1. **Базовый расчет:** Мера использует в качестве основы уже существующую меру `[Сумма (со скидкой)]`, которая агрегирует общую сумму продаж.
2. **Фильтрация по ВГО:** Исключаются записи, относящиеся к внутригрупповым операциям.
3. **Фильтрация по статусу:** На результат меры `[Сумма (со скидкой)]` накладывается фильтр по полю `[Статус заказа]` из таблицы `'М001 Заказы Клиентов'`.
4. **Условие фильтрации:** Учитываются только те строки, где значение статуса заказа строго равно "Реальный".
5. **Сохранение контекста:** Функция `KEEPFILTERS` используется для того, чтобы новый фильтр не перезаписывал существующие фильтры, а применялся в дополнение к ним.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Валюта (рубли)
#### 5.2. Примеры использования
1. **Объем реальных продаж** - для оценки подтвержденных обязательств.
2. **Сравнение реальной и общей суммы** - для анализа воронки продаж и доли подтвержденных заказов.
3. **Динамика реальных заказов** - для отслеживания роста или падения фактических продаж по периодам.
### 6. Зависимости
#### 6.1. Таблицы
- **'М001 Заказы Клиентов'** - как источник данных для базовой меры `[Сумма (со скидкой)]`.
#### 6.2. Поля
- **'М001 Заказы Клиентов'[Сумма со скидкой]** - основное поле для агрегации в мере `[Сумма (со скидкой)]`.
- **'М001 Заказы Клиентов'[ВГО булево]** - поле для фильтрации.
- **'М001 Заказы Клиентов'[Статус заказа]** - поле для фильтрации.
#### 6.3. Связанные меры
- **[Сумма (со скидкой)]** - является основой для расчета данной меры.
#### 6.4. Поток данных
Поток данных для этой меры идентичен потоку для меры `[Сумма (со скидкой)]`, но с дополнительным шагом фильтрации на уровне OLAP.
1. **OLAP мера:** `[Сумма (со скидкой) реальная]` в кубе OLAP.
2. **Представления DWH:** Данные поступают из представления `[uni].[vt_order]`.
3. **Таблицы фактов DWH:** Представление `[uni].[vt_order]` агрегирует данные из таблиц `[dbo].[fact_order]`, `[dbo].[fact_cancelled_order]`, и `[dbo].[fact_order_characteristics_received]`.
4. **Хранимые процедуры:** Эти таблицы фактов загружаются и обрабатываются следующими хранимыми процедурами:
* `[dbo].[sp_load_fact_order]`
* `[dbo].[sp_load_fact_cancelled_order]`
* `[dbo].[sp_load_fact_order_characteristics_received]`
Подробное описание логики работы хранимых процедур см. в разделе "Поток данных" для меры "Сумма (со скидкой)".
---
## Мера "Сумма контракта (план)"
### 1. Общая информация
**Название меры:** Сумма контракта (план)
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Сумма контракта (план)" предназначена для расчета общей суммы плановых продаж по контрактам. Данная мера используется для планирования, бюджетирования и сравнения плановых показателей с фактическими результатами продаж.
### 3. Исходные данные
**Основная таблица:** М002 Планы Продаж
**Основное поле:** [Сумма контракта]
**Дополнительные поля для фильтрации:**
- [План активен] - булево поле для выбора только активных планов
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
CALCULATE(SUM('М002 Планы Продаж'[Сумма контракта]),
KEEPFILTERS('М002 Планы Продаж'[План активен])
)
```
#### 4.2. Описание логики
1. **Основная агрегация:** Суммирование значений поля [Сумма контракта] из таблицы 'М002 Планы Продаж'.
2. **Фильтрация по активности плана:** Учитываются только те планы, где [План активен] = TRUE.
3. **Сохранение контекста:** Функция `KEEPFILTERS` используется для того, чтобы фильтр по активности плана не перезаписывал существующие фильтры, а применялся в дополнение к ним.
4. **Контекстная фильтрация:** Мера автоматически применяет фильтры из срезов и других измерений.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Валюта (рубли)
#### 5.2. Примеры использования
1. **Общий план продаж** - без дополнительных фильтров
2. **План по клиентам** - с фильтром по конкретному клиенту
3. **План по периодам** - с фильтром по дате плана
4. **План по товарным группам** - с фильтром по категории товара
5. **Сравнение план vs факт** - для анализа выполнения планов
### 6. Зависимости
#### 6.1. Таблицы
- **М002 Планы Продаж** - основная таблица фактов
- Связанные справочные таблицы через внешние ключи
#### 6.2. Поля
- **[Сумма контракта]** - основное поле для агрегации
- **[План активен]** - поле для фильтрации
#### 6.3. Связанные меры
Мера может использоваться в качестве основы для:
- Производных мер (проценты выполнения плана, отклонения)
- Расчетных полей
- Других агрегированных показателей
#### 6.4. Поток данных
1. **OLAP мера:** `[Сумма контракта (план)]` в кубе OLAP.
2. **Представление DWH:** Данные для меры поступают из представления `[uni].[vt_sales_plan]`.
3. **Таблица фактов DWH:** Представление основано на таблице `[dbo].[fact_sales_plan]`.
4. **Хранимая процедура:** Таблица фактов загружается и обрабатывается хранимой процедурой `[dbo].[sp_load_fact_sales_plan]`.
##### `[dbo].[sp_load_fact_sales_plan]`
**Назначение:** Процедура формирует данные о планах продаж для анализа и планирования.
**Источники и логика:**
* **Основные данные:** Берутся из документа **"План продаж"** из системы 1С. Процедура извлекает информацию о плановых показателях продаж по контрактам.
* **Обогащение данных:** Информация о плане дополняется сведениями из связанных справочников 1С:
* **Партнер:** Кто является плановым покупателем.
* **Менеджер:** Кто ответственный за план.
* **Номенклатура:** Какой товар планируется к продаже.
* **Подразделение:** Какое подразделение отвечает за план.
* **Сезон:** В рамках какого сезона действует план.
* **Финансовые показатели:** Процедура рассчитывает плановые суммы контрактов, наценки и прибыли.
* **Обработка корректировок:** Процедура учитывает корректировочные планы и определяет актуальные версии планов.
**Бизнес-ценность:** Позволяет получить полную картину плановых показателей для построения отчетов по планированию, бюджетированию и анализу выполнения планов продаж.
---
# Закупки
## Мера "Свободный остаток"
### 1. Общая информация
**Название меры:** Свободный остаток
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Свободный остаток" предназначена для расчета общего количества товаров, которые физически находятся на складах и не зарезервированы под какие-либо заказы или внутренние нужды. Этот показатель отражает реальное количество товара, доступное для продажи.
### 3. Исходные данные
**Основная мера:** [Кол-во остатки]
**Таблица для фильтрации:** 'М007 Остатки товаров'
**Поле для фильтрации:** [Тип остатков признак]
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
VAR _res =
CALCULATE (
[Кол-во остатки],
KEEPFILTERS ( 'М007 Остатки товаров'[Тип остатков признак] = 1 )
)
RETURN
_res
```
#### 4.2. Описание логики
1. **Базовый расчет:** Мера использует в качестве основы меру `[Кол-во остатки]`, которая агрегирует общее количество товаров на остатках.
2. **Фильтрация по типу остатка:** На результат накладывается фильтр по полю `[Тип остатков признак]`. Учитываются только те строки, где значение этого признака равно 1, что соответствует "Свободным остаткам".
3. **Сохранение контекста:** Функция `KEEPFILTERS` используется для того, чтобы новый фильтр не перезаписывал существующие фильтры, а применялся в дополнение к ним.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Штуки/единицы товара
### 6. Зависимости
#### 6.1. Поток данных
Поток данных для этой меры, а также для мер "Резерв под внутренние перемещения" и "Резерв по заказам", является общим, так как все они основаны на одной и той же таблице фактов.
1. **OLAP мера:** `[Свободный остаток]` в кубе OLAP, папка 'М007 Остатки товаров'.
2. **Представление DWH:** Данные для таблицы фактов поступают из представления `[uni].[vf_inventory_stock]`.
3. **Таблица фактов DWH:** Представление основано на таблице `[dbo].[fact_inventory_stock]`.
4. **Хранимая процедура:** Таблица фактов загружается и обрабатывается хранимой процедурой `[dbo].[sp_load_fact_inventory_stock]`.
##### `[dbo].[sp_load_fact_inventory_stock]`
**Назначение:** Процедура формирует комплексную таблицу с данными о состоянии товарных остатков, включая свободные остатки, резервы, товары в пути и прочие потребности.
**Источники и логика:**
Процедура собирает данные из нескольких регистров 1С для получения полной картины по остаткам:
* **Свободные остатки (Тип 1):** Основные данные о физических остатках на складах берутся из регистра `РегистрНакопления_СвободныеОстатки`.
* **Товары в пути (Тип 2):** Данные о товарах, которые перемещаются между складами и еще не оприходованы на склад-получатель, извлекаются из `РегистрНакопления_ТоварыНаСкладах` со статусом "Отгружено".
* **Резервы (Тип 3 и 4):** Информация о резервах рассчитывается на основе данных о заказах клиентов из регистров `РегистрНакопления_ЗаказыКлиентов` и `РегистрСведений_ЗаказыКлиентовНаСогласовании`. Процедура анализирует статусы заказов и варианты обеспечения для разделения резервов на:
* **Резерв под внутренние перемещения (Тип 3):** Резервы для обеспечения потребностей собственных подразделений.
* **Резерв по заказам (Тип 4):** Резервы под конкретные заказы клиентов.
* **Прочие потребности (Типы 5, 6, 7):** Процедура также учитывает более сложные случаи, такие как обеспечение заказов, не полностью отгруженные перемещения и прочие потребности, которые не попадают под стандартные резервы.
* **Расчет цен:** Процедура производит сложный расчет различных видов цен для каждой позиции (базовые, акционные, с разными условиями кредита), используя данные из регистров цен.
**Бизнес-ценность:** Процедура создает единый источник правды для анализа всех аспектов товарных остатков, что позволяет бизнесу точно оценивать доступность товаров, планировать закупки и управлять резервами.
---
## Мера "Резерв под внутренние перемещения"
### 1. Общая информация
**Название меры:** Резерв под внутренние перемещения
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера предназначена для расчета общего количества товаров, зарезервированных для внутренних нужд компании, таких как перемещение между складами или обеспечение потребностей собственных подразделений.
### 3. Исходные данные
**Основная мера:** [Кол-во остатки]
**Таблица для фильтрации:** 'М007 Остатки товаров'
**Поле для фильтрации:** [Тип остатков признак]
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
VAR _res =
CALCULATE (
[Кол-во остатки],
KEEPFILTERS ( 'М007 Остатки товаров'[Тип остатков признак] = 3 )
)
RETURN
_res
```
#### 4.2. Описание логики
1. **Базовый расчет:** Мера использует в качестве основы меру `[Кол-во остатки]`.
2. **Фильтрация по типу остатка:** Учитываются только строки, где `[Тип остатков признак]` равен 3, что соответствует резервам под внутренние перемещения.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
### 6. Зависимости
#### 6.1. Поток данных
Поток данных для этой меры идентичен потоку для меры `[Свободный остаток]`. См. описание в соответствующем разделе.
---
## Мера "Резерв по заказам"
### 1. Общая информация
**Название меры:** Резерв по заказам
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера предназначена для расчета общего количества товаров, зарезервированных под конкретные заказы клиентов. Этот показатель помогает понять, какая часть остатков уже обещана покупателям.
### 3. Исходные данные
**Основная мера:** [Кол-во остатки]
**Таблица для фильтрации:** 'М007 Остатки товаров'
**Поле для фильтрации:** [Тип остатков признак]
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
VAR _res =
CALCULATE (
[Кол-во остатки],
KEEPFILTERS ( 'М007 Остатки товаров'[Тип остатков признак] = 4 )
)
RETURN
-_res
```
#### 4.2. Описание логики
1. **Базовый расчет:** Мера использует в качестве основы меру `[Кол-во остатки]`.
2. **Фильтрация по типу остатка:** Учитываются только строки, где `[Тип остатков признак]` равен 4, что соответствует резервам по заказам клиентов.
3. **Инвертирование знака:** Результат умножается на -1. Это сделано для корректного отображения, так как в исходной таблице фактов резервы могут храниться с отрицательным знаком.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
### 6. Зависимости
#### 6.1. Поток данных
Поток данных для этой меры идентичен потоку для меры `[Свободный остаток]`. См. описание в соответствующем разделе.
---
## Мера "На складах"
### 1. Общая информация
**Название меры:** На складах
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "На складах" предназначена для расчета общего физического количества товаров, находящихся на складах. Она является суммой свободных остатков и всех видов резервов.
### 3. Исходные данные
**Зависимые меры:**
- [Свободный остаток]
- [Резерв под внутренние перемещения]
- [Резерв по заказам]
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
[Свободный остаток] + [Резерв под внутренние перемещения] - [Резерв по заказам]
```
#### 4.2. Описание логики
1. **Суммирование компонентов:** Мера складывает значения мер `[Свободный остаток]` и `[Резерв под внутренние перемещения]`.
2. **Вычитание резервов:** Из полученной суммы вычитается значение меры `[Резерв по заказам]`. Знак вычитания используется для коррекции, так как мера `[Резерв по заказам]` может иметь отрицательное значение.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Штуки/единицы товара
### 6. Зависимости
#### 6.1. Поток данных
Поток данных для этой меры полностью наследуется от мер, на которых она основана (`[Свободный остаток]`, `[Резерв под внутренние перемещения]`, `[Резерв по заказам]`). Все они используют данные, подготовленные хранимой процедурой `[dbo].[sp_load_fact_inventory_stock]`. См. описание потока данных в разделе меры `[Свободный остаток]`.
---
## Мера "В наличии всего"
### 1. Общая информация
**Название меры:** В наличии всего
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "В наличии всего" показывает общее количество товаров, которыми располагает компания, включая как товары на складах, так и товары, находящиеся в пути.
### 3. Исходные данные
**Зависимые меры:**
- [На складах]
- [В пути под резерв]
- [В пути]
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
[На складах] + [В пути под резерв] + [В пути]
```
#### 4.2. Описание логики
1. **Суммирование компонентов:** Мера складывает значение меры `[На складах]` (товары, физически находящиеся на складе) со значениями мер `[В пути под резерв]` и `[В пути]` (товары, перемещаемые между складами).
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Штуки/единицы товара
### 6. Зависимости
#### 6.1. Поток данных
Поток данных для этой меры является совокупностью потоков мер, на которых она основана. Основной поток данных поступает от `[dbo].[sp_load_fact_inventory_stock]`, который готовит данные для мер `[На складах]`, `[В пути под резерв]` и `[В пути]`. См. описание потока данных в разделе меры `[Свободный остаток]`.
---
## Мера "Обеспеченный резерв"
### 1. Общая информация
**Название меры:** Обеспеченный резерв
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Обеспеченный резерв" предназначена для расчета количества товаров, зарезервированных под заказы клиентов, для которых уже определен источник обеспечения (например, ожидаемое поступление).
### 3. Исходные данные
**Основная мера:** [Кол-во остатки]
**Таблица для фильтрации:** 'М007 Остатки товаров'
**Поле для фильтрации:** [Тип остатков признак]
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
VAR _res =
CALCULATE (
[Кол-во остатки],
KEEPFILTERS ( 'М007 Остатки товаров'[Тип остатков признак] = 5 )
)
RETURN
- _res
```
#### 4.2. Описание логики
1. **Базовый расчет:** Мера использует в качестве основы меру `[Кол-во остатки]`.
2. **Фильтрация по типу остатка:** Учитываются только строки, где `[Тип остатков признак]` равен 5, что соответствует обеспеченным резервам.
3. **Инвертирование знака:** Результат умножается на -1 для корректного отображения.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
### 6. Зависимости
#### 6.1. Поток данных
Поток данных для этой меры идентичен потоку для меры `[Свободный остаток]`. См. описание в соответствующем разделе.
---
## Мера "Заказано"
### 1. Общая информация
**Название меры:** Заказано
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Заказано" показывает общее количество товаров, которое было заказано клиентами. Она является агрегацией нескольких видов резервов и потребностей.
### 3. Исходные данные
**Зависимые меры:**
- [Резерв по заказам]
- [Обеспеченный резерв]
- [Заказано (прочая потребность)]
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
[Резерв по заказам] + [Обеспеченный резерв] + [Заказано (прочая потребность)]
```
#### 4.2. Описание логики
1. **Суммирование компонентов:** Мера складывает значения трех других мер:
- `[Резерв по заказам]`: Товары, зарезервированные под заказы со склада.
- `[Обеспеченный резерв]`: Резервы под заказы, обеспеченные будущими поступлениями.
- `[Заказано (прочая потребность)]`: Прочие потребности по заказам.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Штуки/единицы товара
### 6. Зависимости
#### 6.1. Поток данных
Поток данных для этой меры полностью наследуется от мер, на которых она основана. Все они используют данные, подготовленные хранимой процедурой `[dbo].[sp_load_fact_inventory_stock]`. См. описание потока данных в разделе меры `[Свободный остаток]`.
---
## Мера "Сумма перемещений отмененных"
### 1. Общая информация
**Название меры:** Сумма перемещений отмененных
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Отмененные заказы
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Сумма перемещений отмененных" предназначена для расчета общей стоимости товаров, которые были отменены в заказах клиентов именно по причине логистических перемещений. Это позволяет анализировать потери, связанные с отменами на этапе внутренней логистики.
### 3. Исходные данные
**Основная таблица:** М001 Заказы Клиентов
**Основное поле:** [Стоимость перемещения]
**Дополнительные поля для фильтрации:**
- [Дата отмены] - для анализа по дате отмены, а не по дате заказа
- [ВГО булево] - для исключения внутригрупповых операций
- [Отмененный] - для выбора только отмененных позиций
- [Вид отмены] - для фильтрации по конкретной причине отмены (в данном случае, перемещение)
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
CALCULATE (
SUM ( 'М001 Заказы Клиентов'[Стоимость перемещения] ),
USERELATIONSHIP ( '000 Календарь'[ID], 'М001 Заказы Клиентов'[Дата отмены] ),
NOT 'М001 Заказы Клиентов'[ВГО булево],
'М001 Заказы Клиентов'[Отмененный],
'М001 Заказы Клиентов'[Вид отмены] = 1
)
```
#### 4.2. Описание логики
1. **Основная агрегация:** Суммирование значений поля [Стоимость перемещения] из таблицы 'М001 Заказы Клиентов'.
2. **Связь по дате:** Активируется связь между календарем и датой отмены заказа (`USERELATIONSHIP`), чтобы фильтры по времени применялись к моменту отмены.
3. **Фильтрация по ВГО:** Исключаются записи, относящиеся к внутригрупповым операциям.
4. **Фильтрация по статусу:** Учитываются только те строки, где флаг [Отмененный] установлен в TRUE.
5. **Фильтрация по виду отмены:** Выбираются только те отмененные позиции, где [Вид отмены] = 1, что соответствует отмене из-за перемещения.
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Валюта (например, рубли)
### 6. Зависимости
#### 6.1. Поток данных
Поток данных для этой меры аналогичен потоку для других мер, основанных на заказах клиентов, таких как `[Кол-во]`.
1. **OLAP мера:** `[Сумма перемещений отмененных]` в кубе OLAP.
2. **Представление DWH:** Данные для меры поступают из представления `[uni].[vt_order]`.
3. **Таблицы фактов DWH:** Представление `[uni].[vt_order]` агрегирует данные из таблиц `[dbo].[fact_order]`, `[dbo].[fact_cancelled_order]`, и `[dbo].[fact_order_characteristics_received]`.
4. **Хранимые процедуры:** Эти таблицы фактов загружаются и обрабатываются следующими хранимыми процедурами:
* `[dbo].[sp_load_fact_order]`
* `[dbo].[sp_load_fact_cancelled_order]`
* `[dbo].[sp_load_fact_order_characteristics_received]`
Подробное описание логики работы хранимых процедур см. в разделе "Поток данных" для меры "Кол-во".
# Продажи
## Мера "Кол-во"
### 1. Общая информация
**Название меры:** Кол-во
**Тип:** Мера (Measure)
**Источник:** OLAP.bim
**Папка отображения:** Базовые меры
**Формат отображения:** #,0
### 2. Назначение (Цель/задача)
Мера "Кол-во" предназначена для подсчета общего количества товаров/услуг в заказах клиентов с учетом определенных фильтров. Данная мера является базовой и используется для расчета других производных показателей в аналитических отчетах.
### 3. Исходные данные
**Основная таблица:** М001 Заказы Клиентов
**Основное поле:** [Количество]
**Дополнительные поля для фильтрации:**
- [ВГО булево] - булево поле для исключения ВГО (внутригрупповые операции)
- [Отмененный] - булево поле для исключения отмененных заказов
### 4. Логика обработки
#### 4.1. Выражение DAX
```dax
CALCULATE (
SUM ( 'М001 Заказы Клиентов'[Количество] ),
NOT 'М001 Заказы Клиентов'[ВГО булево],
NOT ( 'М001 Заказы Клиентов'[Отмененный] )
)
```
#### 4.2. Описание логики
1. **Основная агрегация:** Суммирование значений поля [Количество] из таблицы 'М001 Заказы Клиентов'
2. **Фильтрация по ВГО:** Исключение записей, где [ВГО булево] = TRUE
3. **Фильтрация по статусу:** Исключение отмененных заказов, где [Отмененный] = TRUE
4. **Контекстная фильтрация:** Мера автоматически применяет фильтры из срезов и других измерений
### 5. Результат
#### 5.1. Выходные данные
- **Тип данных:** Числовой (Decimal)
- **Формат отображения:** Целое число с разделителями тысяч (#,0)
- **Единица измерения:** Штуки/единицы товара
#### 5.2. Примеры использования
1. **Общее количество товаров в заказах** - без дополнительных фильтров
2. **Количество по клиентам** - с фильтром по конкретному клиенту
3. **Количество по периодам** - с фильтром по дате заказа
4. **Количество по товарным группам** - с фильтром по категории товара
### 6. Зависимости
#### 6.1. Таблицы
- **М001 Заказы Клиентов** - основная таблица фактов
- Связанные справочные таблицы через внешние ключи
#### 6.2. Поля
- **[Количество]** - основное поле для агрегации
- **[ВГО булево]** - поле для фильтрации
- **[Отмененный]** - поле для фильтрации
#### 6.3. Связанные меры
Мера может использоваться в качестве основы для:
- Производных мер (проценты, коэффициенты)
- Расчетных полей
- Других агрегированных показателей
#### 6.4. Поток данных
1. **OLAP мера:** `[Кол-во]` в кубе OLAP.
2. **Представление DWH:** Данные для меры поступают из представления `[uni].[vt_order]`.
3. **Таблицы фактов DWH:** Представление `[uni].[vt_order]` агрегирует данные из следующих таблиц:
* `[dbo].[fact_order]`
* `[dbo].[fact_cancelled_order]`
* `[dbo].[fact_order_characteristics_received]`
4. **Хранимые процедуры:** Эти таблицы фактов загружаются и обрабатываются следующими хранимыми процедурами:
* `[dbo].[sp_load_fact_order]`
* `[dbo].[sp_load_fact_cancelled_order]`
* `[dbo].[sp_load_fact_order_characteristics_received]`
##### ``[dbo].[sp_load_fact_order]``
**Назначение:** Процедура формирует основной набор данных для анализа продаж.
**Источники и логика:**
* **Основные данные:** Берутся из документа **"Заказ клиента"** из системы 1С. Для каждой товарной позиции в заказе извлекается информация о количестве, цене, сумме, предоставленных скидках и ставке НДС.
* **Обогащение данных:** Информация о заказе дополняется сведениями из связанных справочников 1С:
* **Клиент и партнер:** Кто является покупателем.
* **Менеджер:** Кто ответственный за заказ.