Какие новые возможности появились в платформе 1С 8.3.26 и как их использовать для оптимизации?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Выход платформы 1С:Предприятие 8.3.26 стал знаковым событием для сообщества разработчиков. В этом релизе реализованы механизмы, которые ждали десятилетиями: от возможности создавать собственные индексы в базе данных до нативной поддержки современных протоколов интеграции. Мы проанализируем ключевые технические изменения, разберем причины их появления и поймем, как применить эти инструменты для решения реальных задач производительности.

Пользовательские индексы: долгожданный инструмент для КОРП-лицензий

Одной из самых обсуждаемых тем стали пользовательские индексы. Ранее разработчики были ограничены стандартными механизмами индексации (флаги "Индексировать" у реквизитов). В версии 8.3.26 мы получили возможность самостоятельно определять состав индексов для таких объектов, как Справочники, Документы, ПланыОбмена, БизнесПроцессы и Задачи.

Рассмотрим подробнее, почему это важно. В высоконагруженных системах часто возникают ситуации, когда стандартных индексов недостаточно для оптимального выполнения сложных запросов. Например, когда требуется поиск по нескольким полям одновременно или когда необходимо исключить лишние обращения к основной таблице базы данных (механизм Index Only Scan).

Преимущества новых индексов:

  1. Включенные колонки (Included columns): Мы можем добавить в индекс поля, которые не участвуют в фильтрации, но нужны в выборке. Это позволяет СУБД (MS SQL Server или PostgreSQL) отдавать результат напрямую из индекса.
  2. Оптимизация регистров сведений: Многие разработчики использовали вспомогательные РегистрыСведений (так называемые "ключи поиска") только для того, чтобы обеспечить быструю выборку по определенным измерениям. Теперь от части таких "костылей" можно отказаться, создав правильный индекс непосредственно на основном объекте.
  3. Гибкость: Возможность создавать составные индексы в том порядке полей, который наиболее эффективен для конкретного профиля нагрузки вашей системы.

Революция в пакетной обработке: метод ВыбратьПоСсылкам()

Разберем ситуацию, когда нам необходимо обработать массив ссылок (например, при выгрузке данных или проведении группы документов). Традиционный обход в цикле с получением объекта через Ссылка.ПолучитьОбъект() порождал огромное количество запросов к СУБД, что катастрофически замедляло работу.

В платформе 8.3.26 появился специализированный метод менеджера объектов ВыбратьПоСсылкам(). Проанализируем пример его использования:


// Массив ссылок, который мы получили ранее
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(Ссылка1);
МассивСсылок.Добавить(Ссылка2);

// Пакетное чтение данных всех объектов одним запросом
Выборка = Справочники.Номенклатура.ВыбратьПоСсылкам(МассивСсылок);

Пока Выборка.Следующий() Цикл
    // Работаем с данными объектов без дополнительных обращений к базе
    Сообщить(Выборка.Наименование);
КонецЦикла;

Этот метод позволяет платформе автоматически сформировать оптимальный SQL-запрос типа SELECT ... FROM ... WHERE Ссылка IN (...), что радикально сокращает время выполнения операций в коде. Это особенно актуально для фоновых заданий и интеграционных модулей.

Механика "Ключей" в регистрах накопления и пути оптимизации

Выясним причину проблем производительности в крупных базах (ERP, КА). В современных типовых конфигурациях для ускорения расчета себестоимости используются таблицы ключей аналитики. Однако, как было замечено в обсуждении, это привело к "эффекту домино":

С появлением пользовательских индексов и развитием механизмов платформы мы можем ожидать возврата к более прозрачной структуре хранения, где индексы на стороне СУБД будут эффективно справляться с селективностью данных без избыточной денормализации. Также важно помнить о технологическом нюансе обслуживания итогов: вместо ресурсоемких операций DELETE, эффективнее использовать SELECT INTO в промежуточные таблицы, что значительно ускоряет свертку итогов в больших базах.

Интеграции: Вебхуки и вызов клиента с сервера

Посмотрим на развитие механизмов взаимодействия. В 8.3.26 добавлена поддержка вебхуков (Webhooks). Это позволяет 1С выступать в роли слушателя событий от внешних систем. Теперь не нужно постоянно опрашивать сторонний API в бесконечном цикле или через регламентное задание — внешняя система сама пришлет уведомление в 1С при наступлении события.

Также реализован механизм вызова клиентского кода с сервера (Push-уведомления). Рассмотрим пример: фоновое задание на сервере завершило формирование тяжелого отчета. Теперь сервер может инициировать открытие формы этого отчета непосредственно у пользователя. Однако будьте осторожны: в первых сборках зафиксированы ошибки, мешающие корректному закрытию клиентского приложения при использовании этого механизма, поэтому рекомендуется тщательно тестировать функционал перед внедрением.

Работа с искусственным интеллектом и векторные индексы

Проанализируем перспективное направление — работу с ИИ. В платформу добавлены средства для работы с векторными данными. Это позволяет хранить так называемые "эмбеддинги" (числовые представления смысла текста или изображений) и выполнять семантический поиск.

Представьте, что пользователь ищет в справочнике "комплектующие для системного блока", а система находит "видеокарты" и "материнские платы", хотя этих слов нет в запросе. Это становится возможным благодаря векторным индексам, которые теперь поддерживаются на уровне платформы.

Инфраструктурные изменения и Linux

Важно учитывать изменения в системных требованиях:

  1. Отказ от Windows XP и Server 2003: Платформа перешла на новые стандарты компиляции (C++17), что делает невозможным запуск на устаревших ОС. Это необходимо для оптимизации работы с памятью и многопоточностью.
  2. Проблемы печати в Linux: Сообщество отмечает сохраняющиеся сложности с управлением количеством копий при печати в среде Linux. Разработчикам, использующим серверы на Linux, стоит внимательно проверять работу драйверов принтеров при переходе на 8.3.26.
  3. Лицензирование КОРП: Напоминаем, что расширенные возможности (такие как пользовательские индексы) требуют лицензий уровня КОРП. Это накладывает дополнительные обязательства по стоимости владения (ежегодные платежи за поддержку), что необходимо учитывать при проектировании архитектуры решения.

Итоги и рекомендации

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

← На главную