Новое в 1С:Исполнителе 2.0
Executor IDE
Завершение поддержки и развития Executor IDE. Для написания и отладки скриптов используйте плагин для среды разработки Visual Studio Code.
Отладка
В режиме отладки, после выполнения скрипта, в консоль будет выводиться список незакрытых в процессе выполнения ресурсов.
Встроенный язык
- Реализована возможность использовать модификатор исп без объявления переменной. Это нужно, чтобы захватить Закрываемое значение, которое будет закрыто автоматически при выходе из текущей области видимости;
- Добавлены функциональные типы;
- Включен автоимпорт всех пространств имен из Стд. Больше нет необходимости вручную импортировать пространства имен из Стд;
- Строковые литералы поддерживают интерполяцию строк;
- Добавлены операции:
- Изменен обобщенный синтаксис литералов Байты, Ууид, Время, Дата, ДатаВремя, Момент, ЧасовойПояс:
Байты{FF01AA}
Ууид{3298d7dd-93f5-4778-9084-14afb7fc89ca}
Время{12:00}
Дата{2020-01-01}
ДатаВремя{2020-01-01 12:00}
Момент{2020-01-01 12:00 Z}
ЧасовойПояс{Europe/Moscow}
Изменен синтаксис литерала типа на Тип<ИмяТипа>, например Тип<Строка>;
Добавлено ключевое слово ничто. Его можно использовать только в качестве:
- типа возвращаемого значения метода (для общности), что равносильно отсутствию указания типа;
- типа результата функционального типа.
ничто нельзя никуда присвоить и с ним нельзя никак взаимодействовать.
(XXX)→YYY можно присвоить в (XXX)→ничто;
Запрещено вызывать методы, не возвращающие значение, так, как будто они возвращают значение.
Исключение составляет системный метод Вычислить():
- При этом вызов процедуры должен быть последним, т. е. результатом всего Вычислить();
- Результатом вычисления будет значение Неопределено;
Добавлены обобщённые типы;
Больше не поддерживается синтаксис обобщенных типов без явного указания параметров типа. Все типы встроенных коллекций теперь обобщенные. Нельзя написать просто Массив — нужно всегда явно задавать параметры типа (если он не может быть автоматически выведен);
Реализованы системные обобщенные методы — методы, имеющие тип-параметр, влияющий на типизацию метода.
Такой метод может быть вызван для аргумента (аргументов), типы которых определяются типом-параметром метода. Таким же образом тип результата метода может быть связан с типом-параметром метода.
Синтаксис вызова с указанием типа:
имя-метода<имя-типа-1, ..., имя-типа-N>(параметры)
Методы, которые становятся обобщенными:
Минимум<имя-типа это Сравнимое>(имя-типа, имя-типа)
ЧитаемоеСоответствие<тип-ключа, тип-значения>
.ПолучитьИлиУмолчание<тип-умолчания>(
ключ: тип-ключа,
умолчание: тип-значения|тип-умолчания
): тип-значения|тип-умолчания
ЗапланированныеЗадания.Создать<имя-типа-1, имя-типа-2>(
обработчик: (имя-типа-1, имя-типа-2)->Объект?,
параметр-1: имя-типа-1,
параметр-2: имя-типа-2
)
ФоновыеЗадания.Выполнить<имя-типа-1, имя-типа-2>(
обработчик: (имя-типа-1, имя-типа-2)->Объект?,
параметр-1: имя-типа-1,
параметр-2: имя-типа-2
)
Добавляется возможность вызывать методы и конструкторы с именованными параметрами. Можно смешивать позиционную и именованную формы в вызове. Все именованные параметры должны идти после позиционных;
Реализованы аннотации во встроенном языке.
Доступна аннотация @ИменованныеПараметры, которая может быть размещена на методах и конструкторах. Данная аннотация запрещает вызывать метод с позиционными аргументами (допускаются только именованные аргументы). Пример метода с аннотацией:
@ИменованныеПараметры
метод Тест(Параметр: Число)
;
Реализовано создание экземпляра типа по известному типу во время работы приложения. Добавлен метод Тип.СоздатьЭкземпляр();
Реализованы регулярные выражения.
Для работы с регулярными выражениями используется новый тип Образец. Для него реализован литерал вида '\W+'.
Для работы с совпадениями используется новый тип Совпадение. Он описывает очередное совпадение и работает с подстроками, захваченными группами захвата;
Расширен тип Строка:
- добавлены методы Строка.Содержит(), Строка.ПолноеСовпадение();
- добавлены перегрузки для методов Строка.Разделить(), Строка.Заменить().
В случае некорректного синтаксиса регулярных выражений выбрасывается исключение ИсключениеНекорректноеРегулярноеВыражение;
Реализовано отражение свойств типов:
перечисление имеющихся свойств,
а также установка значений и чтение значений свойств через отражение;
Добавлена возможность форматирования чисел через вызов метода Число.Представление(Формат: Строка) по строке форматирования Формат;
Поведение метода Число.Представление() (без параметров) изменилось. Теперь результатом будет строка, содержащая исходное число, отформатированное в соответствии с форматной строкой "_";
Добавлено перечисление РежимОкругления с режимами округления чисел. Метод Число.Округлить() теперь принимает режим округления. Добавлена перегрузка метода Число.Округлить(), принимающая только режим округления и округляющая число до целого в соответствии с заданным режимом;
Добавлена перегрузка метода Число.ВСтроку(), позволяющая переводить число в другие системы счисления.
Прикладная функциональность
Списки отозванных сертификатов ЭЦП
Добавлена поддержка чтения и генерации списков отозванных сертификатов электронной цифровой подписи (ЭЦП) в формате CRL.
Добавлены типы криптографии:
- СписокОтозванныхСертификатов,
- ГенераторСпискаОтозванныхСертификатов.
Тип генерации сертификатов ЭЦП ПараметрыСертификата переименован в ГенераторСертификата.
Для сертификата добавлена возможность при генерации указать адрес сертификата издателя, точки распространения списков отзыва и сервиса OCSP (Online Certificate Status Protocol).
Чтение даты и времени из JSON
Методы ЧтениеJSON.ПрочитатьСодержимоеКакДата() и ЧтениеJSON.ПрочитатьСодержимоеКакВремя() теперь умеют читать значения из представления даты и времени. Например, из строки "2021-01-01 10:11:12". Контроль «отсечения» лишних частей даты и времени лежит на параметрах этих методов ИгнорироватьДату и ИгнорироватьВремя.
Методы СериализацияJSON.ПрочитатьМассив(), СериализацияJSON.ПрочитатьОбъект() и СериализацияJSON.ПрочитатьСоответствие() умеют считывать значения из представления даты и времени в поля структур с типами Дата или Время. Например, из строки "2021-01-01 10:11:12". Контроль «отсечения» лишних частей даты и времени лежит на свойстве НастройкиЧтенияОбъектовJson.ИгнорироватьЛишниеЧастиДатыВремени.
Пустые части даты и времени игнорируются по умолчанию. Например, "2021-01-01 00:00" для типа Дата и "0001-01-01 10:11:12" для типа Время.
Работа с пустыми значениями и коллекциями в JSON
У типа НастройкиЗаписиОбъектовJson, используемого в методе СериализацияJson.ЗаписатьОбъект(), появились новые свойства:
- НастройкиЗаписиОбъектовJson.ПропускатьНеопределено — при записи объекта в JSON будут пропущены свойства со значением Неопределено;
- НастройкиЗаписиОбъектовJson.ПропускатьПустыеКоллекции — при записи объекта в JSON будут пропущены свойства со значениями с типом коллекций, если они пусты.
У типа НастройкиЧтенияОбъектовJson, используемого в методах СериализацияJSON.ПрочитатьМассив(), СериализацияJSON.ПрочитатьОбъект() и СериализацияJSON.ПрочитатьСоответствие(), появились новые свойства:
- НастройкиЧтенияОбъектовJson.ИнициализироватьОтсутствующиеПоля — при чтении из JSON, отсутствующие поля у структур будут заполнены явными значениями инициализации (Неопределено имеет приоритет);
- НастройкиЧтенияОбъектовJson.ИнициализироватьПустыеКоллекции — при чтении из JSON, отсутствующие поля структур с типами коллекций будут инициализированы пустыми значениями этого типа.
Тип «ХешированиеДанных»
Тип ХешированиеДанных теперь умеет вычислять хеш на основе различных типов данных. Ранее это было возможно только для типов Байты и ПотокЧтения.
Реализован новый метод ХешированиеДанных.Хеш(), который упрощает вычисление хеша. Например:
знч Значение = новый ДатаВремя(2022, 4, 1)
знч Хеш = ХешированиеДанных.Хеш(Значение, АлгоритмХеширования.Sha1)
Для хеширования строк появилась возможность указать кодировку, например:
знч Хеш = ХешированиеДанных.Хеш("Какое-то строковое значение",
АлгоритмХеширования.Sha1,
"UTF-16")
Тип «ГенераторQrКода»
Реализован тип ГенераторQrКода, поддерживающий генерацию QR-кодов для текста, телефона, почты, визитной карты, подключения Wi-Fi, URL, календарного события.
Тип «ПотокЧтения»
- Добавлен метод КопироватьВФайл(). Метод реализует частый сценарий и исключает явную работу с ресурсом (потоком записи для файла) и риск забыть закрыть поток записи;
- Добавлен метод ПрочитатьКакСтроку(). Отличие от удаленного метода ПрочитатьКакТекст() — удаляется UTF-8 BOM при чтении из потока;
- Добавлен метод ПрочитатьКакБайты().
Тип «ЗаписьZip»
Добавлена поддержка многопоточного сжатия при создании zip-архивов. Максимальное количество потоков для сжатия можно указать в конструкторе ЗаписьZip; по умолчанию значение равно единице. Количество потоков для сжатия будет выбираться исходя из технической возможности использовать многопоточное сжатие и некоторых параметров.
Переименования
Во встроенном языке:
- Ключевое слово любой переименовано в неизвестно;
- Ключевое слово enumeration переименовано в enum.
В системе типов:
- У типа Форматируемое метод Форматировать() переименован в Представление();
- Метод глобального контекста Число() заменен на конструктор:
новый Число()
- Метод глобального контекста Булево() заменен на конструктор:
новый Булево()
- Метод глобального контекста Строка() удален. Вместо него следует использовать метод Объект.ВСтроку();
- Тип СимволыМенеджер переименован в Символы;
- Тип ФиксированныйМассив переименован в ЧитаемыйМассив;
- Тип ФиксированноеСоответствие переименован в ЧитаемоеСоответствие;
- Тип ФиксированноеМножество переименован в ЧитаемоеМножество;
- Тип ФиксированнаяКоллекция переименован в ЧитаемаяКоллекция;
- Тип ФиксированныеЗаголовкиHttp переименован в ЧитаемыеЗаголовкиHttp;
- Тип ВременнаяЗона переименован в ЧасовойПояс;
- Статический метод ВременнаяЗона.Текущая() переименован в ЧасовойПояс.Текущий();
- Удалены типы ДиапазонТекста и АдминистрированиеДиапазонПортов. Вместо них следует использовать обобщенный тип Диапазон.
Глобальное переименование:
- Идентификатор переименован в Ид;
- ИнформационнаяБаза переименован в Инфобаза;
- ОткрытьПотокДляЧтения переименован в ОткрытьПотокЧтения.