С выходом новой версии платформы 1С:Предприятие 8.3.18, выпущенной 12 октября 2020 года, сообщество 1С традиционно задается вопросом: «Что же интересного и полезного принесло это обновление?» Мы собрали ключевые моменты, активно обсуждаемые разработчиками и пользователями на форумах, а также дополним их официальной информацией, чтобы предоставить вам полный обзор значимых изменений и новых возможностей.
Одним из наиболее ожидаемых и значимых изменений в 1С:Предприятии 8.3.18 стала переработка и существенное улучшение механизма работы с асинхронными вызовами. Разработчики давно мечтали о возможности писать асинхронный код, который выглядел бы столь же читаемо, как и последовательный. Версия 8.3.18 реализовала эту мечту, представив новый синтаксис языка с модификатором Асинх и оператором Ждать.
Мы видим, что теперь большинство существующих асинхронных процедур платформы получили свои аналоги в виде асинхронных функций, возвращающих новый тип Обещание (аналог Promise в JavaScript). Эти функции легко отличить по суффиксу Асинх в названии метода, например, ПоказатьАсинх вместо привычного Показать или ПоместитьФайлНаСерверАсинх вместо ПоместитьФайл.
Основная идея заключается в следующем:
Асинх.Ждать перед вызовом других асинхронных функций. Оператор Ждать приостанавливает выполнение текущей асинхронной функции до завершения операции, которую она ожидает, не блокируя при этом основной поток выполнения. Это позволяет избежать «зависания» пользовательского интерфейса и значительно упрощает обработку результатов асинхронных операций, избавляя нас от необходимости использования объектов ОписаниеОповещения() и отдельных процедур-обработчиков оповещения, что было характерно для предыдущего подхода к асинхронности.Рассмотрим, как это работает на примере:
// Пример асинхронной функции для загрузки файла
Асинх Процедура ЗагрузитьДанныеИзФайлаИОтобразить()
Попытка
// Асинхронно выбираем файл на клиенте с помощью диалога
// ДиалогВыбораФайла.ВыбратьАсинх() возвращает Обещание
ВыбранныйФайл = Ждать ДиалогВыбораФайла.ВыбратьАсинх();
Если ВыбранныйФайл <> Неопределено Тогда
Сообщить("Выбран файл: " + ВыбранныйФайл.ПолноеИмя);
// Асинхронно помещаем файл на сервер
// ПоместитьФайлНаСерверАсинх() возвращает Обещание
ДанныеФайла = Новый ДвоичныеДанные(ВыбранныйФайла.ПолноеИмя);
РезультатПомещения = Ждать ПоместитьФайлНаСерверАсинх(ДанныеФайла, "ВременныйФайл.txt");
Если РезультатПомещения.Успех Тогда
Сообщить("Файл успешно помещен на сервер по адресу: " + РезультатПомещения.АдресХранилища);
// Здесь может быть дальнейшая асинхронная логика по обработке файла на сервере
// Например, Ждать ВыполнитьОбработкуФайлаНаСервереАсинх(РезультатПомещения.АдресХранилища);
// ...
Иначе
Сообщить("Ошибка помещения файла на сервер: " + РезультатПомещения.ОписаниеОшибки);
КонецЕсли;
Иначе
Сообщить("Выбор файла отменен пользователем.");
КонецЕсли;
Исключение
Сообщить("Произошла ошибка при работе с файлом: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
// Вызов асинхронной процедуры
ЗагрузитьДанныеИзФайлаИОтобразить();
Важный нюанс: Несмотря на все преимущества, разработчики обращают внимание на то, что применимость асинхронных методов пока сильно ограничена. Так, например, события форм по-прежнему не являются асинхронными, что требует внимательного планирования архитектуры при их использовании. Это не классический async/await в полном смысле слова, а, как отмечают некоторые участники дискуссии, «асинк/ждать» — специфичная реализация 1С, которую нам предстоит освоить. В частности, был задан вопрос: «Где установить флажок, чтобы старая функция ПоместитьФайл стала работать так же, как ПоместитьФайлНаСерверАсинх без дополнительных заклинаний АСИНХ и Ждать?» Ответ очевиден: такого флажка нет, и для использования нового механизма необходимо адаптировать код.
Расширения конфигураций продолжают развиваться, предоставляя разработчикам больше гибкости и возможностей для доработки типовых решений без снятия с поддержки. В версии 8.3.18 мы получили следующие значимые улучшения:
ИзменениеИКонтроль: Это улучшение, которое «боги услышали наши молитвы», касается проверки применимости расширений. Ранее проверка могла ошибочно срабатывать на косметические изменения в исходном коде, такие как добавление или удаление пустых строк, а также строк, состоящих только из пробелов и табуляций. Теперь эти незначительные изменения не учитываются, что значительно сокращает количество ложных срабатываний и упрощает процесс обновления расширений. Однако, мы все же рекомендуем вручную проверять возможность применения расширений, использующих ИзменениеИКонтроль, чтобы не пропустить действительно значимые изменения в оригинальной процедуре после обновления конфигурации.На что обратить внимание:
ДокументОбъект становится доступной, и флажок можно ставить на ДокументОбъект, чтобы подписка работала для всех документов. Однако, как отмечают пользователи, константы в расширениях, хоть и есть, но их применение может быть ограничено при использовании имеющихся режимов совместимости типовых конфигураций.ОпределяемыйТип по-прежнему не полностью поддерживается: Несмотря на значительные шаги вперед, поддержка ОпределяемыйТип в расширениях остается неполной. В 8.3.18 было реализовано расширение состава типов заимствованных объектов, но определяемые типы остались исключением. На форуме пользователи отмечали: «ОпределяемыйТип опять в расширения не завезли». Сообщалось о проблемах с их расширением, которые могли приводить к критическим ошибкам, требующим повторного применения расширения. Ожидалось, что полная поддержка определяемых типов в расширениях будет реализована в версии 8.3.20.Еще одной интересной новинкой 8.3.18 стала поддержка технологии Progressive Web Apps (PWA) в веб-клиенте. Что это означает для нас? Теперь веб-приложения 1С могут быть установлены на рабочий стол пользователя как нативные приложения, предлагая улучшенный пользовательский опыт.
Рассмотрим ключевые особенности PWA:
Эта технология выглядит очень перспективно, особенно для сценариев, где требуется быстрый доступ к приложению, работа в офлайн-режиме (частично) и интеграция с функциями операционной системы, сохраняя при этом все преимущества веб-развертывания.
Многие разработчики и пользователи 1С регулярно обсуждают перспективы выхода новой глобальной версии платформы, такой как 1С:Предприятие 8.4. На форуме также поднимался этот вопрос, и пользователи делились информацией, что разработка 8.4 была приостановлена, а все новые «плюшки» перенесены в ветку 8.3.
Давайте проясним ситуацию. Действительно, в декабре 2015 года «1С» выпускала ознакомительную версию платформы 8.4 (8.4.1), которая была разработана на базе 8.3.5. Она включала полную функциональность последней версии, но с кардинально новой архитектурой кластера серверов, предназначенной для более гибкого администрирования, лучшей адаптации к виртуальным средам, независимой настройки узлов и повышения масштабируемости. Однако, эта версия не предназначалась для реального использования и не являлась завершенной разработкой.
С тех пор, как подтверждалось различными источниками, включая официальные заявления и сообщения на партнерских конференциях, активное развитие технологической платформы продолжилось именно в ветке 8.3. В мае 2020 года стало известно, что работы по 8.4 полностью заморожены. Кардинально новые подходы и архитектурные изменения теперь реализуются в новых проектах, таких как «1С:Исполнитель» и «1С:Предприятие.Элемент». Таким образом, мы можем сделать вывод, что ожидать версии 8.4 в обозримом будущем не стоит, а все инновации будут внедряться в рамках текущей ветки 8.3.
Помимо вышеупомянутых ключевых нововведений, 1С:Предприятие 8.3.18 принесла ряд других полезных улучшений, которые могут быть важны для различных категорий пользователей и разработчиков:
Планировщик. Добавлена поддержка форматированных строк для элементов планировщика, что позволяет более гибко настраивать их внешний вид. Теперь мы можем назначать элементам произвольный набор команд-действий, что значительно увеличивает интерактивность. Также появились новые возможности оформления, такие как настройка рамки и цвета рамки, и новые события, например, НажатиеНаДействие или НажатиеНаГиперссылку, что открывает новые сценарии для интерактивных календарей и графиков.ХешированиеДанных реализована возможность вычисления хеш-функции SHA512. Это более стойкий алгоритм хеширования по сравнению с SHA1 или SHA256, что повышает безопасность при работе с конфиденциальными данными.Control+Alt+E для прерывания длительных операций. Она действует аналогично давно известной комбинации Control+Break, предоставляя дополнительный удобный способ остановить зависшие или долго выполняющиеся процессы.ВидеоконференцииДоступны, ПолучитьМаксимальноеколичествоУчастниковВидеоконференции, НачатьВидеоконференцию. Это открывает путь к интеграции видеосвязи непосредственно в бизнес-процессы 1С.Рекомендации по переходу: Мы рекомендуем выполнять переход на версию 8.3.18 без немедленного снятия режима совместимости. Это позволит сохранить возможность при необходимости использовать для работы с информационной базой и предыдущую версию 8.3.17, что обеспечивает более плавный и безопасный процесс обновления. Также стоит отметить, что некоторые пользователи сталкивались с тем, что исправления ошибок, обещанные для 8.3.17, не попадали в 8.3.18, что создавало неудобства при планировании обновлений.