Какие ключевые изменения и возможности появились в платформе 1С:Предприятие 8.3.22?

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

Выход версии 8.3.22 стал важным этапом развития платформы 1С:Предприятие. В этой версии разработчики реализовали множество долгожданных функций, которые касаются как удобства разработки в Конфигураторе, так и производительности серверной части. Мы проанализируем основные изменения, разберем технические нюансы работы с СУБД и выясним, какие «подводные камни» могут встретиться при использовании инструментов отладки.

Усовершенствование механизмов проверки расширений в Конфигураторе

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

  1. Существование методов: Платформа теперь проверяет наличие метода, указанного в аннотации (например, &Перед, &После или &Вместо). Если в основной конфигурации метод был удален или переименован, конфигуратор выдаст предупреждение.
  2. Соответствие сигнатуры методов: Проверяется количество параметров и модификаторы их передачи (например, Знач). Это критически важно, так как несоответствие количества аргументов приводило к аварийному завершению работы фоновых заданий или клиентских сессий.

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

Новые возможности языка запросов и СКД: работа с GUID

Проанализируем ситуацию с получением уникальных идентификаторов. Долгое время разработчикам приходилось выгружать результаты запроса в таблицу значений или использовать другие обходные пути, чтобы получить UUID ссылки. В версии 8.3.22 по многочисленным просьбам была добавлена функция УникальныйИдентификатор().

Посмотрим на пример использования этой функции в языке запросов:


ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    УникальныйИдентификатор(Номенклатура.Ссылка) КАК Идентификатор
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ЭтоГруппа = ЛОЖЬ

Эта функция также доступна в языке выражений Системы компоновки данных (СКД). Она принимает один параметр — ссылку (любого типа, кроме ссылок на внешние источники данных) и возвращает объект типа УникальныйИдентификатор. Если в функцию передается NULL, результатом также будет NULL. Это значительно упрощает интеграционные задачи, где требуется передача GUID во внешние системы.

Кроме того, в языке запросов теперь реализована поддержка оператора ТОП (TOP) в подзапросах. Это позволяет ограничивать выборку во вложенных конструкциях, что ранее требовало использования временных таблиц. Рассмотрим, как это может выглядеть:


ВЫБРАТЬ
    Заказы.Ссылка
ИЗ
    Документ.ЗаказПокупателя КАК Заказы
ГДЕ
    Заказы.Ссылка В (
        ВЫБРАТЬ ПЕРВЫЕ 10
            Внутренние.Ссылка
        ИЗ
            Документ.ЗаказПокупателя КАК Внутренние
        УПОРЯДОЧИТЬ ПО
            Внутренние.Дата УБЫВ
    )

Оптимизация блокировок на уровне MS SQL Server

Выясним причину изменений в работе с Microsoft SQL Server. Платформа 8.3.22 устанавливает гранулярность блокировок на уровне строк (row-level locking), если используется версия MS SQL 2008 и выше. Это фундаментальное изменение в управлении конкурентным доступом.

Что это означает на практике:

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

Ускорение обновления конфигурации и многопоточность

Проанализируем производительность операций в Конфигураторе. В версии 8.3.22 операции сравнения и обновления конфигурации были значительно ускорены. Это достигнуто за счет распараллеливания процессов на многоядерных процессорах.

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

Поддержка современных сетевых протоколов: HTTP/2

Разберем технологический стек взаимодействия с внешними сервисами. Платформа получила поддержку протокола HTTP/2 для объекта HTTPСоединение. Рассмотрим преимущества, которые это дает:

  1. Мультиплексирование: Теперь через одно TCP-соединение можно отправлять несколько запросов параллельно, не дожидаясь ответа на предыдущий.
  2. Сжатие заголовков: Уменьшается объем передаваемого трафика.
  3. Приоритезация: Возможность задавать приоритеты для разных потоков данных.

Для использования HTTP/2 не требуется радикального изменения кода, однако инфраструктура (веб-серверы, прокси-серверы) должна поддерживать этот протокол. Это критически важно для облачных решений и интеграций с современными API (например, государственными информационными системами).

Проблемы отладки и процесс dbgs.exe

Необходимо затронуть и критические моменты, выявленные в первых сборках ветки 8.3.22. Рассмотрим ситуацию с процессом dbgs.exe. В сборке 8.3.22.1368 (и некоторых последующих до версии 1603) наблюдалась проблема избыточного потребления ресурсов процессора при использовании HTTP-отладки.

Симптомы проблемы:

Для решения этой проблемы рекомендуется обновить платформу до версии 8.3.22.1709 или выше, где ошибки взаимодействия сервера отладки и клиентских приложений были исправлены. Если вы вынуждены использовать ранние сборки, рассмотрите возможность временного переключения на классическую отладку по протоколу TCP/IP, если сетевая конфигурация это позволяет.

Улучшения интерфейса и веб-клиента

Посмотрим на изменения, которые заметят конечные пользователи. Одной из приятных мелочей стало изменение вида курсора мыши на «занят» (песочные часы или кружок ожидания) при начале серверного вызова в тонком и толстом клиентах. Это дает пользователю визуальный фидбек о том, что система обрабатывает данные, а не просто зависла.

В веб-клиенте реализованы следующие улучшения:

Итоги

Платформа 8.3.22 — это мощное обновление, которое приносит реальные инструменты для оптимизации производительности (построчные блокировки, многопоточное обновление) и упрощает разработку (функции в запросах, проверки расширений). Несмотря на начальные трудности с HTTP-отладкой, в актуальных релизах эта ветка является стабильной и рекомендуемой для перехода, особенно для конфигураций с высокой степенью кастомизации через расширения.

← На главную