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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

См. также

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

23.07.2026    832    ЕленаЧерепнева    1       

1

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

09.07.2026    1259    ЕленаЧерепнева    0       

4

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

01.07.2026    960    ЕленаЧерепнева    2       

5

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

29.06.2026    978    ЕленаЧерепнева    0       

2

В платформе 1С:Предприятие 8.5.5 планируют улучшить работу с ролями в Конфигураторе. В редакторе ролей появятся фильтры для поиска по ролям и объектам, отбор по правам и другие режимы отображения, которые упростят настройку и проверку прав доступа.

23.06.2026    950    ЕленаЧерепнева    8       

5

Официальный технологический блог «1С» рассказал о планах по развитию расширений в технологической платформе 8.5.5.: поддержка webSocket-клиентов и возможность добавлять ботов для «Системы взаимодействия» в расширение без доработки самой конфигурации.

11.06.2026    905    ЕленаЧерепнева    0       

3

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

08.06.2026    1015    ЕленаЧерепнева    0       

2

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

03.06.2026    3008    ЕленаЧерепнева    4       

5

Комментарии

Инфостарт бот
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 Сейчас в теме
С именем промазали так же, как и с ВызватьПаузу.
ВыбратьПоСсылкам - вообще не даёт представления о том - ЧТО на выходе - ссылки или объекты.
annak2906; alest; mikeA; +3 Ответить
9. mikeA 01.02.24 07:25 Сейчас в теме
(7) Осталась одна сложная задача в 1С) Инвалидацию кэша вроде как побороли))
8. mikeA 01.02.24 07:21 Сейчас в теме
Зачем выгружать результат запроса в таблицу значений если первый параметр ВыбратьПоСсылкам может быть результатом запроса?
10. naf2000 05.02.24 08:23 Сейчас в теме
А могли бы сделать функцию возвращающую массив именно объектов (тех, которые через ПолучитьОбъект строятся). Или даже в языке запросов функцию, возвращающую поле-объект
Это была бы оптимизация, а не вот это всё
Для отправки сообщения требуется регистрация/авторизация