Вход | Регистрация
 

Выборка полученная запросом VS выборка полученной с помощью менеджера объекта

Выборка полученная запросом VS выборка полученной с помощью менеджера объекта
Я
   kamila0713
 
11.09.19 - 14:16
На просторах интернета нашел текст следующий. Но юзают все либо так, либо через Выборку(СправочникМенеджер)...
Так как лучше?


Теперь подумайте, к чему приводит бездумный цикл подобного рода:
Пока Выборка.Следующий() Цикл
СправочникОбъект = Выборка.Ссылка.ПолучитьОбъект();
КонецЦикла;


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

P.S. Про привилегированный режим в курсе
   тарам пам пам
 
28 - 11.09.19 - 15:51
Теоретически, выборка через менеджер может быть изредка полезна - она выбирает данные порциями, а не читает сразу все => можно обрабатывать большое количество объектов без большой нагрузки на память.

На практике же для хоть какой-то пользы нужно, чтобы обрабатываемая выборка была действительно гигантской. Ссылка = GUID занимает в памяти 16 байт, возьмем даже с запасом на некие служебные данные данные 32 байта. Чтобы занять выборкой хотя бы 100 МБ нужно ~3,3 млн ссылок. Такие объемы проще напрямую в SQL поправить, чем вечность ждать, пока 1с отработает.
   Про100Филя
 
29 - 11.09.19 - 16:12
(28) Нарушение лицензии 1С
   HardBall
 
30 - 11.09.19 - 17:55
Выборка полученная запросом лучше. Однозначно. Вот так вот. Потому что.
 
 
   kamila0713
 
31 - 12.09.19 - 12:09
(23) Не то что ты, Джеймс Бонд)
   novichok79
 
32 - 12.09.19 - 15:16
(31) ахаха, я заполнял анкету 7 лет назад, а так меня зовут Олег.
   kamila0713
 
33 - 12.09.19 - 16:52
(32) Приятно, вбил имя свое, чтобы путаницы не было. Ник не изменить.....


Список тем форума
Рекламное место пустует  Рекламное место пустует
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.