|
Выборка полученная запросом VS выборка полученной с помощью менеджера объекта | ☑ | ||
---|---|---|---|---|
0
kamila0713
11.09.19
✎
14:16
|
На просторах интернета нашел текст следующий. Но юзают все либо так, либо через Выборку(СправочникМенеджер)...
Так как лучше? Теперь подумайте, к чему приводит бездумный цикл подобного рода: Пока Выборка.Следующий() Цикл СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект(); КонецЦикла; Он в цикле (множество раз) генерит загрузку всего, что только возможно:...... |
|||
1
Кир Пластелинин
11.09.19
✎
14:20
|
жутко интересно, но не понятно в чем вопрос
|
|||
2
Fish
11.09.19
✎
14:21
|
(1) +100. Тоже не понял :))
|
|||
3
kamila0713
11.09.19
✎
14:22
|
С статье говорят, что это плохой код:
Пока Выборка.Следующий() Цикл СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект(); КонецЦикла; |
|||
4
kamila0713
11.09.19
✎
14:22
|
(1) (2) Но чем заменить, и как по другому написать не говорят
|
|||
5
Timon1405
11.09.19
✎
14:23
|
>>в статье говорят
а мой сосед говорит, что семь раз за ночь может |
|||
6
Кир Пластелинин
11.09.19
✎
14:24
|
ссылку в студию. а то вырванный из контекста листинг... ну такое
|
|||
7
kamila0713
11.09.19
✎
14:24
|
||||
8
kamila0713
11.09.19
✎
14:25
|
(5) Спасибо, информативно
|
|||
9
sqr4
11.09.19
✎
14:25
|
(0) юзай запросы, объектная модель врятли будет где то использоваться
|
|||
10
Митяйский
11.09.19
✎
14:25
|
(3) Запрос в цикле считается моветоном.
Получать данные надо единым запросом только по нужной инфе и по всем ссылкам сразу. Подозреваю, это имелось в виду. |
|||
11
sqr4
11.09.19
✎
14:27
|
(10) но пример дебильный конечно)
|
|||
12
Митяйский
11.09.19
✎
14:28
|
(11)Но достаточный, чтобы продемонстрировать вредоносность зацикленного обращения к базе.
|
|||
13
sqr4
11.09.19
✎
14:31
|
(12) если мне надо во всей номенклатуре поменять ставку ндс, как сделать иначе?
|
|||
14
Йохохо
11.09.19
✎
14:32
|
(12) если нужен объект, то вариантов нет, потому на (4) и нет замены. И щас автор (7) придет покраснеет и исправит пример)
|
|||
15
kamila0713
11.09.19
✎
14:33
|
(13) Тогда объектная
ВыборкаСправочника = Справочники.Работники.Выбрать(); Пока ВыборкаСправочника.Следующий() Цикл СправочникОбъект = ВыборкаСправочника.ПолучитьОбъект(); СправочникОбъект.Наименование = СтрЗаменить(СправочникОбъект.Наименование,ЧтоМенять,НаЧтоМенять); СправочникОбъект.Записать(); КонецЦикла; |
|||
16
Fish
11.09.19
✎
14:34
|
(15) А если нужно выбрать только тех, работников, у которых в РС статус "Работает"?
|
|||
17
Fish
11.09.19
✎
14:35
|
(15) И собственно, твой код от (3) ничем не отличается - ты точно также получаешь объект по ссылке в цикле.
|
|||
18
Fish
11.09.19
✎
14:36
|
Скучный тролль какой-то.
|
|||
19
kamila0713
11.09.19
✎
14:36
|
(14) Опять же, замена есть, казалось бы, использовать Менеджер Объекта.
Но чем по производительности отличается.....по-моему, скромному стажерскому мнению - ничем. Поэтому пример (7) плохой |
|||
20
sqr4
11.09.19
✎
14:36
|
(15) запрос, отработает также, причем в выборка ты сможешь поставить только ссылку. А объектная модель вытащит все, вплоть до табличных частей.
|
|||
21
kamila0713
11.09.19
✎
14:39
|
(20) Да, ты прав (9) Запросы более универсальнее получаются
|
|||
22
novichok79
11.09.19
✎
14:39
|
в чем вопрос? берешь замер производительности и считаешь сколько у тебя займет выборка всего справочника через Запрос и через Менеджер. для того, чтобы понять какой метод лучше нужны цифры.
|
|||
23
novichok79
11.09.19
✎
14:41
|
да и пользователь вроде kamil0713, но в (0) написано "нашел", что-то с гендерной идентичностью у топикстартера.
|
|||
24
sqr4
11.09.19
✎
14:42
|
(23) Камиль
|
|||
25
novichok79
11.09.19
✎
14:43
|
(24) а ну ок.
|
|||
26
sqr4
11.09.19
✎
14:49
|
(25) хотя в нике женское имя...
|
|||
27
Aleksey
11.09.19
✎
14:59
|
У запроса есть слово "разрешенные" (которое разработчики забывают ставить). А вот выборка через модель обязательно упадет, если есть RLS (задолбался после разработчиков типовой править места, когда они об этом забываю. Как только "новая методика", так гарантированно споткнется об РЛС)
P.S. Про привилегированный режим в курсе |
|||
28
тарам пам пам
11.09.19
✎
15:51
|
Теоретически, выборка через менеджер может быть изредка полезна - она выбирает данные порциями, а не читает сразу все => можно обрабатывать большое количество объектов без большой нагрузки на память.
На практике же для хоть какой-то пользы нужно, чтобы обрабатываемая выборка была действительно гигантской. Ссылка = GUID занимает в памяти 16 байт, возьмем даже с запасом на некие служебные данные данные 32 байта. Чтобы занять выборкой хотя бы 100 МБ нужно ~3,3 млн ссылок. Такие объемы проще напрямую в SQL поправить, чем вечность ждать, пока 1с отработает. |
|||
29
Про100Филя
11.09.19
✎
16:12
|
(28) Нарушение лицензии 1С
|
|||
30
HardBall
11.09.19
✎
17:55
|
Выборка полученная запросом лучше. Однозначно. Вот так вот. Потому что.
|
|||
31
kamila0713
12.09.19
✎
12:09
|
(23) Не то что ты, Джеймс Бонд)
|
|||
32
novichok79
12.09.19
✎
15:16
|
(31) ахаха, я заполнял анкету 7 лет назад, а так меня зовут Олег.
|
|||
33
kamila0713
12.09.19
✎
16:52
|
(32) Приятно, вбил имя свое, чтобы путаницы не было. Ник не изменить.....
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |