Новое в версии 5.0
Модульная разработка
«1С:Исполнитель» теперь поддерживает модульный подход к разработке. Вы можете создавать скрипты, содержащие переиспользуемый код, и подключать их к другим скриптам (подробнее).
Поддержка модульности также реализована в расширении 1C:Executor для Visual Studio Code. В частности, доступны такие механизмы, как автодополнение, переход к подключаемым скриптам, переход к определениям и использованиям, быстрые исправления и т. д.
Встроенный язык
- Аннотация @ПроверятьИспользованиеЗначения
- Добавлена аннотация @ПроверятьИспользованиеЗначения. Данной аннотацией помечаются методы, смысл которых заключается в возврате значений, например: Обходимое.Сортировать, Число.Округлить или Строка.ВВерхнийРегистр. Если метод помечен этой аннотацией и возвращаемое им значение не используется, то компилятор выдает ошибку.
- Оператор динамического доступа к свойству объекта []
- Оператор
[]
больше не поддерживается по умолчанию у всех объектов. Например, оператор по-прежнему разрешен для типов Соответствие и Массив, но не поддерживается для пользовательских элементов типа Структура. Чтобы обеспечить динамический доступ к свойству объекта, который не поддерживает оператор [], используйте механизм отражения или приведите переменную к типу неизвестно перед использованием оператора[]
(подробнее).
- Изменен синтаксис оператора «умолчание»
- Синтаксис оператора умолчание изменен с умолчание на
??.
Было:
знч Значение = Структура.Поле умолчание 0
Стало:
знч Значение = Структура.Поле ?? 0
- Именованные параметры в обобщенных типах
- Добавлена возможность указывать параметры обобщенных типов в именованной форме по аналогии с именованными параметрами методов.
- «Тип» сделан обобщенным
- Тип данных Тип сделан обобщенным. Например: Тип<Объект?> (значение по умолчанию).
- Новый тип «РазмерБайтов»
- Добавлен новый тип РазмерБайтов — размер в байтах.
Допустимые значения: от 0 до 9007199254740991. Литерал имеет вид
[<A>тб][<B>гб][<C>мб][<D>кб][<E>б]
, где<A>
,<B>
,<C>
,<D>
,<E>
— соответствующее количество терабайтов, гигабайтов, мегабайтов и т. д. Например: 1тб2гб3мб4кб5б. Любой элемент может быть опущен, если соответствующее значение равно нулю. - Потоковая обработка структур данных
- Реализована возможность последовательного вызова цепочки методов для выполнения операций над коллекциями. Данная функциональность позволит избежать использования циклов и условных операторов для обработки данных. Это поможет ускорить и упростить написание кода.
Прикладная функциональность
- Убраны неявные преобразования JSON
- При сериализации/десериализации JSON изменился порядок разбора значений, а также другие изменения (подробнее см. здесь).
- Доработка объектов XML
- Для удобства работы с объектами XML добавлены новые методы:
Читает содержимое узла и преобразует его к значению типа Строка.ЧтениеXml.ПрочитатьСодержимоеКакСтроку(): Строка
Записывает в Поток метку порядка байтов (BOM) для кодировки, указанной в параметре Кодировка, с порядком байтов ПорядокБайтов.ЗаписьДанных.ЗаписатьМеткуПорядкаБайтов(Поток: ПотокЗаписи, Кодировка: Кодировка|Строка, ПорядокБайтов: ПорядокБайтов): ПотокЗаписи
-
ЗаписьXml.ЗаписатьНачалоЭлемента(Имя: Строка, ПространствоИмен: Строка? = Неопределено, ДобавлятьОтступы: Булево? = Неопределено): ЗаписьXml
-
ЗаписьXml.ЗаписатьКонецЭлемента(ДобавлятьОтступы: Булево? = Неопределено): ЗаписьXml
Криптография
- Функция HMAC
- Добавлена возможность вычислять код аутентификации сообщения с помощью хеш-функции — HMAC (подробнее).
- Хранилища для ключей JKS
- Добавлен объект ХранилищеJks, который позволяет
создавать хранилище сертификатов и ключей шифрования в формате JKS
(файлы .jks, .keystore):
- ХранилищеJks() — создает новый экземпляр пустого хранилища ключей;
- ХранилищеJks(Данные: Байты | ПотокЧтения, Пароль: Строка = "") — загружает хранилище ключей из данных;
- ХранилищеJks(Файл: Файл | Строка, Пароль: Строка = "") — загружает хранилище ключей из файла.
- ВБайты(Пароль: Строка = ""): Байты;
- ЗаписатьВПоток(Поток: ПотокЗаписи, Пароль: Строка = "");
- ЗаписатьВФайл(Файл: Файл | Строка, Пароль: Строка = "").
Изменения в объектной модели
- Переименования
- Архивация
- ЭлементZip.ЯвляетсяКаталогом() ⟶ ЭлементZip.ЭтоКаталог()