Имя: Пароль:
1C
1С v8
Менеджер против Набора записей для регистров сведений
0 Мандалай
 
09.11.17
13:54
Добрый день.
Чем плох менеджер в плане производительности при записи одной или нескольких строк?
1 MrStomak
 
09.11.17
13:55
(0) При записи нескольких строк плох тем, что не может записать несколько строк.
2 Лефмихалыч
 
09.11.17
13:57
технически, при записи набора, сервер приложений записывает каждую строку по отдельности - да - так, же, как он делает при записи менеджером записи. Но при записи набора он это делает в одной транзакции. При записи туевой хучи менеджеров будет туева хуча транзакций.
3 mistеr
 
09.11.17
13:57
Если не ошибаюсь, внутри там все равно набор записей из одной записи. Так что производительность одинаковая.
4 Лефмихалыч
 
09.11.17
13:57
(3) да щас!
5 Лефмихалыч
 
09.11.17
13:58
Вообще, менеджер хорош тем, что, если руки из жопы, то с его помощью ты весь регистр не угондонишь.
6 mistеr
 
09.11.17
14:00
(2) >записывает каждую строку по отдельности
Трассировка это подтверждает? Я не проверял, но уверен, что там один INSERT/UPDATE и массив параметров.

Насчет транзакций, никто не мешает записывать менеджером записи в одной транзакции.
7 Ненавижу 1С
 
гуру
09.11.17
14:00
(2) зато в начале набор одним запросом сначала очищает записи

а в транзакцию можно и насильно обернуть
8 DrShad
 
09.11.17
14:01
(5) в цикле легко )))
9 Ненавижу 1С
 
гуру
09.11.17
14:01
(6) "Я не проверял, но уверен" - ага
10 Мыш
 
09.11.17
14:04
(9) Никогда такого не было, и вот - опять )))
11 Fragster
 
гуру
09.11.17
14:06
12 mistеr
 
09.11.17
14:10
(9) Да, я поторопился с выводами. Если подумать, то в наборе записей всегда есть отбор, поэтому не массив параметров, а WHERE. Но уверенность в том, что не "каждую строку по отдельности", остается. Какой смысл ставить очевидный барьер производительности?
13 Ненавижу 1С
 
гуру
09.11.17
14:13
(12) а как будет выглядеть этот запрос, например, при записи набора из 1000 строк?
14 Волшебник
 
модератор
09.11.17
14:14
(4) Он правду говорит.
15 Филиал-msk
 
09.11.17
14:16
(12) Смысл в Error: 10739, Severity 15, The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.
16 Лефмихалыч
 
09.11.17
14:18
(14) что производительность одинаковая - враньё!
17 Лефмихалыч
 
09.11.17
14:19
(12) РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей().Записать()

какой здесь отбор всегда есть?
18 Филиал-msk
 
09.11.17
14:21
(17) Естественный (:
19 H A D G E H O G s
 
09.11.17
14:24
(17) Здесь отбор на тех, кто свой код тестит на копии и смотрит в результат или не тестит и потом ищет бэкапы.
20 mistеr
 
09.11.17
14:24
(15) Для INSERT скорее всего массив параметров. Для UPDATE, DELETE отбор.

(17) Если отбор не установлен, значит будет DELETE без отбора, то есть на весь регистр.

Я имел в виду, что набор обрабатываемых строк всегда можно идентифицировать отбором.
21 Ненавижу 1С
 
гуру
09.11.17
14:26
(20) "Для INSERT скорее всего массив параметров. Для UPDATE, DELETE отбор."

ты несешь какую-то дичь
22 mistеr
 
09.11.17
14:31
(21) Возможно. Просвети, как на самом деле.
23 HEKPOH
 
09.11.17
14:32
При сохранении информации при использовании в программном коде объекта МенеджерЗаписи Платформа сама создает объект НаборЗаписей, а его уже записывает
24 Ненавижу 1С
 
гуру
09.11.17
14:34
(22) я уже писал:
1. один DELETE стирает все старые записи согласно отбора
2. куча INSERT где по одной записи вставляются новые
25 mistеr
 
09.11.17
14:38
(24) А UPDATE как?
26 mistеr
 
09.11.17
14:38
UPDATE не делается?
27 Ненавижу 1С
 
гуру
09.11.17
14:39
(25)(26) нет там никаких UPDATE
28 Филиал-msk
 
09.11.17
14:41
(24) Если "записать(ложь)", то delete нет, сразу поток insert
29 Ненавижу 1С
 
гуру
09.11.17
14:42
(28) согласен
30 H A D G E H O G s
 
09.11.17
14:43
Набор круче Менеджера только тем, что Delete делается 1 раз. Вот и все. Толпу менеджеров можно обернуть в
НачатьТранзакцию()
и ваш SDD будет жить спокойной жизнью.
31 Мандалай
 
09.11.17
15:13
Чет затихло, я думал тыщу постов наберет :)
32 Мандалай
 
09.11.17
15:14
Всем спасибо, за ответы.
Я так понял, что мы пришли к единому мнению...
33 Fragster
 
гуру
09.11.17
17:05
(30) если есть подписки при записи/перед записью, то они в случае наобра также один раз отработают
34 Cyberhawk
 
09.11.17
17:50
(32) Огласи это единое мнение
35 Сияющий в темноте
 
09.11.17
22:52
менеджер работает по одной записи,иногда это очень удобно и блокировка идет только в момент записи,то есть можно избежать столкновения транзакций
не всегда хорошо,если одна большая транзакция
Независимо от того, куда вы едете — это в гору и против ветра!