ВыбратьПоСсылкам в 8.3.26: фирма «1С» оптимизирует выборку объектов по заданному набору ссылок

25.01.2024      2118

Официальный технологический блог фирмы «1С» сообщил о новой оптимизации, которая появится в 8.3.26. Разработчики платформы собираются ускорить массовые операции с объектами и добавить новый метод – ВыбратьПоСсылкам(<Источник>, <Колонка>).


Почему возникла идея оптимизации массовой обработки объектов по набору ссылок

Анонс новых функциональных возможностей технологической платформы 8.3.26 размещен в «Заметках из Зазеркалья». Специалисты «1С» предлагают оптимизировать массовую обработку объектов по набору ссылок для улучшения производительности.

«При анализе кода существующих типовых конфигураций было обнаружено, что достаточно часто выполняется пакетная обработка объектов базы данных (справочников, документов и т. п.) в соответствии с заданным набором ссылок на объекты. В процессе обработки состояние каждого из объектов загружается из БД с использованием Ссылка.ПолучитьОбъект(). Затем выполняется анализ значений реквизитов и, в случае необходимости, объект модифицируется и записывается. Каждая из операций Ссылка.ПолучитьОбъект() приводит к обращению к базе данных для чтения состояния объекта, что довольно накладно», – говорится в заметке.

Поскольку с самых ранних версий 1С 8.0 у менеджеров объектов базы данных (Справочники, Документы, ПланыВидовХарактеристик и т.д.) уже есть метод Выбрать(), позволяющий за одно обращение к базе получить выборку, содержащую данные сразу многих объектов, решено было реализовать метод ВыбратьПоСсылкам(), позволяющий получать выборки объектов по заданному набору ссылок для более быстрой пакетной обработки


Как будет работать новый метод ВыбратьПоСсылкам()

Методы ВыбратьПоСсылкам(<Источник>, <Колонка>) / SelectByRefs(<Source>, <Column>) будут добавлены в менеджеры объектов:

  • СправочникМенеджер.<Имя_справочника>;
  • ДокументМенеджер.<Имя_документа>;
  • ПланВидовХарактеристикМенеджер.<Имя_плана_видов_характеристик> и т.д.

Полный список будет доступен в технической документации к релизу.

Метод ВыбратьПоСсылкам() работает так же, как метод менеджера объектов Выбрать() – оба метода возвращают выборку объектов соответствующего типа.

Новшество заключается в том, что в качестве критерия выборки метод ВыбратьПоСсылкам() получает коллекцию ссылок на объекты соответствующего менеджеру типа.

Параметры метода ВыбратьПоСсылкам():

  • <Источник> – обязательный, коллекция ссылок, объекты которых должны быть получены в результате выполнения метода. Это может быть ТаблицаЗначений, РезультатЗапроса, Массив, ФиксированныйМассив.
  • <Колонка> – необязательный. Если в качестве значения первого параметра фигурирует ТаблицаЗначений или РезультатЗапроса, с помощью этого параметра можно указать колонку, содержащую ссылки. Колонка может быть задана именем (значение типа Строка) или индексом (значение типа Число). Если значение параметра не задано, используется первая колонка источника. Если значением параметра <Источник> является Массив, значение параметра <Колонка> игнорируется.

 

Пример использования Метод ВыбратьПоСсылкам. Источник: wonderland.v8.1c.ru

 

Но не все так просто. Метод ВыбратьПоСсылкам считывает объекты порциями. Если не предпринять дополнительных мер, этот механизм не обеспечит целостного считывания, поскольку целостность данных обеспечивается только на уровне отдельных объектов, а не всей выборки в целом.

Например, если товар в операции переносится из одного заказа в другой, может сложиться ситуация, когда товар окажется в двух заказах, так как один считается до переноса данных, а другой – после. Эту особенность данного метода следует учитывать и устанавливать дополнительную блокировку данных с помощью транзакции.
 

Полное описание оптимизации менеджеров объектов для пакетной обработки в 1С:Предприятие 8.3.26 в официальном технологическом блоге


Автор:
Обозреватель


См. также

Новость Платформа 1С v8.3 Зазеркалье

Фирма «1С» опубликовала сообщение о выпуске бета-версии технологической платформы 1С:Предприятие 8.5. Скачать дистрибутив 8.5 можно уже сейчас. Главное нововведение, о котором говорят сами разработчики – это обновленный интерфейс.

26.12.2024    19413    ЕленаЧерепнева    65       

22

Новость Зазеркалье Мобильные приложения

Официальный технологический блог «Заметки из Зазеркалья» сообщил о планах обновить интерфейс мобильной версии технологической платформы. Пользователям обещают темную тему, новую верстку таблиц и плавающую кнопку «Создать».

24.12.2024    4456    ЕленаЧерепнева    1       

6

Новость Платформа 1С v8.3 Зазеркалье

Новые оптимизации, развитие средств администрирования и Системы взаимодействия. Подготовили небольшой обзор наиболее существенных изменений в платформе 8.3.27, которые можно протестировать уже сейчас.

23.12.2024    2330    ЕленаЧерепнева    1       

5

Новость Зазеркалье

Официальный технологический блог продолжает рассказывать о том, как будет проходить миграция с интерфейса «Такси» на новый интерфейс. На этот раз речь идет о возможности совместного использования нового и старого интерфейса в одной конфигурации.

20.12.2024    4365    ЕленаЧерепнева    6       

1

Новость Зазеркалье

Несколько дней назад фирма «1С» сообщила о планах по переводу платформы и мобильных приложений 1С на новый, более современный интерфейс на базе «Элемента». Теперь появились подробности о механизме конвертации для перехода на новый интерфейс.

19.12.2024    7777    ЕленаЧерепнева    11       

1

Новость Платформа 1С v8.3 Зазеркалье

Фирма «1С» поделилась планами по развитию возможностей для распознавания речи в 1С:Предприятие 8.3.28. В новой версии платформы планируется реализовать активационные фазы для запуска распознавания и поддержку знаков препинания.

17.12.2024    1108    ЕленаЧерепнева    0       

0

Новость Платформа 1С v8.3 Зазеркалье

Официальный технологический блог «Заметки из Зазеркалья» поделился планом задач на будущий релиз технологической платформы 1С:Предприятие 8.3.29. Пока большая часть задач находится в статусе «Запланирована». Рассказываем, чего ждать от 8.3.29.

13.12.2024    6194    ЕленаЧерепнева    4       

3

Новость Зазеркалье

Официальный технологический блог «Заметки из Зазеркалья» сообщил о планах «1С» по переводу прикладных решений на новый интерфейс, начиная с релиза 1С:Предприятие 8.3.27. Визуальная реализация выполнена на базе 1С:Предприятие.Элемент.

10.12.2024    20566    ЕленаЧерепнева    18       

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Brawler 458 26.01.24 08:28 Сейчас в теме
Хотелось бы понять как себя ведет

Выборка. ПолучитьОбъект();


И

НекаяСсылка. ПолучитьОбъект();


Как получаются данные в первом и втором случае, когда в памяти создается объект?
user813936; +1 Ответить
2. Ujine1313 10 26.01.24 22:33 Сейчас в теме
Что то как то странно оптимизировано. Чем вся эта конструкция отличается от того что взять полученную таблицу значений из запроса и получить из нее объекты по ссылкам? В примере берут ТЗ используют ее как фильтр для всей коллекции товаров и получают выбору товаров, потом из этой выборки получают ссылки на товар и от них объекты.
Может кто то объяснит?
3. Омский Домовой 408 27.01.24 09:10 Сейчас в теме
(2) Думаю , что в таблице значений лежат просто ссылки, а при выполнении метода уже полученные объекты. Т.е. при обращении к ссылке из таблицы значений для получения некого реквизита происходит новое обращение к БД, а при обращение из выборки все реквизиты типа уже получены.
Может ошибаюсь. Это чисто мое предположение.
alest; triviumfan; +2 Ответить
4. nvv1970 27.01.24 13:50 Сейчас в теме
(3) выбрать из менеджера - никогда не получал объекты, а только ссылки обходил порциями по 25. Так ведь?
Почему новый метод получает объекты?
Если это так, то почему его не назвали нормально, ~ типа "получить объекты" по ссылкам?

Сто лет не встречал использования выборки из менеджера. Если он действительно получает сразу объекты целиком, то смысл понятен.
Но где же пакетная запись?
6. triviumfan 97 29.01.24 10:06 Сейчас в теме
(4)
Если это так, то почему его не назвали нормально, ~ типа "получить объекты" по ссылкам?

Всё логично, ведь результат будет выборка, а не объект :)
И как указано выше - это аналог метода Выбрать().
(4)
Сто лет не встречал использования выборки из менеджера

Я тоже, в 99.9% случаев это ВыборкаИзРезультатаЗапроса, почти все используют табличную модель обращения к данным.
5. kamisov 219 28.01.24 11:32 Сейчас в теме
Спасибо, уже очень давно не надо. Лучше бы JWT починили
7. 7OH 70 30.01.24 09:11 Сейчас в теме
С именем промазали так же, как и с ВызватьПаузу.
ВыбратьПоСсылкам - вообще не даёт представления о том - ЧТО на выходе - ссылки или объекты.
alest; mikeA; +2 Ответить
9. mikeA 1 01.02.24 07:25 Сейчас в теме
(7) Осталась одна сложная задача в 1С) Инвалидацию кэша вроде как побороли))
8. mikeA 1 01.02.24 07:21 Сейчас в теме
Зачем выгружать результат запроса в таблицу значений если первый параметр ВыбратьПоСсылкам может быть результатом запроса?
10. naf2000 05.02.24 08:23 Сейчас в теме
А могли бы сделать функцию возвращающую массив именно объектов (тех, которые через ПолучитьОбъект строятся). Или даже в языке запросов функцию, возвращающую поле-объект
Это была бы оптимизация, а не вот это всё
Оставьте свое сообщение