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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

 

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

 

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

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

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

Если вам удобнее смотреть новости в телеграме, то вот наша группа – ИНФОСТАРТ.

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

См. также

В платформе 8.5.3 новые возможности Механизма копий баз данных позволят оптимально определить состав объектов, которые требуется добавить из основной базы в копию для ускорения наиболее нагруженных операций чтения.

вчера в 17:02    241    ЕленаЧерепнева    0       

3

Фирма «1С» анонсировала изменения в работе механизма лицензирования. Начиная с версии технологической платформы 8.5.2 для выдачи лицензий больше не используется HASP License Manager. При этом сами правила лицензирования остаются без изменений.

11.04.2025    12968    ЕленаЧерепнева    3       

11

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

09.04.2025    1380    ЕленаЧерепнева    0       

4

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

31.03.2025    1613    Alisa_Brineva    0       

4

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

12.03.2025    1054    ЕленаЧерепнева    2       

4

В экосистеме 1С появился продукт, создающий код с использованием искусственного интеллекта. Это 1С:Напарник, с помощью которого можно переводить человеческий язык в код 1С, создавать подсказки, объяснять написанное кем-то или делать код-ревью.

04.03.2025    13824    ЕленаЧерепнева    26       

14

Фирма «1С» опубликовала обновленный план задач для 1С:Предприятие 8.5.3. Большая часть пунктов уже имеет статус «Выполнено», некоторые перенесены на следующую версию. Рассказываем, чего ждать от 8.5.3 и что учитывать в своих проектах.

28.02.2025    1710    ЕленаЧерепнева    0       

2

Фирма «1С» сообщила о планах по обновлению BI-системы 1С:Аналитика. В очередной релиз будут добавлены новые цветовые схемы, планируется улучшить внешний вид диаграмм, повысить удобство работы с источниками и выполнить некоторые оптимизации.

11.02.2025    2483    ЕленаЧерепнева    1       

3

Комментарии

Инфостарт бот
1. Brawler 26.01.24 08:28 Сейчас в теме
Хотелось бы понять как себя ведет

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


И

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


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

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

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

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

Оставьте свое сообщение