You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
***Избегайте вызовов в циклах:** Не делайте серверный вызов для каждой строки таблицы. Соберите данные на клиенте и обработайте пакетом за один вызов.
57
57
***Задача разработчика — минимизировать количество и объем серверных вызовов.** Код нужно явно разделять между клиентом и сервером.
58
58
59
-
## Сетевое взаимодействие с кластером «1С»
59
+
## Сетевое взаимодействие с кластером
60
60
61
61
1.**Протокол и адресация:** Все компоненты (клиенты, рабочие процессы, менеджеры) общаются по **TCP/IP**. Каждый процесс имеет уникальный адрес: **имя сервера + номер порта**.
Управляет включением в результат записей **без оборотов за период, но с остатками**.
58
52
59
-
#### 4. Таблица `ДвиженияССубконто`
60
-
**Вопрос:***Когда использовать `ДвиженияССубконто` вместо `Остатки`?*
61
-
**Ответ:**
53
+
#### 4. Когда использовать `ДвиженияССубконто` вместо `Остатки`?
62
54
Использовать `ДвиженияССубконто` когда нужно:
63
55
- Получить **детальные проводки** с развернутыми субконто
64
56
- Сделать **отбор по значениям субконто** (например, все операции по конкретному контрагенту)
65
57
- Увидеть **все записи**, включая неактивные (сторнированные)
66
58
67
-
#### 5. Балансовый признак
68
-
**Вопрос:***В каком сценарии отключают балансовый признак у измерения?*
69
-
**Ответ:**
59
+
#### 5. В каком сценарии отключают балансовый признак у измерения?
70
60
При **валютных операциях между разными организациями**.
71
-
Пример: Перевод валюты из ОрганизацииА в ОрганизациюБ. В дебете — ОрганизацияА, в кредите — ОрганизацияБ. Без отключения балансового признака система выдаст ошибку.
61
+
**Пример:** Перевод валюты из ОрганизацииА в ОрганизациюБ. В дебете — ОрганизацияА, в кредите — ОрганизацияБ. Без отключения балансового признака система выдаст ошибку.
Copy file name to clipboardExpand all lines: docs/theory/metadata/documents.md
+23-23Lines changed: 23 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,29 +25,29 @@ title: Документы
25
25
|**Удалять автоматически**| 1. Перепроведение 2. Удаление 3. Отмена проведения | Всегда удаляет старые |**Когда нужна полная очистка** перед новыми движениями |
26
26
|**Не удалять автоматически**| Никогда автоматически | Всегда | Оперативный учет в реальном времени или построчное проведение |
27
27
28
-
### Влияние на блокировки и производительность
29
-
30
-
####**«Удалять автоматически» (плохо для параллельности):**
31
-
```
32
-
Начало транзакции
33
-
🔒 УДАЛЕНИЕ старых движений (X-блокировка)
34
-
🔒 Длительные вычисления и прочие действия
35
-
🔒 Запись движений
36
-
🔒 Контроль остатков
37
-
Фиксация
38
-
```
39
-
При перепроведении этого документа, еще до выполнения процедуры `ОбработкаПроведения`, движения будут удалены.
40
-
Что бы удалить данные платформа накладывает **X** блокировку, которая держится до конца транзакции.
41
-
42
-
####**«Удалять автоматически при отмене проведения» (лучше для параллельности):**
43
-
```
44
-
Начало транзакции
45
-
Длительные вычисления и прочие действия
46
-
🔒 Запись движений
47
-
🔒 Контроль остатков
48
-
Фиксация
49
-
```
50
-
**Преимущество:** Во втором случае, данные будут заблокированы на гораздо меньшее время, чем в первом. А чем меньше длится блокировка, тем меньше вероятность возникновения проблем при многопользовательской работе.
28
+
####Влияние на блокировки и производительность
29
+
30
+
-**«Удалять автоматически» (плохо для параллельности):**
31
+
```
32
+
Начало транзакции
33
+
🔒 УДАЛЕНИЕ старых движений (X-блокировка)
34
+
🔒 Длительные вычисления и прочие действия
35
+
🔒 Запись движений
36
+
🔒 Контроль остатков
37
+
Фиксация
38
+
```
39
+
При перепроведении этого документа, еще до выполнения процедуры `ОбработкаПроведения`, движения будут удалены.
40
+
Что бы удалить данные платформа накладывает **X** блокировку, которая держится до конца транзакции.
41
+
42
+
- **«Удалять автоматически при отмене проведения» (лучше для параллельности):**
43
+
```
44
+
Начало транзакции
45
+
Длительные вычисления и прочие действия
46
+
🔒 Запись движений
47
+
🔒 Контроль остатков
48
+
Фиксация
49
+
```
50
+
**Преимущество:** Во втором случае, данные будут заблокированы на гораздо меньшее время, чем в первом. А чем меньше длится блокировка, тем меньше вероятность возникновения проблем при многопользовательской работе.
Copy file name to clipboardExpand all lines: docs/theory/request.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ title: Запросы
21
21
22
22
**Решение:** Создать дополнительный индекс или (осторожно) изменить порядок измерений.
23
23
24
-
## Работа с составными типами (ссылочные поля)
24
+
## Работа с составными типами
25
25
**Главная проблема:** Обращение к полю через точку (`Документ.Регистратор.Дата`) для поля составного типа приводит к **неявному соединению со ВСЕМИ** таблицами возможных типов (например, со всеми видами документов). Это резко замедляет запрос.
26
26
27
27
**Решение:**
@@ -38,7 +38,7 @@ title: Запросы
38
38
39
39
**Пример:** Получение "последней цены" через `ПО ... В (ВЫБРАТЬ МАКСИМУМ(Период) ...)` лучше делать в два шага через временную таблицу.
40
40
41
-
## Виртуальные таблицы (остатки, срезы)
41
+
## Виртуальные таблицы
42
42
1.**Всегда передавайте условия отбора в ПАРАМЕТРЫ виртуальной таблицы**, а не в `ГДЕ` основного запроса.
43
43
*`...Остатки(, Склад = &Склад)` (ПРАВИЛЬНО)
44
44
*`...Остатки() ГДЕ Склад = &Склад` (НЕПРАВИЛЬНО)
@@ -54,7 +54,7 @@ title: Запросы
54
54
*`МЕСЯЦ(Дата) = 1` -> `Дата МЕЖДУ ДАТАВРЕМЯ(2023,01,01) И ДАТАВРЕМЯ(2023,01,31,23,59,59)`
55
55
***Конструкцию `ВЫБОР`** используйте только в дополнительных условиях в секции `ГДЕ`.
56
56
57
-
## Временные таблицы (рекомендации по использованию)
57
+
## Временные таблицы
58
58
***Индексируйте** большие временные таблицы, участвующие в соединениях или условиях `В(...)`.
59
59
***Не помещайте** во временную таблицу лишние поля или записи.
60
60
***Не создавайте** временные таблицы в цикле. Создайте одну до цикла.
Copy file name to clipboardExpand all lines: docs/theory/sql.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,17 +94,17 @@ WHERE РегистрСведений.Цены.Номенклатура = 'Тов
94
94
95
95
## Планы запросов
96
96
97
-
### Что такое план запроса и зачем он нужен?
97
+
####Что такое план запроса и зачем он нужен?
98
98
99
99
**План запроса** — это **пошаговая инструкция от СУБД**, показывающая конкретные алгоритмы выполнения SQL-запроса. Это "отладчик" для SQL-кода, который показывает реальную работу СУБД изнутри.
100
100
101
-
### Зачем анализировать планы?
101
+
####Зачем анализировать планы?
102
102
-**Понимать реальную производительность** (не только на тестовых данных)
103
103
-**Находить узкие места** — операции, которые "съедают" время
104
104
-**Предотвращать проблемы** в боевой системе при росте данных
105
105
-**Оптимизировать запросы** на основе реального поведения СУБД
106
106
107
-
## Ключевые концепции и операторы
107
+
###Ключевые концепции и операторы
108
108
109
109
**Базовые алгоритмы СУБД**
110
110
СУБД использует понятные алгоритмы, знакомые программистам:
@@ -140,7 +140,7 @@ WHERE РегистрСведений.Цены.Номенклатура = 'Тов
140
140
Источники данных → Фильтрация → Соединения → Сортировка → Результат
141
141
```
142
142
143
-
## Как читать и анализировать планы
143
+
###Как читать и анализировать планы
144
144
145
145
**Ключевые метрики:**
146
146
@@ -163,7 +163,7 @@ WHERE РегистрСведений.Цены.Номенклатура = 'Тов
163
163
3.**Проанализировать вложенность** (операторы внутри операторов)
164
164
4.**Оценить количество обрабатываемых строк**
165
165
166
-
## Инструменты для работы с планами
166
+
###Инструменты для работы с планами
167
167
168
168
**Для MS SQL Server:**
169
169
@@ -188,7 +188,7 @@ WHERE РегистрСведений.Цены.Номенклатура = 'Тов
188
188
- Технологический журнал 1С
189
189
- PgAdmin (через `EXPLAIN ANALYZE`)
190
190
191
-
## Типичные проблемы 1С и их признаки в планах
191
+
###Типичные проблемы 1С и их признаки в планах
192
192
193
193
**1. Общий поиск ("Поиск подобно")**
194
194
-**Признак:**`LIKE '%значение%'` по нескольким полям
@@ -223,7 +223,7 @@ WHERE РегистрСведений.Цены.Номенклатура = 'Тов
223
223
-**Запрос:**`WHERE Организация = ? AND Номенклатура = ?` (пропущен "Склад")
224
224
-**Результат:** Index Scan может быть МЕДЛЕННЕЕ Sequential Scan
225
225
226
-
## Процесс анализа на боевой базе
226
+
###Процесс анализа на боевой базе
227
227
228
228
**Этап 1: Поиск проблемных запросов**
229
229
@@ -253,7 +253,7 @@ WHERE РегистрСведений.Цены.Номенклатура = 'Тов
253
253
3. Переписать сложные запросы (особенно "Срезы последних")
254
254
4. Проверить актуальность статистики
255
255
256
-
## Критические выводы и рекомендации
256
+
###Критические выводы и рекомендации
257
257
258
258
**Общие принципы:**
259
259
1.**Не тестируйте на маленьких данных!** Поведение на миллионах записей — совершенно другое
0 commit comments