Какие технические новшества появились в платформе 1С:Предприятие 8.3.18 и как их применять?

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

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

Внедрение асинхронного программирования: ключевые слова Асинх и Ждать

Одной из самых ожидаемых функций стало появление полноценной поддержки асинхронности на уровне встроенного языка. Ранее разработчикам приходилось использовать громоздкие цепочки из объектов ОписаниеОповещения, что приводило к так называемому «callback hell» — коду, который крайне сложно читать и отлаживать. Разберем по шагам, как изменился подход в 8.3.18.

Теперь функции могут быть объявлены с модификатором Асинх, а внутри них можно использовать оператор Ждать. Это позволяет писать асинхронный код так же линейно, как и обычный процедурный код. Проанализируем пример того, как теперь выглядит работа с диалогами:


&НаКлиенте
Асинх Процедура КомандаВыполнить(Команда)
    
    Результат = Ждать ВопросАсинх("Продолжить выполнение операции?", РежимДиалогаВопрос.ДаНет);
    
    Если Результат = КодВозвратаДиалога.Да Тогда
        Сообщить("Пользователь согласился.");
        // Продолжаем выполнение логики без использования ОписанияОповещения
    КонецЕсли;

КонецПроцедуры

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

Сервисы интеграции и встроенные боты

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

В дополнение к сервисам интеграции появился объект Бот. На текущий момент реализована нативная поддержка интеграции с Telegram. Теперь для создания чат-бота не нужно использовать сторонние компоненты или вручную разбирать JSON-ответы от API Telegram через HTTPСоединение. Платформа предоставляет высокоуровневые объекты для отправки и получения сообщений, картинок и документов.

Оптимизация работы с виртуальной таблицей СрезПоследних

Проанализируем важное изменение в логике работы запросов к регистрам сведений. В версии 8.3.18 при обращении к виртуальной таблице СрезПоследних теперь автоматически учитывается свойство Активность записи. Выясним причину такого изменения: ранее для получения корректных данных (только активных записей) разработчикам часто приходилось накладывать дополнительные фильтры в секции ГДЕ или использовать подзапросы.

Теперь, если режим совместимости установлен в значение 8.3.18, платформа генерирует SQL-запрос, который фильтрует неактивные записи на этапе выборки из итоговых таблиц срезов. Это значительно повышает производительность в высоконагруженных базах, где часто используются записи с отключенной активностью (например, в механизмах версионирования или при отмене транзакций).

Расширение типов данных в расширениях конфигурации

Механизм расширений стал еще более гибким. В 8.3.18 реализована возможность расширения типов атрибутов (реквизитов) объектов, которые были приняты в расширение. Это означает, что теперь мы можем:

  1. Добавлять свои типы в составные типы данных стандартных реквизитов типовых конфигураций.
  2. Кастомизировать логику работы ссылочных полей без необходимости снимать объект с поддержки в основной конфигурации.

Важное ограничение: данная возможность не распространяется на общие типы атрибутов, атрибуты внешних источников данных и определяемые типы. Тем не менее, это огромный шаг вперед для поддержки крупных систем (ERP, ЗУП), позволяющий минимизировать вмешательство в «ядро» программы.

Улучшение взаимодействия с СУБД Microsoft SQL Server

Рассмотрим техническую деталь, полезную для администраторов и разработчиков, занимающихся оптимизацией запросов. В 8.3.18 планы запросов, генерируемые платформой, теперь кэшируются на стороне SQL Server в том же разрезе свойств, что и запросы из SSMS. Проанализируем ситуацию: раньше анализ «тяжелого» запроса через SQL Profiler или SSMS мог давать другой план выполнения, чем тот, который реально использовала 1С. Теперь эта разница нивелирована, что упрощает диагностику производительности.

Управление памятью через TCMalloc

В состав дистрибутива включена библиотека TCMalloc (Thread-Caching Malloc), которая теперь используется рабочими процессами rphost по умолчанию. Выясним, почему это критично для стабильности сервера. Основная проблема 64-битных серверов 1С при длительной работе — фрагментация оперативной памяти. Библиотека TCMalloc более эффективно распределяет память и быстрее возвращает её операционной системе, что предотвращает «раздувание» процессов и внезапные аварийные завершения из-за нехватки непрерывных блоков памяти.

Командная строка и автоматизация: параметр /MergeCfg

Для задач автоматического обновления и сборки конфигураций (CI/CD) была доработана команда /MergeCfg. Теперь она поддерживает работу с файлами расширений (.cfe). Рассмотрим пример использования в командной строке:

Использование параметра -Extension позволяет указать имя конкретного расширения, в которое будет произведено слияние изменений. Это существенно упрощает жизнь системным администраторам и DevOps-инженерам при развертывании обновлений на множество баз.

Итоги

Переход на платформу 8.3.18 — это не просто очередное обновление, а получение мощных инструментов для современной разработки. Ключевые рекомендации для разработчиков:

  1. Начните переводить интерфейсные вызовы на Асинх / Ждать для повышения читаемости кода.
  2. Используйте встроенные механизмы ботов вместо самописных интеграций.
  3. Проверяйте поведение запросов к СрезПоследних, если ваша логика опиралась на получение неактивных записей (что бывает редко, но критично).
  4. Активнее применяйте расширение типов в расширениях, чтобы сохранять конфигурации на полной поддержке.
← На главную