Выход платформы 1С:Предприятие 8.3.17 принес ряд долгожданных изменений, которые существенно упрощают жизнь разработчика и расширяют возможности интеграции систем. В этой статье мы подробно разберем наиболее значимые технические новшества, проанализируем их практическую пользу и рассмотрим примеры реализации механизмов, которые стали доступны в этой версии.
Одним из самых полезных изменений для разработчиков сложных отчетов стала возможность передачи МенеджерВременныхТаблиц непосредственно в процессор компоновки данных. Ранее для использования данных, подготовленных программно, нам часто приходилось выгружать их в ТаблицаЗначений и передавать в СКД как внешний набор данных. Это создавало лишнюю нагрузку на оперативную память сервера приложений, особенно при больших объемах информации.
Теперь мы можем подготовить временные таблицы с помощью обычного запроса и передать их в СКД. Рассмотрим, как это работает программно. Для метода ПроцессорКомпоновкиДанных.Инициализировать() реализован новый параметр. Проанализируем пример кода:
// Создаем менеджер временных таблиц и наполняем его данными
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст = "ВЫБРАТЬ Ссылка, Код ИЗ Справочник.Номенклатура ГДЕ ... ПОМЕСТИТЬ ВТ_Номенклатура";
Запрос.Выполнить();
// Инициализируем компоновку с использованием МВТ
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, МенеджерВТ, Истина);
Разберем преимущества этого подхода. Использование временных таблиц позволяет уменьшить трафик между сервером приложений и СУБД (SQL), так как данные не перекачиваются в память 1С в виде таблиц значений, а остаются в контексте СУБД. Это критически важно при работе с миллиардами строк.
В версии 8.3.17 разработчики получили мощный инструмент кастомизации — возможность создавать собственные подписки на события для объектов основной конфигурации прямо в расширении. Рассмотрим ситуацию: нам нужно выполнять код при записи справочника в типовой конфигурации. Раньше мы использовали механизм &После или &Вместо в модуле объекта расширения. Однако это приводило к загромождению модулей и потенциальным конфликтам при обновлении.
Теперь мы можем создать объект ПодпискаНаСобытие внутри расширения, выбрать в качестве источника объект из основной конфигурации (например, СправочникОбъект.Контрагенты) и назначить обработчик, который также располагается в расширении. Это делает архитектуру расширения более чистой и независимой от изменений в коде модулей основной конфигурации.
Система окончательно перешла на поддержку журнала регистрации в формате SQLite (файлы с расширением .lgd). Важным нововведением в 8.3.17 стала оптимизация индексов в журнале регистрации. Рассмотрим, почему это важно. В старых версиях при попытке установить сложный фильтр в большом журнале (например, по конкретному пользователю за большой период) сервер мог значительно замедлять работу или вовсе "зависать", так как системе приходилось прочитывать огромные объемы данных для построения выборки.
Внедрение полноценной индексации в формате SQLite решает эту проблему. Проанализируем основные изменения в работе с журналом:
Платформа 8.3.17 активно развивает механизмы совместной работы. Рассмотрим возможность интеграции с внешними мессенджерами, такими как Telegram. Теперь сообщения из Telegram-ботов могут поступать напрямую в СистемаВзаимодействия. Это позволяет реализовать сценарии общения сотрудников с клиентами прямо из интерфейса 1С.
Выясним, как это устроено технически. 1С подключается к внешнему сервису, который транслирует сообщения из мессенджера в обсуждения внутри платформы. Программисту достаточно настроить интеграцию в параметрах системы взаимодействия, после чего входящие сообщения от внешних пользователей будут выглядеть как обычные чаты в 1С. Это избавляет от необходимости использовать сторонние библиотеки для работы с API мессенджеров.
В составе 8.3.17 появились упоминания новых компонентов — 1С:Аналитика и Внешний сервис интеграции. Разберем подробнее, что это такое:
1С:Аналитика — это BI-система, предназначенная для визуализации данных. Она работает в связке с Акселератором данных — специальной базой данных In-Memory, встроенной в платформу. Акселератор хранит данные в колоночном виде, что позволяет строить отчеты по миллионам записей практически мгновенно. Это решение ориентировано на бизнес-аналитиков, позволяя им самостоятельно собирать дашборды без написания сложного кода в СКД.
Внешний сервис интеграции представляет собой механизм для асинхронного обмена данными. Он позволяет 1С взаимодействовать с внешними информационными системами по событийной модели. Рассмотрим пример: внешняя система отправляет сигнал о событии, 1С "слушает" этот канал через сервис интеграции и мгновенно запускает соответствующий обработчик. Это значительно эффективнее, чем традиционный периодический опрос (polling) баз данных или веб-сервисов.
Посмотрим на изменения в блоке Попытка...Исключение. В 8.3.17 была расширена диагностическая информация об ошибках. Теперь при возникновении исключительной ситуации мы можем получить более детальный стек вызовов и точное описание причины ошибки через объект ИнформацияОбОшибке. Это упрощает отладку сложных фоновых заданий, где визуальный просмотр ошибки невозможен.
Рассмотрим, как правильно обрабатывать такие ситуации:
Попытка
// Выполнение сложной операции
ВыполнитьДействие();
Исключение
Инфо = ИнформацияОбОшибке();
ЗаписатьВЛог("Произошла ошибка: " + КраткоеПредставлениеОшибки(Инфо));
ЗаписатьВЛог("Стек вызовов: " + ПодробноеПредставлениеОшибки(Инфо));
КонецПопытки;
Важный момент: Новые возможности расширения информации об ошибке позволяют программно анализировать тип исключения и принимать решение — стоит ли пытаться повторить операцию или нужно немедленно уведомлять администратора.
Платформа 8.3.17, несмотря на отсутствие долгожданных оконных функций в запросах (которые появились позже), внесла фундаментальные улучшения в производительность и гибкость разработки. Использование Менеджера временных таблиц в СКД и подписок в расширениях — это те инструменты, которые стоит начать применять в своих проектах уже сегодня для повышения качества кода и быстродействия систем.