mcp-tech-spec / Project_documentation.md
Eremenko's picture
Project documentation example added.
9327040
|
Raw History Blame Contribute Delete
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С:
* **Клиент и партнер:** Кто является покупателем.
* **Менеджер:** Кто ответственный за заказ.