Выход технологической платформы 1С:Предприятие 8.3.13 стал знаковым событием для сообщества разработчиков. В этой версии разработчики «1С» сосредоточились не столько на внешних эффектах, сколько на глубокой оптимизации ядра, расширении возможностей языка запросов и внедрении инструментов для системного администрирования высоконагруженных систем. В данной статье мы подробно разберем, какие функции делают этот релиз обязательным к изучению и применению (маст-хэв), и как эти изменения помогут сделать ваши конфигурации быстрее и стабильнее.
Одной из самых ожидаемых функций стала АВТОНОМЕРЗАПИСИ(). Разберем ситуацию: раньше для получения порядкового номера записи или формирования нарастающего итога в запросе нам приходилось использовать ресурсоемкие соединения таблицы самой с собой по условию НомерСтроки <= НомерСтроки. Теперь эта задача решается элегантно и быстро на уровне СУБД.
Рассмотрим основные правила использования этой функции:
ГДЕ или ОБЪЕДИНИТЬ на верхнем уровне.Посмотрим на практический пример реализации нумерации строк во временной таблице:
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
Продажи.СуммаОборот КАК Сумма,
АВТОНОМЕРЗАПИСИ() КАК ПорядковыйНомер
ПОМЕСТИТЬ ВТ_ПродажиСНомерами
ИЗ
РегистрНакопления.Продажи.Обороты КАК Продажи
УПОРЯДОЧИТЬ ПО
Продажи.СуммаОборот УБЫВ
;
Проанализируем этот код: мы создаем временную таблицу, где каждая строка получает свой номер в зависимости от объема продаж. Это критически важно для задач распределения партий, расчета рейтингов или вывода нумерованных списков в сложных отчетах без использования СКД. Важно помнить, что порядок нумерации строго определяется предложением УПОРЯДОЧИТЬ ПО.
Разберем одну из главных «админских» фишек — систему контроля ресурсов. До выхода 8.3.13 один пользователь, запустивший тяжелый отчет «за 10 лет», мог монополизировать ресурсы сервера, парализовав работу всего подразделения. Теперь в платформу встроен штатный механизм ограничения аппетитов отдельных сеансов.
Выясним, что именно мы можем теперь контролировать:
Система позволяет создавать «Профили безопасности», где прописываются пороговые значения. Если сеанс превышает лимит, администратор может прервать выполнение конкретной длительной операции, не выбивая пользователя из программы. Пользователь просто получит сообщение об ошибке и сможет продолжить работу, перенастроив фильтры отчета.
Рассмотрим важную оптимизацию оператора В с подзапросом. Ранее использование конструкции ГДЕ Ссылка В (ВЫБРАТЬ...) часто приводило к деградации производительности на больших объемах данных, так как СУБД не всегда эффективно строила план выполнения. В версии 8.3.13 платформа автоматически заменяет такой подзапрос на внутреннее соединение (INNER JOIN), если это не меняет результат. Это позволяет оптимизатору СУБД (особенно PostgreSQL и MS SQL Server) строить более эффективные планы.
Кроме того, проанализируем другие улучшения в части работы с данными:
ТаблицаЗначений стали работать быстрее благодаря внутренним изменениям в управлении памятью.Обратим внимание на важное изменение в объектной модели. Теперь для вызова через ЭтотОбъект доступны только те методы, которые описаны с ключевым словом Экспорт. Это закрывает потенциальную «дыру», когда через контекст объекта можно было вызвать приватные процедуры модуля.
Пример, который теперь потребует рефакторинга (если отключен режим совместимости):
// В модуле формы
Процедура МояПриватнаяПроцедура()
// Какой-то код
КонецПроцедуры
// Вызов, который вызовет ошибку в 8.3.13:
ЭтотОбъект.МояПриватнаяПроцедура(); // Ошибка! Нужно добавить Экспорт
Хотя в обсуждениях часто шутят про «управление фонариком», возможности мобильной платформы 8.3.13 стали гораздо серьезнее. Рассмотрим ключевые новшества:
Посмотрим на изменения, которые заметят пользователи. В динамических списках оптимизировано событие ПриИзменении. Раньше при удалении, например, 50 строк, событие могло вызываться 50 раз, что приводило к «заиканию» интерфейса. Теперь при массовых операциях событие вызывается однократно.
Также стоит отметить косметические изменения: обновлена цветовая схема выделения строк, она стала менее агрессивной и более современной. Улучшена работа метода ПроверитьВывод() для табличных документов — теперь формирование многостраничных отчетов на стороне клиента происходит значительно быстрее.
Проанализируем ситуацию с надежностью. Как и в любом крупном обновлении, не обошлось без проблем. Разберем зафиксированный баг в релизе 8.3.13.1644: при использовании обычного интерфейса вызов метода ОбновитьИнтерфейс() приводит к аварийному завершению работы клиента. Если ваша конфигурация использует обычные формы, рекомендуется либо избегать этого релиза, либо переходить на более поздние сборки (например, ветку 8.3.14), где эта проблема устранена.
Подведем итог: Платформа 8.3.13 — это фундамент для стабильной работы современных тяжелых конфигураций (ERP 2.4, УТ 11.4). Внедрение функции АВТОНОМЕРЗАПИСИ() и механизмов управления ресурсами делает разработку более профессиональной, а эксплуатацию системы — предсказуемой.