Skip to content

Releases: EvilBeaver/OneScript

v1.6.0

29 Apr 08:34

Choose a tag to compare

Новое в версии 1.6.0

Новая функциональность

МассивПараметров[0] = 1;
МассивПараметров[1] = 2;

ФоновыеЗадания.Выполнить(ЭтотОбъект, "МетодДляВыполненияВФоне", МассивПараметров);

Попытка
	ФоновыеЗадания.ОжидатьЗавершенияЗадач();
Исключение
	МассивОшибок = ИнформацияОбОшибке().Параметры;
	Если МассивОшибок <> Неопределено Тогда
		Для Каждого Задание Из МассивОшибок Цикл
			Сообщить(ПодробноеОписаниеОшибки(Задание.ИнформацияОбОшибке));
		КонецЦикла;
	КонецЕсли;
КонецПопытки;
  • Реализован класс БлокировкаРесурса, который предназначен для синхронизации доступа к одной переменной из разных потоков (Mutex)
  • Реализована трассировка загрузки пакетов. Если задана переменная окружения OS_LRE_TRACE=1 то в консоль выводится трассировка поиска библиотек, что должно помочь при расследовании ошибок поиска библиотеки.
  • Обновлен плагин отладчика для VS Code, исправлена ошибка вычисления дочерних переменных в панели watch
  • Реализована поддержка ввода многострочной строки методом ВвестиСтроку. Сигнатура ВвестиСтроку() приведена к платформе 1C

Исправление ошибок

  • Разрешена пустая строка и пробелы в имени кодировки. Используется в методах, где можно указывать перечисление КодировкаТекста или имя кодировки строкой
  • Исправлены ошибки #1014,#487: Работа внешних компонент после компиляции в EXE при подключении из файла или макета стала более корректной.
  • Исправлено сравнение строк при сортировке списков значений и таблий. Поведение приведено к 1С
  • Исправлено вычисление дочерних переменных для панели watch в отладчике (требуется обновление плагина отладчика для VSC)
  • Прочие мелкие исправления

v2.0-alpha-2

18 Mar 15:14

Choose a tag to compare

v2.0-alpha-2 Pre-release
Pre-release

Дистрибутив FDD - требует установки net5.0 runtime правильной разрядности

Дистрибутивы win/linux независимые и не требуют установки net5.0, однако, весят больше.

v2.0-alpha-1

30 Jan 14:54

Choose a tag to compare

v2.0-alpha-1 Pre-release
Pre-release

Глубокий рефакторинг ядра 1Script

Данная версия является переработкой внутренних механизмов 1Script и заделом к дальнейшему развитию.

Основные изменения

  • Новый парсер языка, реализованный в виде отдельной библиотеки OneScript.Language, позволяющей получать AST языка 1С. Позволяет создавать независимые инструменты анализа кода, обфускаторов, трансляторов, etc
  • Более простая интеграция среды исполнения в сторонние приложения

Предупреждение

  • Отсутствует обратная совместимость с существующими внешними компонентами. Потребуется перекомпиляция внешних компонент под версию 2.0

v1.5.0

08 Dec 08:47

Choose a tag to compare

Изменения в версии 1.5.0

Новые возможности

  • Реализована поддержка внешних компонент 1С, созданных по технологии Native API. Метод ПодключитьВнешнююКомпоненту поддерживает параметр "ТипВнешнейКомпоненты", который, принимая значение ТипВнешнейКомпоненты.Native позволяет загрузить внешнюю компоненту 1С и работать с ней из языка 1Script.
  • В классы работы с регулярными выражениями добавлена поддержка именованных групп
  • Поддержка работы с синонимами методов в COM классах
  • Приложение oscript-config включено в поставку

Исправленные ошибки

  • В некоторых ситуациях некорректно расчитывалась сумма в методе ТаблицаЗначений.Свернуть
  • Парсер выдавал ошибку на модулях, которые заканчивались директивой #КонецОбласти
  • Директивы препроцессора обрабатывались "по месту", в отличие от 1С, в которой директива препроцессора должна быть единственной синтаксической конструкцией в строке. Поведение приведено к 1С.
  • Не контролировалась парность директив Область/КонецОбласти.
  • Не компилировались директивы условной компиляции, в которых выражения начиналось со скобки
  • Динамически загруженные модули, созданные из строк, имели одинаковые имена, что в узкоспециальных кейсах приводило к ошибкам.
  • В консоли Powershell обращение к свойству ЦветТекста выдавало ошибку

v1.4.0

05 Jun 07:53

Choose a tag to compare

Изменения в версии 1.4

Улучшения отладчика

Плагин отладчика для Visual Studio Code существенно переработан. Реализована поддержка отладки веб-приложений на 1Script.Web.

Кроме того, для веб-приложений реализован режим attach, который позволяет подключиться к уже работающему веб-приложению. Для этого приложение должно быть запущено в режиме отладки с ключом --debug.port=порт_отладки

Для использования нового протокола отладчика в файле launch.json необходимо указать "protocol": "tcp" Старый протокол на базе WCF оставлен для совместимости

Прочие изменения

  • Выделена отдельная сборка OneScript.DebugServices, предназначенная для подключения отладчика к сторонним приложениям, испольщующим 1Script. Поставляется через NuGet
  • Добавлена возможность передачи переменных среды в отлаживаемое приложение. См свойство env в файле launch.json
  • Улучшено отображение COM-объектов в отладчике
  • Улучшено отображение свойств объектов в отладчике. Больше не отображается свойство ЭтотОбъект.
  • Исправлена ошибка метода Записать() класса БуферДвоичныхДанных (BinaryBuffer.Write()): Не учитывалась начальная позиция записи и запись происходила с 0 позиции целевого буфера.
  • Улучшена всплывающая подсказка при наведении на переменную в отладчике.
  • Добавлена обработка заголовка "Range" объекта HTTPЗапрос.
  • Для методов массива "Добавить" и "Вставить" реализовано необязательное указание параметра "Значение", поведение приведено в соответствие с поведением в 1С.
  • Обновление поставляемой версии opm до 0.16.2
  • Пакет oscript-config включен в поставку
  • Улучшено отображение дерева значений в отладчике
  • Исправлена ошибка, возникающая при явном указании направления сортировки ВОЗР в таблице значений
  • Исправлена ошибка приведения типов к Булево при коротком вычислении выражений
  • Исправлена ошибка метода "Извлечь" класса "ЧтениеZipФайла": в случае файла с некорректным указанием размера/контрольной суммы выбрасывалось исключение и создавался файл со случайным именем, в 1С (или с использованием архиватора) исключение возникает, но файл создается с корректным именем.
  • Исправлена ошибка вывода длинных текстовых значений переменных в отладчике

v1.3.0

27 Feb 19:43

Choose a tag to compare

Изменения в версии 1.3

Новые возможности

  • Реализованы операторы ДобавитьОбработчик/УдалитьОбработчик. Добавлен метод ВызватьСобытие объекта Сценарий для генерации
  • Реализован класс "Действие" позволяющий создавать объекты-делегаты, ссылающиеся на методы

Прочие изменения и исправления ошибок

  • Ускорен лексер языка
  • Устранены ошибки wcf-отладчика, связанные с размером буфера клиента-сервера отладки
  • Изменен API ScriptingEngine в части обработчиков директив препроцессора
  • Удалены устаревшие методы и классы
  • Прекращено использование Costura.Fody, которое не оправдало себя на Linux
  • Исправлено поведение файлового потока. Поток теперь разрешает совместное использование для чтения.
  • Реализован более подробный вывод текста исключения в EXE, если исключение произошло на системном уровне
  • Реализован вывод более детального места возникновения ошибки в EXE, если ошибка произошла на уровне кода 1С
  • Реализована корректная загрузка модулей в скомпилированном приложении
    события и вызова подписчиков
  • Исправлена ошибка компилятора, пропускавшего специальным образом составленные операторы завершения блока
  • Исправлена ошибка компиляции и выполнения операторов Прервать и Продолжить из многократно вложенных операторов Попытка
  • Исправлена сборка пакета RPM
  • Обновлена поставляемая версия opm
  • Изменен значок приложения TestApp

v1.2.0

11 Feb 08:18

Choose a tag to compare

Организационные изменения

Состоялся выпуск 64-разрядной сборки. Теперь основные дистрибутивы имеют 2 варианта - x86 и x64 (который по-факту является версией AnyCPU)

32-разрядную сборку рекомендуется применять для взаимодействия с 32-битной версией 1С:Предприятия с помощью COM-Соединителя. В остальных случаях - рекомендуется использовать сборку x64.

С версией 1.2 рекомендуется использовать отладчик версии 0.5.0

Изменения в версии 1.2

Новые возможности

  • Добавлены методы работы с часовыми поясами: ЧасовойПояс, СмещениеСтандартногоВремени, УниверсальноеВремя, МестноеВремя, ПредставлениеЧасовогоПояса, ТекущаяУниверсальнаяДата
  • Добавлены методы ПолучитьБуферДвоичныхДанныхИзHexСтроки, ПолучитьHexСтрокуИзДвоичныхДанных, ПолучитьHexСтрокуИзБуфераДвоичныхДанных
  • Добавлен конструктор объекта ЧтениеТекста на основании Потока
  • Улучшена диагностика места возникновения ошибки в модулях, скомпилированных в EXE
  • Развитие отладчика: в окне просмотра отображаются элементы объектов-коллекций.
  • Развитие отладчика: доступно вычисление значений при наведении мыши на переменную в тексте модуля, а также табло Intermediate
  • Реализованы условные директивы препроцессора Если..Тогда. Стандартными символами являются Linux, MacOS, Windows. При запуске на определенной платформе переменная препроцессора будет иметь значение Истина. Пользовательские директивы можно задать в параметре конфигурации preprocessor.define
  • Выполнен рефакторинг лексического анализатора. Выделена nuget-библиотека OneScript.Language, содержащая лексический анализатор кода на языке 1С. Библиотека распространяется, как экспериментальная.
  • Реализована установка свойств объектов с помощью Рефлектора

Исправление ошибок

  • Улучшена совместимость методов работы с двоичными данными между 1Script и 1С
  • Не работает передача параметров по значению в Выполнить
  • Ошибка загрузчика, вызывающего падение при обращению к глобальному контексту в момент инициализации библиотек
  • Исправлено возникновение ошибки "Не удалось создать защищенный канал TLS/SSL"
  • Методы Сдвинуть ТаблицыЗначений и СпискаЗначений работают циклично (совместимость с 1С)
  • NPE в методе РегулярноеВыражение.Заменить
  • Не работала передача параметров по-умолчанию в методы текущего модуля, вызванные из Выполнить
  • И другие

v1.1.1

11 Feb 08:16

Choose a tag to compare

Организационные изменения

Проект перешел на semantic versioning с трехзначной идентификацией основного номера релиза. Теперь команде станет проще выпускать релизы, а сообществу - идентифицировать уровни изменений.

Изменения в версии 1.1

Новые возможности

  • Добавлена поддерка XML-схем. Реализован класс XMLСхема и ему сопутствующие (спасибо yukon39 за масштабную доработку)
  • Добавлена функциональность "Макетов". Теперь можно упаковывать в EXE не только скриптовый код, но и произвольные данные, а затем обращаться к ним единообразно
  • Оптимизирован метод Свернуть таблицы значений
  • Реализована поддержка dynamic в объектах 1Script. Упрощено встраивание в приложения .NET
  • Реализована локализация выводимых ошибок в зависимости от языка системы. Добавлен конфигурационный параметр systemlanguage в oscript.cfg (спасибо alexkmbk).
  • В СоединениеHTTP всегда используется автоматический редирект. Реализовано свойство РазрешитьАвтоматическоеПеренаправление для управления редиректом (спасибо Vladimir Bondarevskiy)
  • В соединении HTTP реализована автоматическая распаковка ответов, закодированных в gzip (спасибо Vladimir Bondarevskiy)
  • Оптимизирована производительность оператора Новый
  • Реализована часть ранее не реализованных методов в классах работы с двоичными данными
  • Реализовано управление кодировкой ZIP-архивов. Добавлено системное перечисление КодировкаИменФайловВZipФайле
  • Много других мелких улучшений.

Исправление ошибок

Благодаря Michael Rybakin в релизе исправлено множество самых разных ошибок, включая несоответствия поведению 1С на необычных сценариях.

  • Внутреннее представление даты содержит микросекунды и искажает сравнение дат
  • Некорректная работа метода СписокЗначений.СортироватьПоПредставлению
  • Исправлена рефлексия типов при работе под Mono+Linux
  • Повторяюшиеся имена колонок ТаблицыЗначений добавляются в список колонок
  • Метод Массив.Вставить расширяет границы массива при вставке за пределы массива
  • Не работает конструктор объекта ЧтениеДанных и ЗаписьДанных при указании параметров дальше 2-го
  • Отсутствовал конструктор массива по фиксированному массиву
  • Некорректно отображались значения СтрокиТаблицыЗначений в отладчике
  • Поведение метода Удалить структуры не соответствовало 1С при удалении несуществующего свойства
  • Некорректное экранирование символов / и \ при работе с JSON
  • Некорректное поведение методов DataReader.ReadIntoBinaryDataBuffer, DataReader.ReadIntoBinaryDataBuffer(Count), MemoryStream.CloseAndGetBinaryData.
  • Не было реализовано побайтовое сравнение двоичных данных оператором равенства
  • Поведение метода Pow для возведения в степень приведено в соответствие с 1С
  • Литерал даты из одних нулей в 1С распознается, как корректный. Приведено поведение к 1С
  • Строковое представление двоичных данных не работало в Linux. Под Win не соответствовало 1С
  • Функция Формат зависала на некоторых форматных строках
  • Исправлена ошибка функции Цел на больших числах

v1.0.21

24 Sep 14:32

Choose a tag to compare

Изменения в версии 1.0.21

Новые возможности

  • Реализована возможность получать стектрейс при возникновении исключения. См. метод ПолучитьСтекВызовов() объекта ИнформацияОбОшибке
  • Реализован метод глобального контекста ПрочитатьJson (ReadJson).
  • Реализован метод глобального контекста ЗаписатьJSON. В текущей версии обрабатывается только первые два параметра: ЗаписьJSON и Значение.
  • Существенно улучшена совместимость чтения/записи JSON с платформой 1С
  • Развитие возможностей рефлексии для приложений, встраивающих ScriptEngine.dll
  • Развитие рефлектора: поддержка аннотаций, приватных методов, встроенных и пользовательских типов
  • Реализована поддержка параметра СимволыОступа в ЗаписьXML.
  • ЗаписьXML: Реализована поддержка параметра "ДобавлятьBOM"
  • Реализован оператор "Унарный плюс
  • Добавлено свойство "УдаленныйУзел" в TCPСоединение closes #732
  • Строковое представление ДвоичныхДанных в hex-виде (совместимость с 1С)

Оптимизация и исправление ошибок

  • Исправление: Не поддерживалось значение типа single в COMОбъектах
  • Исправлена ошибка: в ЧтениеJSON не обрабатывались значения типа DateTime
  • Исправлено отсутствие экранирования двойных кавычек в объекте ЗаписьJson
  • ЗаписьXML: Исправлен неверный вывод комбинации /
  • Исправлена ошибка: ЗаписатьЦелое16 записывает 4 байта вместо двух
  • Исправлена несовместимая с 1С компиляция литералов дат.
  • Исправлено несовместимое с 1С поведение ф-ии СтрРазделить для пустых строк
  • Исправлена ошибка в методе Вставить класса Соответствие. Не разрешалось опускать параметр Значение.
  • Исправлена ошибка метода ЗаполнитьЗначенияСвойств при указании параметра "Заполняемые свойства"
  • Исправлена ошибка компиляции отрицательных чисел в параметрах по-умолчанию
  • Исправлено обращение к https-сервисам с новыми версиями протокола TLS
  • Ускорен процесс компиляции модулей из-под отладчика IDE

v1.0.20

21 May 10:08

Choose a tag to compare

Изменения в версии 1.0.20

Аннотации

Добавлена возможность применения аннотаций для методов модулей. Аннотации применяются в языке 1С начиная с версии 8.2 и широко известны под именем "Директивы компиляции".
С появлением в платформе 1С "расширнений конфигурации" термин "Аннотация" уже официально появился в описании синтаксиса языка 1С.
Так, например, в расширении конфигурации 1С могут применяться аннотации методов &Перед, &Вместо и &После.

В 1Script аннотации применяются для произвольной разметки методов и/или параметров методов. Установленные аннотации можно прочесть с помощью Рефлектора.
Подробное описание в документации

Получение представления объекта

В модуле скрипта доступен метод ОбработкаПолученияПредставления, похожий по функциональности на аналогичный метод платформы 1С.
Метод принимает на вход 2 параметра:

  • Представление - выходной параметр, новое значение представления
  • СтандартнаяОбработка - флаг отмены стандартной обработки

Прочие изменения

  • Формат проектов переведен на современные веяния .NET
  • Сборка NUGET включает в себя варианты для .NET Framework и .NET Standard
  • Внесены изменения в ядро, позволяющие применять 1Script в многопоточных приложениях наподобие IIS и Kestrel
  • Устранен ряд проблем, усложняющих встраивание 1Script в сторонние приложения в качестве скриптового движка
  • Улучшена работа HTTPСервисов для ASP.NET
  • Добавлен метод ПолучитьТелоКакПоток в классе ОтветHTTP
  • Добавлено получение двоичных данных из XML строки
  • Добавлен параметр ИспользоватьBOM в объект HTTPЗапрос
  • В методы ПеременныеСреды и ПолучитьПеременнуюСреды добавлена Цель - местоположение переменной среды (см. перечисление РасположениеПеременнойСреды)

Оптимизация и исправление ошибок

  • Исправлена работа метода ЗаполнитьЗначенияСвойств для класса Сценарий
  • Метод Сред выдавал ошибку, если второй параметр выводил за пределы строки
  • Исправлены замечания по статическому анализу SonarQube
  • Не работали конструкторы объектов ЧтениеДанных, ЗаписьДанных и ПотокВПамяти
  • Исправлен ряд несовместимых с 1С поведений в необычных/нестандартых ситуациях.
  • Английские синонимы примитивных типов
  • Исправлено падение HTTP-сервисов в многопоточной среде
  • В ряде ситуаций некорректно работали неуправляемые COM-объекты
  • Исправлено обращение к локальным переменным внутри Выполнить
  • Нельзя было задать свойства Keep-Alive и Close в HTTPЗапросе
  • Исправлена ошибка неверного значения по умолчанию для параметра "ВключаяПустые" метода СтрРазделить
  • Добавлен алиас StringStartsWith. StrStartWith объявлен устаревшим
  • Исправлена работа exe от oscript -make под mono
  • Ряд прочих небольших исправлений