Skip to content

Commit 6867a6a

Browse files
committed
Правки
1 parent 416af49 commit 6867a6a

3 files changed

Lines changed: 112 additions & 5 deletions

File tree

docs/theory/data_blocking.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,13 +314,13 @@ title: Блокировки
314314
**Симптом**: Две транзакции ждут друг друга.
315315

316316
**Причины**:
317-
- Недостаточный уровень изоляции
317+
- **Недостаточный уровень изоляции**
318318

319319
Транзакции считывают данные под разделяемой блокировкой (S), а затем пытаются обновить их, что требует установки монопольной блокировки (X).
320320

321321
Если две транзакции одновременно удерживают S-блокировки на одних и тех же ресурсах и запрашивают X-блокировки для их изменения, возникает взаимоблокировка.
322322

323-
- Неоптимальный порядок блокировок
323+
- **Неоптимальный порядок блокировок**
324324

325325
Пример: Два документа — «Поступление товаров» и «Реализация товаров» — при проведении обращаются к одним и тем же виртуальным таблицам регистров, но порядок вызова методов записи различен:
326326

docs/theory/index_types.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ title: Индексы
77

88
* **Что такое индекс**: Служебный объект БД, созданный на основе одного или нескольких полей
99

10-
* **Структура**: Содержит значения ключевых полей + ссылки на записи таблицы
11-
1210
* **Главная задача**: Ускорение поиска данных в СУБД (особенно на больших объемах)
1311

1412
* **Без индекса**: Полное сканирование таблицы (Table Scan) — неэффективно

docs/theory/skd.md

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,22 @@ title: СКД
3939
* **`ПроцессорКомпоновкиДанных`** — Исполняет макет, выдает элементы результата. Ключевые методы `Инициализировать(Макет)`, `Следующий()`.
4040
* **`ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент`** — Выводит элементы в табличный документ.
4141

42+
### Основные элементы схемы компоновки
43+
44+
1. **Поля:**
45+
* Формируются автоматически из запроса.
46+
* Имеют **роли** («Период», «Измерение», «Остаток»), критичные для корректного расчета итогов по регистрам (остатки, обороты).
47+
* Можно настраивать оформление, подсказки, формы выбора.
48+
49+
2. **Ресурсы:**
50+
* Поля, по которым считаются **итоги** (агрегаты: сумма, среднее, количество).
51+
* Итоги рассчитываются на уровне всей СКД, а не в запросе.
52+
* Можно задавать сложные выражения и агрегатные функции.
53+
54+
3. **Параметры:**
55+
* Используются для динамической фильтрации данных (например, «Период», «Контрагент»).
56+
* Могут иметь доступные значения, типы и настройки редактирования.
57+
4258
### Важные особенности и приемы
4359

4460
1. **Несколько наборов данных:** Можно связывать в схеме. В настройках в одной группировке можно использовать поля только из связанных наборов (кроме ресурсов).
@@ -50,6 +66,99 @@ title: СКД
5066
* `{ГДЕ Поле1, Поле2}` — По каким полям можно делать отбор.
5167
* Параметры виртуальных таблиц `{&ДатаНачала, &ДатаКонца}` также становятся доступны для отбора.
5268

69+
## Назначение ролей для полей
70+
71+
Роли полей в СКД — это **ключевая настройка для корректного расчета итогов**, особенно для работы с регистрами накопления, бухгалтерии и при использовании группировок по периодам. Роли сообщают системе, как обрабатывать поля при построении запросов и расчете агрегатов.
72+
73+
**Типы ролей и их настройки:**
74+
75+
#### 1. **Роль «Период»**
76+
**Назначение:** Для полей, содержащих даты/временные периоды. Используется при работе с виртуальными таблицами регистров, где задана периодичность.
77+
78+
**Важные настройки:**
79+
- **Номер строки:** Определяет иерархию периодов. Нумерация должна быть строго последовательной:
80+
- 1 — самый младший период (например, День)
81+
- 2 — старший (например, Месяц)
82+
- 3 — еще старший (например, Квартал)
83+
- **Дополнительный (флаг):**
84+
-**Установлен** — в итоговый запрос включаются только явно указанные периоды
85+
-**Снят** — в запрос автоматически включаются все родительские периоды (для корректного расчета остатков)
86+
87+
**Особенности:**
88+
- Поля с ролью «Период» **нельзя использовать в одной группировке** с другими полями
89+
- При периодичности «Регистратор» обязательно нужно поле «Период»
90+
- При периодичности «Авто» обязательно нужно поле «ПериодСекунда»
91+
- **Проблема:** Группировка по неделям совместно с месяцами может давать задвоение данных
92+
93+
#### 2. **Роль «Измерение»**
94+
**Назначение:** Для полей, по которым будут рассчитываться итоги (обычно измерения регистров).
95+
96+
**Настройки:**
97+
- **Родительское поле:** Если используется не само измерение, а его реквизит, здесь указывается родительское поле
98+
- **Реквизит:** Указывается конкретный реквизит измерения
99+
100+
**Важно:**
101+
- Родительское поле тоже должно иметь роль «Измерение»
102+
- Если в настройках выбрано подчиненное поле измерения, а само измерение не выбрано — оно будет добавлено в запрос **неявно** (для корректных итогов)
103+
104+
#### 3. **Роль «Счет»**
105+
**Назначение:** Для полей, содержащих бухгалтерские счета (работа с регистром бухгалтерии).
106+
107+
**Настройки:**
108+
- **Вид счета:** Обязательно указывается тип счета:
109+
- Активный
110+
- Пассивный
111+
- Активно-пассивный
112+
- **Если не указан:** Система считает счет активно-пассивным, но может некорректно обрабатывать отрицательные остатки
113+
114+
#### 4. **Роль «Остаток»**
115+
**Назначение:** Для полей начальных и конечных остатков регистров.
116+
117+
**Настройки:**
118+
- **Имя:** Группировочное имя для пары «Начальный-Конечный остаток». Должно быть одинаковым для обоих полев
119+
- **Тип:** Выбирается:
120+
- Начальный остаток
121+
- Конечный остаток
122+
- **Бух. тип:** Для регистра бухгалтерии указывается:
123+
- Дебет
124+
- Кредит
125+
- **Поле счета:** Связь с полем, имеющим роль «Счет»
126+
127+
**Критически важно:**
128+
- В схеме **обязательно должны присутствовать оба поля** (и начальный, и конечный остаток)
129+
- Если пользователь выбрал только один остаток — в запрос все равно включаются **оба** для корректных расчетов
130+
131+
#### Дополнительные настройки ролей (общие для всех)**
132+
133+
1. **«Игнорировать значение NULL»**
134+
-**Установлен:** Из итоговой выборки исключаются записи, где это поле имеет значение NULL
135+
-**Снят:** NULL-значения участвуют в расчетах и отображении
136+
137+
2. **«Обязательное»**
138+
-**Установлен:** Поле **всегда** включается в итоговый запрос, даже если не выбрано в настройках
139+
- **Пример использования:**
140+
- Принудительный расчет итогов по всем измерениям регистра
141+
- Развернутое сальдо по всем субконто в бухгалтерии
142+
- Обязательные поля для корректной работы расширений
143+
144+
#### **Типичные ошибки и решения**
145+
146+
- **Ошибка 1: Неправильная нумерация периодов**
147+
* **Симптом:** Некорректный расчет остатков на начало периода
148+
* **Решение:** Проверить последовательность нумерации (1, 2, 3...)
149+
150+
- **Ошибка 2: Отсутствие пары «начальный-конечный» остаток**
151+
* **Симптом:** Итоги не рассчитываются или считаются неправильно
152+
* **Решение:** Добавить оба поля с одинаковым «Именем» в роли «Остаток»
153+
154+
- **Ошибка 3: Роль «Счет» без указания вида**
155+
* **Симптом:** Некорректное отображение отрицательных остатков
156+
* **Решение:** Указать правильный вид счета
157+
158+
- **Ошибка 4: Использование подчиненных реквизитов без родителя**
159+
* **Симптом:** Ошибки при построении запроса
160+
* **Решение:** Указать родительское поле в роли «Измерение»
161+
53162
## Наборы данных
54163

55164
#### 1. **Типы наборов данных в СКД**
@@ -257,7 +366,7 @@ title: СКД
257366

258367
#### 18. **Для чего в конструкторе СКД, на вкладке "Наборы данных", нужно поле "Роль"?**
259368

260-
Роли (`Измерение`, `Ресурс`, `Остаток`, `Период` и т.д.) необходимы **внутреннему механизму СКД** для правильного расчета агрегатов (особенно остатков, оборотов, иерархии), независимо от того, как пользователь настроит отчет.
369+
Роль (`Измерение`, `Счет`, `Остатки`, `Период` и т.д.) необходимы **внутреннему механизму СКД** для правильного расчета агрегатов (особенно остатков, оборотов, иерархии), независимо от того, как пользователь настроит отчет.
261370

262371
#### 19. **При соблюдении каких условий доступно использование функций из общих модулей в полях выражений СКД?**
263372

0 commit comments

Comments
 (0)