Skip to content

Latest commit

 

History

History
2081 lines (1634 loc) · 199 KB

reference.md

File metadata and controls

2081 lines (1634 loc) · 199 KB

Справочник API OneScriptJS

Единый справочник по стандартной библиотеке и объектам движка: глобальные функции, типы, объекты и перечисления — с параметрами, возвращаемыми значениями и свойствами. Источник истины — код в src/: справочник описывает реализованное поведение, а не эталонный C#-OneScript. Примеры использования — в README и examples/, описание синтаксиса языка — в bsl-surface.md. При изменении API обновляйте этот справочник в том же изменении (правило 9 в AGENTS.md).

Как читать

  • Имя(Параметр: Тип) — обязательный параметр; Параметр? — необязательный; … — произвольное число аргументов. Столбец «Возвращает»: Тип или — (значения нет).
  • Имена функций, методов и свойств регистронезависимы. В таблицах русское имя — первым, английский алиас — через / (Сообщить / Message). В заголовках разделов через / указано рабочее английское имя, если оно есть у API (для некоторых типов английское имя — только перевод; это оговорено в разделе).
  • Пометки окружения: [Node] — только Node.js/CLI; [браузер] — только браузерная сборка; без пометки — общий stdlib (везде).
  • Свойства объектов: «Доступ» — чтение, запись или чтение/запись. Объекты создаются через Новый <Тип>(…); индексация и итерация описаны под таблицами.
  • Любое — значение любого типа; Объект — объект BSL.
  • Неочевидные ограничения и расхождения с 1С даны примечаниями > под таблицами.

Содержание

Функции

Объекты и типы

Интеграции, браузер и тестирование

Вывод, пауза и базовые значения

Все функции ниже входят в общий stdlib и доступны и в Node, и в браузере, поэтому пометки окружения не нужны. Имена функций регистронезависимы (сообщить = Сообщить).

Функция Параметры Возвращает Описание
Сообщить / Message Текст?: Любое, Статус?: СтатусСообщения — Выводит текст в консоль; уровень задаёт статус.
Новый / New Тип: Строка | Тип, Аргументы…: Любое Объект Динамический конструктор зарегистрированного типа.
Приостановить / Sleep Миллисекунды?: Число — Кооперативная пауза текущего логического потока.
КраткоеПредставлениеОшибки / BriefErrorDescription Ошибка: ИнформацияОбОшибке | Любое Строка Краткое описание ошибки.
ПодробноеПредставлениеОшибки / DetailErrorDescription Ошибка: ИнформацияОбОшибке | Любое Строка Подробное описание ошибки.

Сообщить приводит Текст к строке (без аргумента — пустая строка). Статус — значение перечисления СтатусСообщения (см. Перечисления): Информация → console.info, Внимание → console.warn, Важное/ОченьВажное → console.error, остальные значения и не-перечисления → console.log. В CLI warn/error идут в stderr. Новый в форме функции: Новый("Массив", 3) или Новый(Тип("Массив"), 3); в форме оператора: Новый Массив(3). Имя типа регистронезависимо; неизвестное имя — исключение Тип '<имя>' не найден. Доступны типы из разделов Коллекции, Двоичные данные: объекты, Интеграции: HTTP, Инструменты, а также классы подключённых модулей. Приостановить — асинхронная пауза в миллисекундах (по умолчанию 0), приостанавливает только текущий логический поток: страница и другие фоновые задания продолжают работу. Отрицательное значение — исключение «Неверное значение аргумента: Приостановить», нечисловое — «Нельзя преобразовать к Числу». В xUnit-раннере не поддерживается (см. Тестирование). КраткоеПредставлениеОшибки и ПодробноеПредставлениеОшибки возвращают одно и то же: строку Описание перехваченного объекта ИнформацияОбОшибке (см. Встроенные функции языка), для прочих значений — их строковое представление. Вложенные причины (Cause) не реализованы.

Строки

Позиции символов — с 1, как в 1С; длина и позиции считаются в кодовых единицах UTF-16.

Функция Параметры Возвращает Описание
Строка / String Значение?: Любое Строка Строковое представление значения; без аргумента — пустая строка.
Число / Number Значение: Любое Число Приведение к числу: булево → 0/1, Null/Неопределено/пустая строка → 0, строка — через Number.
СтрДлина / StrLen Строка: Строка Число Длина строки.
ВРег / Upper Строка: Строка Строка Верхний регистр.
НРег / Lower Строка: Строка Строка Нижний регистр.
СокрЛП / TrimAll Строка: Строка Строка Убирает пробельные символы с обоих концов.
СокрЛ / TrimL Строка: Строка Строка Убирает пробельные символы слева.
СокрП / TrimR Строка: Строка Строка Убирает пробельные символы справа.
ПустаяСтрока / IsBlankString Строка: Строка Булево Истина, если строка пуста или состоит из пробельных символов.
Лев / Left Строка: Строка, Длина: Число Строка Первые Длина символов.
Прав / Right Строка: Строка, Длина: Число Строка Последние Длина символов.
Сред / Mid Строка: Строка, Позиция: Число, Длина: Число Строка Подстрока с позиции Позиция (с 1) длиной Длина.
Найти / Find Строка: Строка, Подстрока: Строка Число Позиция первого вхождения (с 1) или 0.
СтрЗаменить / StrReplace Строка: Строка, Поиск: Строка, Замена: Строка Строка Замена всех вхождений.
СтрЧислоВхождений / StrOccurrenceCount Строка: Строка, Подстрока: Строка Число Число вхождений; пустая подстрока → 0.
СтрНачинаетсяС / StrStartsWith Строка: Строка, Начало: Строка Булево Начинается ли строка с указанной подстроки.
СтрЗаканчиваетсяНа / StrEndsWith Строка: Строка, Конец: Строка Булево Заканчивается ли строка указанной подстрокой.
СтрРазделить / StrSplit Строка: Строка, Разделитель: Строка Массив Делит строку на Массив; пустой разделитель — по символам.
СтрСоединить / StrJoin Строки: Массив, Разделитель?: Строка Строка Соединяет элементы массива через разделитель (по умолчанию пустой).
Символ / Char Код: Число Строка Символ по коду UTF-16.
КодСимвола / CharCode Строка: Строка, Позиция?: Число Число Код символа в позиции (с 1, по умолчанию 1).
НСтр / NStr Строка: Строка Строка Извлекает текст ru='…' из строки локализации.
ТРег / Title Строка: Строка Строка Первая буква каждого слова заглавная, остальные строчные.
СтрЧислоСтрок / StrLineCount Строка: Строка Число Число строк (разделитель — LF).
СтрПолучитьСтроку / StrGetLine Строка: Строка, НомерСтроки: Число Строка Строка по номеру (с 1).
СтрНайти / StrFind Строка: Строка, Подстрока: Строка, Направление?: НаправлениеПоиска, НачальнаяПозиция?: Число, НомерВхождения?: Число Число Позиция N-го вхождения (с 1) или 0; умеет искать с конца.
СтрШаблон / StrTemplate Шаблон: Строка, Значение1…: Любое Строка Подставляет аргументы вместо %1, %2, …

Строка(Дата) даёт ДД.ММ.ГГГГ Ч:ММ:СС (час без ведущего нуля, компоненты по UTC); булево — Истина/Ложь; Null/Неопределено — пустая строка; объекты — собственное представление (Тип, перечисления, UUID, СписокЗначений, Обещание, Сценарий), у остальных — JavaScript-представление ([object Object] для Массив, Структура и т. п.). Число бросает исключение для нечисловой строки (Нельзя преобразовать к Числу: 'abc') и для даты/объекта. Лев/Прав/Сред используют slice: некорректные длины дают пустую или обрезанную строку, исключений нет; Сред без Длина возвращает пустую строку. Найти ищет только с начала; третий аргумент (НаправлениеПоиска) не поддерживается — для поиска с конца используйте СтрНайти. Найти(Строка, "") = 1, Найти(Строка, "нет") = 0. СтрРазделить не поддерживает отключение пустых элементов: пустые части сохраняются ("a,,b" → 3 элемента). СтрСоединить преобразует элементы через Строка; первый аргумент должен быть объектом (обычно Массив), не-объект — исключение, объект без итерации даёт пустую строку. СтрНайти: пустая подстрока → 1; пустая строка при непустой подстроке → 0; направление по умолчанию СНачала (можно НаправлениеПоиска.СКонца или строкой); НачальнаяПозиция по умолчанию 1 (при поиске с конца — длина строки), 0 трактуется как «не задано», отрицательное или больше длины — исключение «Недопустимое значение начальной позиции»; НомерВхождения по умолчанию 1, значение 0 — исключение, отрицательное — 0. СтрШаблон заменяет только метки %N (N ≥ 1); отсутствующий аргумент даёт пустую строку, %% спецпоследовательностью не является. КодСимвола вне границ строки возвращает NaN. НСтр понимает только язык ru и удвоенные кавычки '' внутри значения; при отсутствии ru возвращает исходную строку. СтрЧислоСтрок/СтрПолучитьСтроку делят только по LF; Возврат каретки (CR) в конце строки сохраняется. СтрПолучитьСтроку вне диапазона возвращает пустую строку.

Числа, математика и даты

Функция Параметры Возвращает Описание
Мин / Min Значения…: Число Число Минимум аргументов.
Макс / Max Значения…: Число Число Максимум аргументов.
Окр / Round Число: Число Число Округление до целого.
Цел / Int Число: Число Число Отбрасывание дробной части (к нулю).
Pow Основание: Число, Степень: Число Число Возведение в степень с decimal-точностью 1С.
ТекущаяДата / CurrentDate — Дата Текущий момент.
ТекущаяУниверсальнаяДата / CurrentUniversalDate — Дата Текущий момент (реализация совпадает с ТекущаяДата).
Дата / Date Год?: Число, Месяц?: Число, День?: Число, Час?: Число, Минута?: Число, Секунда?: Число Дата Конструирует дату из числовых компонент.

Мин/Макс — variadic; аргументы приводятся к числу (Число); без аргументов возвращают Infinity/-Infinity. Окр/Цел принимают только одно значение: разрядность и режим округления 1С не поддерживаются (второй аргумент игнорируется). Окр округляет половину в сторону +∞ (JS Math.round), поэтому Окр(-2.5) = -2, а Окр(2.5) = 3. Pow — единственная функция раздела без русского алиаса. Целая неотрицательная степень считается точно в decimal (до 29 значащих цифр); в остальных случаях — Math.pow с округлением до 15 значащих цифр. Дата: месяц — с 1, по умолчанию месяц и день = 1, время = 0. Компоненты трактуются как UTC и так же выводятся (Строка), поэтому Строка(Дата(2026, 1, 5, 10, 30, 0)) = 05.01.2026 10:30:00. Год задавайте явно: без него получается 1900 (особенность Date.UTC(0, …)); для дат из литералов ('20260101') конструктор не нужен. ТекущаяДата и ТекущаяУниверсальнаяДата обе возвращают new Date() — один и тот же текущий момент; при выводе компоненты берутся по UTC (для московского времени сдвиг −3 часа).

Формат

Функция Параметры Возвращает Описание
Формат / Format Значение: Любое, ФорматнаяСтрока?: Строка Строка Форматирует число, дату или булево по форматной строке.

Форматная строка — параметры вида Имя=Значение, разделённые ;; порядок любой, неизвестные параметры игнорируются, имена параметров чувствительны к регистру (ЧДЦ, а не чдц). Строковые значения можно брать в одинарные или двойные кавычки. Без форматной строки (или пустой) возвращается Строка(Значение).

Параметры чисел

Параметр Значение Действие
ЧЦ целое Общее число разрядов; при переполнении целая и дробная части заменяются девятками; работает вместе с ЧДЦ.
ЧДЦ целое Число знаков после запятой; отрицательное → 0; без параметра число не округляется.
ЧН строка Текст для нулевого значения; без параметра ноль форматируется как обычно.
ЧРД символ Разделитель дробной части (по умолчанию .; при локали ru… — ,).
ЧРГ символ Разделитель групп разрядов (по умолчанию ,; при локали ru… — неразрывный пробел).
ЧГ 0 ЧГ=0 отключает группировку по 3 разряда; любое другое значение включает.
ЧВН — Дополнять целую часть нулями до ЧЦ.
ЧО 0–4 Вид отрицательного числа: 0 → (n), 2 → - n, 3 → n-, 4 → n -; 1 и иное → -n.
Л локаль ru… → , и неразрывный пробел; иначе . и ,.

Параметры булева

Параметр Действие
БИ Текст для Истина (по умолчанию Истина).
БЛ Текст для Ложь (по умолчанию Ложь).

Параметры дат

Параметр Значение Действие
ДФ шаблон Собственный формат даты (токены — ниже).
ДЛФ Д, В, ДВ Локальный формат: только дата, только время, дата и время.

В ДФ поддерживаются токены д, дд, М, ММ, гг, гггг, Ч, ЧЧ (24 часа), м, мм, с, сс и эквивалентные латинские (d, M, y, H, m, s); прочие символы выводятся как есть. Токены ч/h (час без ведущего нуля) не поддерживаются — выводятся буквально; используйте Ч/H. Компоненты даты берутся по UTC. Числа без ЧДЦ выводятся как String(число) без округления (например, 0.1 + 0.2 → 0.30000000000000004); с ЧДЦ — округление half-away-from-zero. ЧЦ без ЧВН не дополняет целую часть нулями. ЧГ поддерживает только включение/выключение группировки по 3 разряда — настраиваемый размер групп не реализован; ДП (текст пустой даты) и ДД (длинный формат даты) не поддерживаются. Для булева используются только БИ/БЛ, остальные параметры игнорируются. Для строк и прочих типов форматная строка игнорируется — возвращается Строка(Значение).

JSON

Функция Параметры Возвращает Описание
ЗаписатьJSON / WriteJSON Значение: Любое Строка Сериализует значение в JSON-строку.
ПрочитатьJSON / ReadJSON Строка: Строка Любое Разбирает JSON-строку в значение.

При записи:

BSL-значение JSON
Структура, ФиксированнаяСтруктура объект; ключи — в нижнем регистре
Массив и другие объекты с итерацией элементов массив
ТаблицаЗначений массив массивов (строка → массив значений колонок)
Соответствие массив ключей (значения не сериализуются)
Число, Строка, Булево соответствующее JSON-значение
Дата строка ISO 8601 (UTC), например "2026-01-05T10:30:15.000Z"
Null, Неопределено null
СписокЗначений массив элементов; пустой → [], непустой → исключение (ЭлементСпискаЗначений не сериализуется)
прочие объекты (УникальныйИдентификатор и т. п.) исключение ЗаписатьJSON: тип '<имя>' не сериализуется

При чтении: JSON-объект → Структура, массив → Массив, число → Число, строка → Строка, true/false → Булево, null → Null.

ПрочитатьJSON принимает только строку; при синтаксической ошибке бросает исключение. Ключи прочитанных объектов хранятся в нижнем регистре, доступ к ним регистронезависим (как у Структуры). Объектные ЗаписьJSON/ЧтениеJSON (с потоком/параметрами) не реализованы — только функции с одним аргументом. Непустой СписокЗначений и объекты без итерации элементов не сериализуются; для объекта используйте Структуру.

Битовые операции

Функция Параметры Возвращает Описание
ПобитовоеИ / BitAnd Значение1: Число, Значение2: Число Число Поразрядное И.
ПобитовоеИли / BitOr Значение1: Число, Значение2: Число Число Поразрядное ИЛИ.
ПобитовоеНе / BitNot Значение: Число Число Поразрядное НЕ.
ПобитовоеИНе / BitAndNot Значение1: Число, Значение2: Число Число Значение1 И НЕ Значение2.
ПобитовоеИсключительноеИли / BitXor Значение1: Число, Значение2: Число Число Поразрядное исключающее ИЛИ.
ПобитовыйСдвигВлево / BitShiftLeft Значение: Число, Смещение: Число Число Сдвиг влево на Смещение бит.
ПобитовыйСдвигВправо / BitShiftRight Значение: Число, Смещение: Число Число Сдвиг вправо на Смещение бит.
ПроверитьБит / CheckBit Значение: Число, НомерБита: Число Булево Установлен ли бит с номером НомерБита.
УстановитьБит / SetBit Значение: Число, НомерБита: Число, Бит: Число Число Устанавливает бит при Бит=1, иначе сбрасывает.
ПроверитьПоБитовойМаске / CheckByBitMask Значение: Число, Маска: Число Булево Все биты маски установлены в значении.

Все аргументы и результаты — 32-битные беззнаковые (uint32): значения приводятся по модулю 2³², результат в диапазоне 0…4294967295 (например, ПобитовоеНе(0) = 4294967295, ПобитовоеИ(-1, 5) = 5). Смещение у сдвигов — целое 0…31, иначе исключение «Неверное значение аргумента: <значение>». У ПроверитьБит/УстановитьБит номер бита не проверяется: используется JS-сдвиг по модулю 32 (ПроверитьБит(5, 32) = ПроверитьБит(5, 0), УстановитьБит(0, 33, 1) = 2). УстановитьБит устанавливает бит только при Бит ровно 1; любое другое значение сбрасывает бит.

Типы значений

Функция Параметры Возвращает Описание
Тип / Type ИмяТипа: Строка | Тип Тип Создаёт значение типа по имени.
ТипЗнч / TypeOf Значение: Любое Тип Возвращает тип значения.

Тип понимает двуязычные имена и приводит их к каноническому русскому:

Принимаемые имена Каноническое имя
Число, Number Число
Строка, String Строка
Булево, Boolean Булево
Дата, Date Дата
Неопределено, Undefined Неопределено
Null Null
Массив, Array Массив
Структура, Structure Структура
Соответствие, Map Соответствие
ФиксированныйМассив, FixedArray ФиксированныйМассив
ФиксированнаяСтруктура, FixedStructure ФиксированнаяСтруктура
ФиксированноеСоответствие, FixedMap ФиксированноеСоответствие
Тип, Type Тип
ИнформацияОбОшибке, ErrorInfo ИнформацияОбОшибке
УникальныйИдентификатор, UUID УникальныйИдентификатор

Имена сравниваются по каноническому виду и регистронезависимы только в этом списке: Тип("число") = Тип("Number") — истина. Незнакомое имя не является ошибкой: Тип("Фу") вернёт тип Фу, при этом Тип("Фу") <> Тип("фу"). Строка(Тип("Массив")) = Массив; у значения Тип нет свойств и методов, индексация недоступна. Подробнее о значении Тип — Значения и типы. ТипЗнч для примитивов возвращает Число, Строка, Булево, Дата, Null, Неопределено; для объектов — собственное имя типа (Массив, Структура, ТаблицаЗначений, УникальныйИдентификатор, Сценарий, Обещание, ИнформацияОбОшибке и т. д.); для перечисления — имя перечисления (например, СтатусСообщения); для самого типа — Тип.

Двоичные данные и кодировки

Глобальные функции преобразования между строками, Hex- и Base64-представлениями, буферами (БуферДвоичныхДанных/BinaryDataBuffer) и неизменяемыми данными (ДвоичныеДанные). Объекты этих типов, их конструкторы, свойства и методы описаны в разделе Двоичные данные: объекты.

Функция Параметры Возвращает Описание
ПолучитьБуферДвоичныхДанныхИзСтроки / GetBinaryDataBufferFromString Текст: Строка, Кодировка?: КодировкаТекста | Строка, ДобавлятьBOM?: Булево БуферДвоичныхДанных Кодирует строку в байты; BOM добавляется только при ДобавлятьBOM = Истина
ПолучитьСтрокуИзБуфераДвоичныхДанных / GetStringFromBinaryDataBuffer Буфер: БуферДвоичныхДанных, Кодировка?: КодировкаТекста | Строка Строка Декодирует байты буфера; BOM распознаётся автоматически
ПолучитьДвоичныеДанныеИзСтроки / GetBinaryDataFromString Текст: Строка, Кодировка?: КодировкаТекста | Строка, ДобавлятьBOM?: Булево ДвоичныеДанные Кодирует строку в ДвоичныеДанные; правила BOM те же, что у буфера
ПолучитьСтрокуИзДвоичныхДанных / GetStringFromBinaryData Данные: ДвоичныеДанные, Кодировка?: КодировкаТекста | Строка Строка Декодирует двоичные данные в строку
ПолучитьБуферДвоичныхДанныхИзHexСтроки / GetBinaryDataBufferFromHexString HexСтрока: Строка БуферДвоичныхДанных Разбирает Hex-текст; символы не из Hex-алфавита пропускаются, нечётная длина — ошибка
ПолучитьHexСтрокуИзБуфераДвоичныхДанных / GetHexStringFromBinaryDataBuffer Буфер: БуферДвоичныхДанных Строка Hex-представление в верхнем регистре
ПолучитьДвоичныеДанныеИзHexСтроки / GetBinaryDataFromHexString HexСтрока: Строка ДвоичныеДанные Hex-текст → двоичные данные
ПолучитьHexСтрокуИзДвоичныхДанных / GetHexStringFromBinaryData Данные: ДвоичныеДанные Строка Двоичные данные → Hex-строка (верхний регистр)
ПолучитьБуферДвоичныхДанныхИзBase64Строки / GetBinaryDataBufferFromBase64String Base64Строка: Строка БуферДвоичныхДанных Разбирает Base64; пробельные символы игнорируются, неверные данные дают пустой буфер
ПолучитьBase64СтрокуИзБуфераДвоичныхДанных / GetBase64StringFromBinaryDataBuffer Буфер: БуферДвоичныхДанных Строка Base64-представление байтов
ПолучитьДвоичныеДанныеИзBase64Строки / GetBinaryDataFromBase64String Base64Строка: Строка ДвоичныеДанные Base64 → двоичные данные
ПолучитьBase64СтрокуИзДвоичныхДанных / GetBase64StringFromBinaryData Данные: ДвоичныеДанные Строка Двоичные данные → Base64-строка
ПолучитьБуферДвоичныхДанныхИзHexБуфераДвоичныхДанных / GetBinaryDataBufferFromHexBinaryDataBuffer Буфер: БуферДвоичныхДанных БуферДвоичныхДанных Байты буфера трактуются как ASCII Hex-текст; байты не из Hex-алфавита пропускаются, нечётный хвост отбрасывается
ПолучитьHexБуферДвоичныхДанныхИзБуфераДвоичныхДанных / GetHexBinaryDataBufferFromBinaryDataBuffer Буфер: БуферДвоичныхДанных БуферДвоичныхДанных Hex-текст (верхний регистр) в байтах UTF-8 без BOM
ПолучитьДвоичныеДанныеИзHexДвоичныхДанных / GetBinaryDataFromHexBinaryData Данные: ДвоичныеДанные ДвоичныеДанные ASCII Hex-текст из данных → байты
ПолучитьHexДвоичныеДанныеИзДвоичныхДанных / GetHexBinaryDataFromBinaryData Данные: ДвоичныеДанные ДвоичныеДанные Hex-текст (верхний регистр) в байтах UTF-8 без BOM
ПолучитьБуферДвоичныхДанныхИзBase64БуфераДвоичныхДанных / GetBinaryDataBufferFromBase64BinaryDataBuffer Буфер: БуферДвоичныхДанных БуферДвоичныхДанных Байты буфера трактуются как Base64-текст UTF-8 и декодируются
ПолучитьBase64БуферДвоичныхДанныхИзБуфераДвоичныхДанных / GetBase64BinaryDataBufferFromBinaryDataBuffer Буфер: БуферДвоичныхДанных БуферДвоичныхДанных Base64-текст в байтах UTF-8 без BOM
ПолучитьДвоичныеДанныеИзBase64ДвоичныхДанных / GetBinaryDataFromBase64BinaryData Данные: ДвоичныеДанные ДвоичныеДанные Base64-текст из данных → байты
ПолучитьBase64ДвоичныеДанныеИзДвоичныхДанных / GetBase64BinaryDataFromBinaryData Данные: ДвоичныеДанные ДвоичныеДанные Base64-текст в байтах UTF-8 без BOM
ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных / GetBinaryDataBufferFromBinaryData Данные: ДвоичныеДанные БуферДвоичныхДанных Копия байтов в изменяемый буфер
ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных / GetBinaryDataFromBinaryDataBuffer Буфер: БуферДвоичныхДанных ДвоичныеДанные Копия байтов буфера в неизменяемые данные
СоединитьДвоичныеДанные / ConcatBinaryData Части: Массив ДвоичныеДанные Конкатенация массива элементов ДвоичныеДанные (другой тип элемента — ошибка)
РазделитьДвоичныеДанные / SplitBinaryData Данные: ДвоичныеДанные, РазмерЧасти: Число Массив Делит данные на части указанного размера (последняя может быть короче); РазмерЧасти <= 0 — ошибка

Кодировки и BOM

Параметр Кодировка принимает значение перечисления КодировкаТекста / TextEncoding или строковую метку (регистронезависимо); по умолчанию — UTF-8.

Значение Кодировка Кодировка Запись Чтение
КодировкаТекста.Системная / System UTF-8 да да
КодировкаТекста.UTF8 / UTF8 UTF-8 да да
"utf-8", "utf8" UTF-8 да да
КодировкаТекста.UTF8БезBOM / UTF8NoBOM UTF-8 без BOM да; BOM не добавляется даже при ДобавлятьBOM = Истина да
КодировкаТекста.UTF16 / UTF16 UTF-16LE да да
"utf-16", "utf16", "utf-16le" UTF-16LE да да
"utf-16be" UTF-16BE усечение до младшего байта да
КодировкаТекста.ANSI / ANSI windows-1251 усечение до младшего байта да
"windows-1251", "cp1251" windows-1251 усечение до младшего байта да
КодировкаТекста.OEM / OEM cp866 усечение до младшего байта да
"cp866", "ibm866" cp866 усечение до младшего байта да
не задано UTF-8 да да

Запись корректно реализована только для UTF-8 и UTF-16LE. Для остальных кодировок (ANSI, OEM, UTF-16BE) код каждого символа усекается до младшего байта, поэтому кириллица будет записана неверно; для кириллицы используйте UTF-8 или UTF-16. Чтение ANSI/OEM/UTF-16BE выполняется штатным TextDecoder и корректно.

При чтении BOM распознаётся автоматически и переопределяет запрошенную кодировку: UTF-8 (EF BB BF), UTF-16LE (FF FE), UTF-16BE (FE FF), UTF-32LE (FF FE 00 00). Для кодировок без преамбулы (например, windows-1251) BOM не отбрасывается и попадает в результат как символ.

ДобавлятьBOM действует только при записи и только при значении Истина.

РазделитьДвоичныеДанные рассчитывает на целый положительный размер части; при дробном значении границы частей округляются.

Файлы (только Node)

Файловые функции [Node] регистрируются только в Node/CLI-контексте (createNodeGlobalContext); в браузерной сборке и в createGlobalContext() их нет (вызов — ошибка «Неизвестная функция»).

Функция Параметры Возвращает Описание
ОбъединитьПути / PathCombine Часть: Строка, … Строка Склеивает части пути через node:path.join: пустые части игнорируются, .. нормализуется; без аргументов — "."
ЧтениеТекста / ReadText Путь: Строка Строка Читает файл целиком как UTF-8; BOM не удаляется (остаётся символом U+FEFF)
ЗаписьТекста / WriteText Путь: Строка, Текст: Строка — Записывает строку в UTF-8 без BOM, перезаписывая файл; каталог должен существовать
ЗагрузитьСценарий / LoadScript Путь: Строка Сценарий Читает файл, снимает BOM, исполняет тело и возвращает объект Сценарий

Относительные пути разрешаются от текущего рабочего каталога процесса (CWD), а не от каталога исполняемого скрипта. Импорты #Использовать внутри сценария, наоборот, разрешаются относительно файла сценария (см. Сценарии и модули).

Ошибки файловой системы (ENOENT и др.) — обычные исключения исполнения: ловятся Попытка/Исключение, текст доступен через ОписаниеОшибки().

ЗагрузитьСценарий создаёт новый экземпляр сценария при каждом вызове: тело исполняется сразу, экспортные методы и переменные доступны через объект, неэкспортные — нет. Второй параметр (Структура параметров) не поддерживается — ошибка «Второй параметр ЗагрузитьСценарий (Структура) не поддерживается». Свойство Источник загруженного сценария — абсолютный путь к файлу.

Сценарии и модули

Функции загрузки сценариев

Функция Параметры Возвращает Описание
ЗагрузитьСценарийИзСтроки / LoadScriptFromString Исходник: Строка, Имя?: Строка Сценарий Разбирает и исполняет исходник в новом сценарии; Имя задаёт путь сценария и базу разрешения его импортов (пустая строка = не задано)
ТекущийСценарий / CurrentScript — Сценарий Текущий исполняемый сценарий: внутри тела или метода загруженного сценария — он сам, иначе сценарий, запущенный через run()/CLI
СтартовыйСценарий / StartupScript — Сценарий Сценарий, переданный в run()/CLI; не меняется при загрузке других сценариев

ЗагрузитьСценарийИзСтроки доступна везде (stdlib). Импорты внутри динамического сценария разрешаются относительно Имя (или текущего сценария): в Node — с чтением с диска, в браузере — только из предзагруженных источников (недостающий файл — ошибка «Файл не найден»). Если у контекста нет загрузчика модулей (например, createGlobalContext()), импорт в динамическом сценарии — ошибка «Импорт файлов не поддерживается текущим контекстом исполнения».

ТекущийСценарий().Источник возвращает путь, переданный при запуске/загрузке, без нормализации: в CLI — аргумент как есть (может быть относительным), у ЗагрузитьСценарийИзСтроки — переданное Имя, у ЗагрузитьСценарий — абсолютный путь.

Загрузка файла с диска — это ЗагрузитьСценарий (только Node), см. Файлы (только Node). Модули, подключаемые директивой #Использовать, — другой механизм (ниже).

Объект Сценарий

Возвращается функциями загрузки сценариев и функциями текущего/стартового сценария; представляет исполненный модуль BSL: экспортные методы вызываются как методы объекта, экспортные переменные — как свойства. Основные свойства: Источник/Source, Каталог/Directory, Имя/Name (только чтение) и экспортные переменные модуля (чтение/запись). Полное описание типа, свойств и Строка(Сценарий) — в разделе Сценарий.

Директива #Использовать

Форма Синтаксис Описание
Импорт файла #Использовать "<путь>" Подключает файл как модуль-синглтон (обращение по имени файла) или как класс (ПриСозданииОбъекта, экземпляры через Новый)
Встроенная библиотека #Использовать asserts No-op: Ожидаем уже доступен глобально

Путь импорта — относительно текущего файла или от / (корень ФС в Node, корень сервера в браузере). В Node файлы читаются с диска, в браузере — через fetch; кеш — на один запуск, с защитой от циклов. Порядок секций модуля: #Использовать → Перем → методы → исполняемый код; импорт после кода — ошибка. Поиск библиотек по имени (lib.config, OSCRIPT_LIB) не поддерживается. В коде Выполнить/Вычислить директивы # не обрабатываются.

Встроенные функции языка

Реализованы интерпретатором (src/runtime/interpreter.ts) и поддерживаются парсером.

Функция/оператор Синтаксис Возвращает Описание
Выполнить / Execute Выполнить <Исходник: Строка>; — Исполняет операторы из строки в текущей области видимости
Вычислить / Eval Вычислить(<Выражение: Строка>) Любое Вычисляет выражение в текущей области видимости
ВызватьИсключение / Raise ВызватьИсключение [<Значение>]; — Бросает исключение; без аргумента перевыбрасывает текущее
ОписаниеОшибки / ErrorDescription ОписаниеОшибки() Строка Текст текущего исключения; вне блока Исключение — ""
ИнформацияОбОшибке / ErrorInfo ИнформацияОбОшибке() ИнформацияОбОшибке Объект сведений о текущем исключении
ВызватьСобытие / RaiseEvent ВызватьСобытие(<ИмяСобытия: Строка>[, <Параметры?: Массив>]) — Вызывает подписчиков события на объекте текущего модуля
ДобавитьОбработчик / AddHandler ДобавитьОбработчик <Источник>.<Событие>, <Обработчик>; — Подписывает обработчик на событие
УдалитьОбработчик / RemoveHandler УдалитьОбработчик <Источник>.<Событие>, <Обработчик>; — Отписывает обработчик от события
ЭтотОбъект / ThisObject ЭтотОбъект Объект Объект текущего модуля (для подписки и объектной формы обработчика)

Выполнить/Вычислить работают в текущей области видимости: видят локальные переменные и методы модуля. Методы, объявленные в Выполнить, добавляются в модуль. Директивы # в динамическом коде не поддерживаются; ошибки разбора — исключения исполнения (ловятся Попытка, текст начинается с «Ошибка разбора:»). Неизвестное имя в Вычислить даёт Неопределено, а не ошибку. Возврат вне метода — ошибка.

ВызватьИсключение без аргумента допустимо только внутри блока Исключение (иначе ошибка разбора). Если аргумент — ИнформацияОбОшибке, исключение перевыбрасывается с его описанием. Свойства объекта: Описание/Description, ПодробноеОписаниеОшибки/DetailErrorDescription (то же значение), Причина/Cause (всегда Null); подробнее — в разделе ИнформацияОбОшибке / ErrorInfo.

Формы события: Источник.Событие или Источник["Событие"]. Формы обработчика: имя локального метода (находит и неэкспортный метод текущего модуля), Объект.Метод или Объект["Метод"] (объектная форма требует экспортного метода — в том числе для ЭтотОбъект; иначе при подписке ошибка «Метод объекта не обнаружен»). Источник должен быть объектом, иначе — ошибка исполнения.

Обработчики вызываются синхронно в порядке подписки. Повторная подписка той же пары (источник, событие, объект, метод) не дублирует вызов; отписка от отсутствующей подписки — не ошибка. Второй аргумент ВызватьСобытие — коллекция, элементы которой передаются обработчикам позиционными аргументами; без него обработчики вызываются без параметров. Исключение в обработчике доходит до кода, вызвавшего событие.

Имена Вычислить, ОписаниеОшибки, ИнформацияОбОшибке, ВызватьСобытие обрабатываются интерпретатором до поиска методов и глобальных функций — пользовательские методы с такими именами не будут вызваны.

Система и окружение

Функция Параметры Возвращает Описание
ПеременныеСреды / EnvironmentVariables — Соответствие Снимок переменных среды процесса: ключи и строковые значения
ПолучитьПеременнуюСреды / GetEnvironmentVariable Имя: Строка Строка | Неопределено Значение переменной или Неопределено, если её нет
УстановитьПеременнуюСреды / SetEnvironmentVariable Имя: Строка, Значение: Любое — Задаёт переменную (значение приводится к строке); Неопределено/Null удаляют её

Область действия — только текущий процесс (РасположениеПеременнойСреды.Процесс). Параметра области у функций нет; значения Пользователь/Машина перечисления РасположениеПеременнойСреды / EnvironmentVariableTarget не поддерживаются. Изменения видны дочерним процессам, в том числе HTTP-транспорту Node.

[браузер] process отсутствует: ПеременныеСреды() возвращает пустое Соответствие, ПолучитьПеременнуюСреды() — Неопределено, УстановитьПеременнуюСреды() — no-op (без ошибки).

Те же операции доступны методами объекта СистемнаяИнформация/SystemInfo (ПеременныеСреды, ПолучитьПеременнуюСреды, УстановитьПеременнуюСреды, ПолучитьПутьПапки); описание объекта — в разделе СистемнаяИнформация / SystemInfo.

Коллекции

Коллекции стандартной библиотеки создаются через Новый <Тип> и доступны и в Node, и в браузере. Общее для всех: доступ к элементам — Коллекция[Индекс], к именованным свойствам — Объект.Свойство, вызов методов — Объект.Метод(…). Для Каждого обходит коллекцию в порядке добавления; исключение — Структура и Соответствие, где обход даёт ключи. Фиксированные варианты после создания доступны только для чтения. Про Тип/ТипЗнч и имена типов — см. Типы значений.

Массив / Array

Создание: Новый Массив / Новый Array — пустой массив; Новый Массив(Размер1, Размер2, …) — многомерный массив с заданными размерами (размерности — числа, элементы заполняются Неопределено); Новый Массив(ДругойМассив) — поверхностная копия массива.

Свойства

Свойство Тип Доступ Описание
— — — Предопределённых свойств нет

Методы

Метод Параметры Возвращает Описание
Добавить / Add Значение: Произвольный — Добавляет элемент в конец
Удалить / Delete Индекс: Число — Удаляет элемент по индексу, остальные сдвигаются
Очистить / Clear — — Удаляет все элементы
Найти / Find Значение: Произвольный Число, Неопределено Индекс первого элемента, равного значению; Неопределено, если элемент не найден
Количество / Count — Число Текущее число элементов
ВГраница / UBound — Число Верхняя граница индексов, Количество() - 1; у пустого массива -1

Индексация: М[Индекс] — чтение и запись, индексы с 0; для многомерного — М[0][0]. Итерация: Для Каждого Элемент Из М.

Границы индексов не проверяются: чтение М[Индекс] за пределами даёт Неопределено, запись за пределами расширяет массив, Удалить с несуществующим индексом ничего не делает. Новый Массив(5) создаёт 5 элементов Неопределено, а не массив из одного числа 5. Новый Массив(ДругойМассив) копирует только верхний уровень: вложенные массивы общие с исходным; при создании по размерностям вложенные массивы — обычные Массив.

ФиксированныйМассив / FixedArray

Создание: как у Массива — Новый ФиксированныйМассив / Новый FixedArray (пустой), Новый ФиксированныйМассив(Размер1, Размер2, …), Новый ФиксированныйМассив(Массив) — копия. Английский синоним типа — FixedArray.

Свойства

Свойство Тип Доступ Описание
— — — Предопределённых свойств нет

Методы

Метод Параметры Возвращает Описание
Добавить / Add Значение: Произвольный — Только чтение: бросает ошибку
Удалить / Delete Индекс: Число — Только чтение: бросает ошибку
Очистить / Clear — — Только чтение: бросает ошибку
Найти / Find Значение: Произвольный Число, Неопределено Как у массива
Количество / Count — Число Как у массива
ВГраница / UBound — Число Как у массива

Индексация: М[Индекс] — только чтение; запись бросает Индексированное значение доступно только для чтения. Итерация: Для Каждого Элемент Из М.

Изменяющие методы бросают Коллекция 'ФиксированныйМассив' только для чтения. Фиксированность поверхностная: М[0][0] = … для многомерного массива работает — вложенные массивы остаются обычными Массив; при создании из другого массива копируется только верхний уровень.

Структура / Structure

Создание: Новый Структура / Новый Structure — пустая; Новый Структура("Ключ1, Ключ2, …", Значение1, Значение2, …) — ключи задаются строкой через запятую (пробелы по краям отбрасываются), значения — позиционно, недостающие равны Неопределено; Новый Структура(ДругаяСтруктура) — независимая копия верхнего уровня.

Свойства

Свойство Тип Доступ Описание
<Ключ> Произвольный чтение/запись Значение по ключу; имя ключа регистронезависимо

Методы

Метод Параметры Возвращает Описание
Вставить / Insert Ключ: Строка, Значение: Произвольный — Добавляет пару или заменяет значение существующего ключа
Свойство / Property Ключ: Строка Булево Истина, если ключ есть
Удалить / Delete Ключ: Строка — Удаляет ключ, если он есть
Очистить / Clear — — Удаляет все ключи
Количество / Count — Число Число ключей

Индексация: не поддерживается (С[Ключ] — ошибка); доступ к значениям — через свойство С.Ключ или Свойство. Итерация: Для Каждого Ключ Из С — ключи.

Ключи регистронезависимы (С.Ключ, С.КЛЮЧ, С.ключ — одно и то же) и хранятся в нижнем регистре: таким их возвращает обход и такими они попадают в JSON. Обращение к отсутствующему ключу как к свойству — ошибка Поле объекта не обнаружено: 'Имя'; для проверки наличия используйте С.Свойство("Имя").

ФиксированнаяСтруктура / FixedStructure

Создание: как у Структуры — Новый ФиксированнаяСтруктура / Новый FixedStructure, Новый ФиксированнаяСтруктура("Ключ1, Ключ2, …", …), Новый ФиксированнаяСтруктура(ДругаяСтруктура). Английский синоним типа — FixedStructure.

Свойства

Свойство Тип Доступ Описание
<Ключ> Произвольный чтение Значение по ключу; имя ключа регистронезависимо

Методы

Метод Параметры Возвращает Описание
Вставить / Insert Ключ: Строка, Значение: Произвольный — Только чтение: бросает ошибку
Свойство / Property Ключ: Строка Булево Истина, если ключ есть
Удалить / Delete Ключ: Строка — Только чтение: бросает ошибку
Очистить / Clear — — Только чтение: бросает ошибку
Количество / Count — Число Число ключей

Итерация: Для Каждого Ключ Из С — ключи.

Запись значения по ключу и изменяющие методы бросают Коллекция 'ФиксированнаяСтруктура' только для чтения. Чтение, обход и Свойство работают как у обычной структуры.

Соответствие / Map

Создание: Новый Соответствие / Новый Map — пустое; Новый Соответствие(ДругоеСоответствие) — копия.

Свойства

Свойство Тип Доступ Описание
— — — Предопределённых свойств нет

Методы

Метод Параметры Возвращает Описание
Вставить / Insert Ключ: Произвольный, Значение: Произвольный — Добавляет пару или заменяет значение существующего ключа
Получить / Get Ключ: Произвольный Произвольный, Неопределено Значение по ключу; Неопределено, если ключа нет
Удалить / Delete Ключ: Произвольный — Удаляет пару, если ключ есть
Количество / Count — Число Число пар

Индексация: С[Ключ] — чтение и запись; при чтении отсутствующий ключ даёт Неопределено, при записи — добавляет пару. Итерация: Для Каждого Ключ Из С — ключи.

Ключи сравниваются по значению (=), а не по строке: строковые ключи регистрозависимы (С["А"] и С["а"] — разные пары), ключом может быть значение любого типа. В отличие от Структуры, доступ по имени свойства (С.Ключ) не поддерживается — только С[Ключ].

ФиксированноеСоответствие / FixedMap

Создание: как у Соответствия — Новый ФиксированноеСоответствие / Новый FixedMap, Новый ФиксированноеСоответствие(ДругоеСоответствие) — копия. Английский синоним типа — FixedMap.

Свойства

Свойство Тип Доступ Описание
— — — Предопределённых свойств нет

Методы

Метод Параметры Возвращает Описание
Вставить / Insert Ключ: Произвольный, Значение: Произвольный — Только чтение: бросает ошибку
Получить / Get Ключ: Произвольный Произвольный, Неопределено Как у обычного соответствия
Удалить / Delete Ключ: Произвольный — Только чтение: бросает ошибку
Количество / Count — Число Число пар

Индексация: С[Ключ] — только чтение; запись бросает Коллекция 'ФиксированноеСоответствие' только для чтения. Итерация: Для Каждого Ключ Из С — ключи.

Чтение, обход и Получить работают как у обычного соответствия, включая Неопределено для отсутствующего ключа.

СписокЗначений / ValueList

Создание: Новый СписокЗначений / Новый ValueList — пустой список (аргументы конструктора игнорируются).

Свойства

Свойство Тип Доступ Описание
ТипЗначения / ValueType Произвольный чтение/запись Тип (описание типов) значений элементов; в реализации хранится как есть и не проверяется
ДоступныеЗначения / AvailableValues Произвольный чтение/запись Ограничение допустимых значений; в реализации хранится как есть и не проверяется

Методы

Метод Параметры Возвращает Описание
Добавить / Add Значение?: Произвольный, Представление?: Строка, Пометка?: Булево, Картинка?: Произвольный ЭлементСпискаЗначений Добавляет элемент в конец
Вставить / Insert Индекс: Число, Значение?: Произвольный, Представление?: Строка, Пометка?: Булево, Картинка?: Произвольный ЭлементСпискаЗначений Вставляет элемент в позицию 0…Количество()
Удалить / Delete Индекс: Число или Элемент: ЭлементСпискаЗначений — Удаляет элемент
Индекс / IndexOf Элемент: ЭлементСпискаЗначений Число Позиция элемента; -1, если элемент не из этого списка
Количество / Count — Число Число элементов
ВГраница / UBound — Число Верхняя граница индексов; у пустого списка -1
Получить / Get Индекс: Число ЭлементСпискаЗначений Элемент по индексу; выход за границы — ошибка
НайтиПоЗначению / FindByValue Значение: Произвольный ЭлементСпискаЗначений, Неопределено Первый элемент с равным значением
Сдвинуть / Move Индекс: Число или Элемент: ЭлементСпискаЗначений, Смещение: Число — Сдвигает элемент на указанное число позиций; выход за диапазон — ошибка
СортироватьПоЗначению / SortByValue Направление?: НаправлениеСортировки — Сортирует по значениям; по умолчанию по возрастанию
СортироватьПоПредставлению / SortByPresentation Направление?: НаправлениеСортировки — Сортирует по представлениям; по умолчанию по возрастанию
ВыгрузитьЗначения / UnloadValues — Массив Новый массив значений элементов
ЗагрузитьЗначения / LoadValues Массив: Массив — Заменяет содержимое значениями массива
Очистить / Clear — — Удаляет все элементы
Скопировать / Copy — СписокЗначений Копия списка (значение, представление, пометка, картинка)

Индексация: СЗ[Индекс] — только чтение элемента; запись бросает Индексированное значение доступно только для чтения. Итерация: Для Каждого Элемент Из СЗ.

Строка(СЗ) — значения элементов через "; "; Строка(Элемент) — представление (если непустое), иначе значение, а для Неопределено/Null — <Пустое значение>. Индекс возвращает -1 для чужого элемента; Удалить/Сдвинуть дополнительно принимают сам элемент (Удалить чужого элемента — ошибка «Элемент не принадлежит списку значений»). Направление сортировки НаправлениеСортировки.Убыв — по убыванию (см. Перечисления).

ЭлементСпискаЗначений / ValueListItem

Создание: возвращается методами Добавить, Вставить, Получить, НайтиПоЗначению; отдельно не создаётся.

Свойства

Свойство Тип Доступ Описание
Значение / Value Произвольный чтение/запись Значение элемента
Представление / Presentation Строка чтение/запись Строковое представление; по умолчанию пустая строка
Пометка / Check Булево чтение/запись Пометка элемента; по умолчанию Ложь
Картинка / Picture Произвольный чтение/запись Картинка элемента; по умолчанию Неопределено

Методы

Метод Параметры Возвращает Описание
ПолучитьИдентификатор / GetID — Число Уникальный идентификатор элемента в пределах списка; не меняется при сдвиге и удалении других элементов

ТаблицаЗначений / ValueTable

Создание: Новый ТаблицаЗначений / Новый ValueTable — пустая таблица без колонок и строк.

Свойства

Свойство Тип Доступ Описание
Колонки / Columns КоллекцияКолонокТаблицыЗначений чтение Коллекция колонок
Индексы / Indexes ИндексыКоллекции чтение Коллекция индексов (описаний индексируемых колонок)

Методы

Метод Параметры Возвращает Описание
Добавить / Add — СтрокаТаблицыЗначений Добавляет строку в конец
Вставить / Insert Индекс: Число СтрокаТаблицыЗначений Вставляет строку в позицию; индекс вне диапазона — строка добавляется в конец
Удалить / Delete Индекс: Число или Строка: СтрокаТаблицыЗначений — Удаляет строку
Индекс / IndexOf Строка: СтрокаТаблицыЗначений Число Позиция строки; -1, если строки нет в таблице
Количество / Count — Число Число строк
Получить / Get Индекс: Число СтрокаТаблицыЗначений Строка по индексу
Очистить / Clear — — Удаляет все строки; структура колонок не меняется
Сдвинуть / Move Индекс: Число или Строка: СтрокаТаблицыЗначений, Смещение: Число — Сдвигает строку; выход за диапазон — ошибка
ВыгрузитьКолонку / UnloadColumn Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число Массив Значения колонки по строкам
ЗагрузитьКолонку / LoadColumn Массив: Массив, Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число — Устанавливает значения по строкам; недостающие элементы массива — Неопределено
ЗаполнитьЗначения / FillValues Значение: Произвольный, Колонки?: Строка — Заполняет указанные колонки (через запятую); пусто или не указано — все колонки
Итог / Total Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число Число Сумма числовых значений колонки; нечисловые игнорируются, для пустой колонки 0
Найти / Find Значение: Произвольный, Колонки?: Строка СтрокаТаблицыЗначений, Неопределено Первая строка, где в одной из указанных колонок значение равно искомому
НайтиСтроки / FindRows Отбор: Структура Массив Строки, у которых значения колонок совпадают с ключами структуры
Сортировать / Sort Правила: Строка — Сортирует по правилам Колонка [Возр или Убыв], …; по возрастанию по умолчанию
Свернуть / GroupBy Группировки: Строка, Суммируемые?: Строка — Группирует строки по колонкам и суммирует числовые значения суммируемых; прочие колонки удаляются
СкопироватьКолонки / CopyColumns Колонки?: Строка ТаблицаЗначений Новая таблица с копиями указанных колонок, без строк
Скопировать / Copy Строки?: Массив (строк этой таблицы) или Строки?: Структура, Колонки?: Строка ТаблицаЗначений Копия указанных строк и колонок; без аргументов — полная копия

Индексация: Т[Индекс] — строка, только чтение (запись по индексу не поддерживается). Итерация: Для Каждого Строка Из Т — строки.

Колонки и строки нумеруются с 0; неверный индекс строки — ошибка Значение индекса выходит за пределы диапазона. Имена колонок регистронезависимы и должны быть идентификаторами (буквы, цифры, _; цифра не в начале); дубли и неверные имена — ошибка. Найти/НайтиСтроки возвращают ссылки на строки таблицы; Свернуть группирует по равенству значений колонок, суммирует только числа (нечисловые считаются 0) и удаляет колонки вне группировок и сумм. В этой реализации ТипЗначения колонки не проверяется, а Индексы не ускоряют поиск — они лишь хранят описание. Строки таблицы можно обходить и по колонкам (Для Каждого по строке даёт значения по колонкам).

Колонки таблицы значений / ValueTableColumnCollection

Создание: свойство Т.Колонки; отдельно не создаётся.

Свойства

Свойство Тип Доступ Описание
— — — Предопределённых свойств нет

Методы

Метод Параметры Возвращает Описание
Добавить / Add Имя: Строка, ТипЗначения?: Произвольный, Заголовок?: Строка, Ширина?: Число КолонкаТаблицыЗначений Добавляет колонку; заголовок по умолчанию равен имени, ширина — 0
Вставить / Insert Индекс: Число, Имя: Строка, ТипЗначения?: Произвольный, Заголовок?: Строка, Ширина?: Число КолонкаТаблицыЗначений Вставляет колонку в позицию
Удалить / Delete Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число — Удаляет колонку; её значения удаляются из строк и индексов
Индекс / IndexOf Колонка: КолонкаТаблицыЗначений Число Позиция колонки; -1, если колонки нет в таблице
Количество / Count — Число Число колонок
Найти / Find Имя: Строка КолонкаТаблицыЗначений, Неопределено Колонка по имени
Получить / Get Индекс: Число КолонкаТаблицыЗначений Колонка по индексу
Сдвинуть / Move Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число, Смещение: Число — Сдвигает колонку; позиция зацикливается по модулю
Очистить / Clear — — Удаляет все колонки и их значения

Индексация: Колонки[Индекс] и Колонки[Имя] — чтение; свойство Т.Колонки.ИмяКолонки также возвращает колонку (отсутствующая — ошибка Поле объекта не обнаружено). Итерация: Для Каждого Колонка Из Т.Колонки.

Колонка таблицы значений / ValueTableColumn

Создание: возвращается методами Т.Колонки.Добавить, Вставить, Получить, Найти; отдельно не создаётся.

Свойства

Свойство Тип Доступ Описание
Имя / Name Строка чтение/запись Имя колонки (регистронезависимо при поиске)
Заголовок / Title Строка чтение/запись Заголовок; по умолчанию равен имени
ТипЗначения / ValueType Произвольный чтение Тип (описание типов) значений; только чтение
Ширина / Width Число чтение/запись Ширина колонки; по умолчанию 0

Методы

Метод Параметры Возвращает Описание
— — — Предопределённых методов нет

ТипЗначения только для чтения: попытка записи — ошибка Свойство 'ТипЗначения' не найдено у типа КолонкаТаблицыЗначений. Присвоение Имя меняет имя для поиска и доступа к значениям, но не проверяет уникальность и корректность имени — для контролируемого переименования используйте Удалить + Добавить.

Строка таблицы значений / ValueTableRow

Создание: возвращается методами Т.Добавить, Т.Вставить, Т.Получить и индексацией Т[Индекс]; отдельно не создаётся.

Свойства

Свойство Тип Доступ Описание
<Колонка> Произвольный чтение/запись Значение по имени колонки (регистронезависимо)

Методы

Метод Параметры Возвращает Описание
Получить / Get Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число Произвольный Значение колонки
Установить / Set Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число, Значение: Произвольный — Устанавливает значение колонки
Владелец / Owner — ТаблицаЗначений Таблица-владелец
Количество / Count — Число Число колонок таблицы

Индексация: Строка[Индекс] или Строка[ИмяКолонки] — чтение/запись значения. Итерация: Для Каждого Значение Из Строка — значения в порядке колонок.

Получить/Установить с несуществующей колонкой бросают Поле объекта не обнаружено. Обращение к несуществующей колонке через свойство ошибку не бросает: чтение даёт Неопределено, а запись сохраняет значение отдельно от колонок (в таблицу и выгрузку оно не попадает).

Индексы коллекции / CollectionIndexes

Создание: свойство Т.Индексы; отдельно не создаётся. Один индекс (ИндексКоллекции) — список имён индексируемых колонок, создаётся методом Добавить.

Свойства

Свойство Тип Доступ Описание
— — — Предопределённых свойств нет

Методы

Метод Параметры Возвращает Описание
Добавить / Add ИменаКолонок: Строка ИндексКоллекции Создаёт индекс по колонкам (имена через запятую; все должны существовать)
Удалить / Delete Индекс: Число или Индекс: ИндексКоллекции — Удаляет индекс
Количество / Count — Число Число индексов
Очистить / Clear — — Удаляет все индексы

Индексация: Т.Индексы[Индекс] — чтение индекса. Итерация: Для Каждого Индекс Из Т.Индексы.

Индекс (ИндексКоллекции): Индекс[Позиция] — имя колонки (только чтение); итерация — имена колонок; Строка(Индекс) — имена через ", ". Методов и свойств у индекса нет.

При удалении колонки из таблицы она автоматически убирается из всех индексов. Индексы хранят только описание: поиск и сортировка их не используют.

ДеревоЗначений / ValueTree

Создание: Новый ДеревоЗначений / Новый ValueTree — пустое дерево без колонок и строк.

Свойства

Свойство Тип Доступ Описание
Колонки / Columns КоллекцияКолонокТаблицыЗначений чтение Коллекция колонок (тот же тип, что у таблицы значений)
Строки / Rows КоллекцияСтрокДереваЗначений чтение Корневые строки дерева

Методы

Метод Параметры Возвращает Описание
Скопировать / Copy — ДеревоЗначений Глубокая копия: колонки и все узлы дерева

Индексация: не поддерживается (Д[Индекс] — ошибка); строки — Д.Строки[Индекс] или Д.Строки.Получить(…). Для Каждого по дереву не работает (дерево — не коллекция); обходите Д.Строки, а подузлы — Строка.Строки.

Колонки дерева — тот же тип, что у таблицы значений: см. Колонки таблицы значений и Колонка таблицы значений.

Строка дерева значений / ValueTreeRow

Создание: возвращается методами Д.Строки.Добавить, Вставить, Получить, индексацией Д.Строки[Индекс], а также Строка.Строки.Добавить для подузлов; отдельно не создаётся.

Свойства

Свойство Тип Доступ Описание
Родитель / Parent СтрокаДереваЗначений, Неопределено чтение Родительская строка; у корневой — Неопределено
Строки / Rows КоллекцияСтрокДереваЗначений чтение Подчинённые строки
<Колонка> Произвольный чтение/запись Значение по имени колонки (регистронезависимо)

Методы

Метод Параметры Возвращает Описание
Получить / Get Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число Произвольный Значение колонки
Установить / Set Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число, Значение: Произвольный — Устанавливает значение колонки
Владелец / Owner — ДеревоЗначений Дерево-владелец
Уровень / Level — Число Уровень строки: 0 у корневых, далее +1 на каждый подузел

Индексация: Строка[Индекс] или Строка[ИмяКолонки] — чтение/запись значения. Для Каждого по строке не работает; для обхода значений используйте Д.Колонки и Строка[Колонка].

Родитель и Строки — только для чтения (запись — ошибка Свойство '…' доступно только для чтения). Обращение к несуществующей колонке — ошибка Поле объекта не обнаружено.

Коллекция строк дерева значений / ValueTreeRowCollection

Создание: свойство Д.Строки (корневые строки) или Строка.Строки (подузлы); отдельно не создаётся.

Свойства

Свойство Тип Доступ Описание
Родитель / Parent СтрокаДереваЗначений, Неопределено чтение Строка-владелец коллекции; у корневой коллекции — Неопределено

Методы

Метод Параметры Возвращает Описание
Добавить / Add — СтрокаДереваЗначений Добавляет строку в конец
Вставить / Insert Индекс: Число СтрокаДереваЗначений Вставляет строку в позицию
Удалить / Delete Индекс: Число или Строка: СтрокаДереваЗначений — Удаляет строку вместе с подузлами
Индекс / IndexOf Строка: СтрокаДереваЗначений Число Позиция строки; -1, если строки нет в коллекции
Количество / Count — Число Число строк в коллекции
Получить / Get Индекс: Число СтрокаДереваЗначений Строка по индексу
Очистить / Clear — — Удаляет все строки коллекции
Владелец / Owner — ДеревоЗначений Дерево-владелец
Сдвинуть / Move Индекс: Число или Строка: СтрокаДереваЗначений, Смещение: Число — Сдвигает строку; позиция зацикливается по модулю
ВыгрузитьКолонку / UnloadColumn Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число Массив Значения колонки по строкам коллекции
ЗагрузитьКолонку / LoadColumn Массив: Массив, Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число — Устанавливает значения по строкам; недостающие элементы массива — Неопределено
Итог / Total Колонка: КолонкаТаблицыЗначений или Имя: Строка или Индекс: Число, ВключатьПодузлы?: Булево Число Сумма числовых значений; при ВключатьПодузлы = Истина — рекурсивно по всем подузлам
Найти / Find Значение: Произвольный, Колонки?: Строка, ВключатьПодузлы?: Булево СтрокаДереваЗначений, Неопределено Первая строка с равным значением; при ВключатьПодузлы = Истина — рекурсивно
НайтиСтроки / FindRows Отбор: Структура, ВключатьПодузлы?: Булево Массив Строки, у которых значения колонок совпадают с ключами структуры; при ВключатьПодузлы = Истина — рекурсивно
Сортировать / Sort Правила: Строка, СортироватьПодузлы?: Булево — Сортирует по правилам Колонка [Возр или Убыв], …; при СортироватьПодузлы = Истина — рекурсивно

Индексация: Коллекция[Индекс] — только чтение; запись не поддерживается. Итерация: Для Каждого Строка Из Д.Строки (или Из Строка.Строки).

Коллекция.Родитель — строка, которой принадлежат подузлы (Д.Строки.Родитель — Неопределено). Найти/НайтиСтроки/Итог/Сортировать без флага подузлов работают только с текущим уровнем.

Перечисления

В системе 13 системных перечислений. Каждое зарегистрировано глобально под русским и английским именем (НаправлениеПоиска и SearchDirection — одно и то же). Значение перечисления получается как свойство: НаправлениеПоиска.СНачала, СпециальнаяПапка.MyDocuments (английский алиас значения), ТипДиска.ЖесткийДиск.

Имена перечислений и их значений регистронезависимы: направлениепоиска.сначала = НаправлениеПоиска.СНачала, ТипДиска.fixed = ТипДиска.ЖесткийДиск.

Тип значения — имя перечисления: ТипЗнч(ТипДиска.ЖесткийДиск) = ТипДиска, Тип("НаправлениеПоиска") = ТипЗнч(НаправлениеПоиска.СНачала). Строка(Значение) — каноническое русское имя: Строка(SearchDirection.FromBegin) = СНачала.

Сравнение =/<> — по типу и имени: равны только значения одного перечисления с одинаковым именем, поэтому НаправлениеПоиска.СНачала <> ТипДиска.ЖесткийДиск (разные типы). Например, ПорядокБайтов.LittleEndian = ПорядокБайтов.LittleEndian — истина.

У значения нет свойств и методов: .Имя/.Name не поддерживаются (имя даёт Строка()), индексация недоступна. Обращение к несуществующему значению — исключение «Значение '…' не найдено у перечисления …»; всё это ловится Попытка.

Часть перечислений объявлена без реализованного API — они помечены ниже как «объявлено, не реализовано»; сами значения при этом доступны, сравниваются и выводятся.

НаправлениеПоиска / SearchDirection

Направление поиска в строке — используется в СтрНайти (3-й аргумент).

Значение Англ. алиас Смысл
СНачала FromBegin Искать с начала строки (первое вхождение) — по умолчанию
СКонца FromEnd Искать с конца строки (последнее вхождение)

В СтрНайти направление можно передать и строкой: "СНачала"/"FromBegin", "СКонца"/"FromEnd"; любая другая строка трактуется как СНачала. Подробнее о функции — в разделе Строки.

СтатусСообщения / MessageStatus

Уровень сообщения — 2-й аргумент Сообщить; определяет поток вывода.

Значение Англ. алиас Смысл
БезСтатуса WithoutStatus Без статуса
Обычное Ordinary Обычное сообщение
Информация Information Информационное сообщение
Внимание Attention Предупреждение
Важное Important Важное сообщение
ОченьВажное VeryImportant Очень важное сообщение

Сообщить: Информация → console.info, Внимание → console.warn, Важное/ОченьВажное → console.error, БезСтатуса/Обычное и не-перечисления → console.log. В CLI предупреждения и ошибки идут в stderr. Подробнее — в Вывод, пауза и базовые значения.

ХешФункция / HashFunction

Алгоритм хеширования. Объявлено, не реализовано: функций вычисления хеша в движке нет, значения доступны только для сравнения и вывода.

Значение Англ. алиас Смысл
MD5 MD5 MD5
SHA1 SHA1 SHA-1
SHA256 SHA256 SHA-256
SHA384 SHA384 SHA-384
SHA512 SHA512 SHA-512
CRC32 CRC32 CRC32

ЦветКонсоли / ConsoleColor

Цвет вывода в консоль. Объявлено, не реализовано: окрашивания вывода и функций, принимающих цвет, нет; значения доступны для сравнения и вывода.

Значение Англ. алиас Смысл
Черный Black Чёрный
ТемноСиний DarkBlue Тёмно-синий
ТемноЗеленый DarkGreen Тёмно-зелёный
ТемноБирюзовый DarkCyan Тёмно-бирюзовый
ТемноКрасный DarkRed Тёмно-красный
ТемноМалиновый DarkMagenta Тёмно-малиновый
ТемноЖелтый DarkYellow Тёмно-жёлтый
Серый Gray Серый
ТемноСерый DarkGray Тёмно-серый
Синий Blue Синий
Зеленый Green Зелёный
Бирюза Cyan Бирюзовый
Красный Red Красный
Малиновый Magenta Малиновый
Желтый Yellow Жёлтый
Белый White Белый

КодировкаТекста / TextEncoding

Кодировка текста для операций с двоичными данными; используется 2-м аргументом функций ПолучитьБуферДвоичныхДанныхИзСтроки, ПолучитьСтрокуИзБуфераДвоичныхДанных и парных им (см. Двоичные данные и кодировки).

Значение Англ. алиас Смысл
Системная System Системная кодировка — в реализации UTF-8
UTF8 UTF8 UTF-8 (BOM — только по флагу)
UTF8БезBOM UTF8NoBOM UTF-8 без BOM при любой записи
UTF16 UTF16 UTF-16LE
ANSI ANSI windows-1251
OEM OEM cp866

Точное поведение кодировок при записи и чтении (усечение не-UTF кодировок, автоопределение BOM) — в разделе Кодировки и BOM. Кроме значения перечисления функции принимают и строковую метку ("utf-8", "windows-1251", "cp866" и т. п.).

СпециальнаяПапка / SpecialFolder

Специальные папки файловой системы — аргумент СистемнаяИнформация.ПолучитьПутьПапки (см. СистемнаяИнформация / SystemInfo).

Значение Англ. алиас Смысл
МоиДокументы MyDocuments Каталог документов пользователя
ДанныеПриложений ApplicationData Каталог данных приложений (APPDATA или ~/.config)
ЛокальныйКаталогДанныхПриложений LocalApplicationData Локальный каталог данных приложений (LOCALAPPDATA или ~/.local/share)
РабочийСтол Desktop Рабочий стол
КаталогРабочийСтол DesktopDirectory Каталог рабочего стола
МояМузыка MyMusic Каталог музыки
МоиРисунки MyPictures Каталог изображений
Шаблоны Templates Каталог шаблонов
МоиВидеозаписи MyVideos Каталог видео
ОбщиеШаблоны CommonTemplates Общие шаблоны
ПрофильПользователя UserProfile Домашний каталог пользователя
ОбщийКаталогДанныхПриложения CommonApplicationData Общий каталог данных приложений (ProgramData или /usr/share)

Пути вычисляются по переменным среды: для ДанныеПриложений/ЛокальныйКаталогДанныхПриложений берётся APPDATA/LOCALAPPDATA, если переменная задана, иначе — подкаталог домашнего каталога; остальные пути строятся от домашнего каталога. Каталог не создаётся и на существование не проверяется.

ТипДиска / DriveType

Тип логического диска. Объявлено, не реализовано: API, возвращающего типы дисков, нет; СистемнаяИнформация.ИменаЛогическихДисков даёт только пути.

Значение Англ. алиас Смысл
Неизвестный Unknown Тип неизвестен
НеИмеетКорневойКаталог NoRootDirectory Нет корневого каталога
СъемноеЗапоминающееУстройство Removable Съёмное запоминающее устройство
ЖесткийДиск Fixed Жёсткий диск
СетевойДиск Network Сетевой диск
ОптическийДиск CDRom Оптический диск
ДискОЗУ Ram Диск ОЗУ

НаправлениеСортировки / SortDirection

Направление сортировки — аргумент методов СписокЗначений.СортироватьПоЗначению и СортироватьПоПредставлению (см. Коллекции).

Значение Англ. алиас Смысл
Возр ASC По возрастанию — по умолчанию
Убыв DESC По убыванию

Строковые значения ("Убыв" и т. п.) эти методы не распознают — передавайте значение перечисления.

СпособКодированияСтроки / StringEncodingMethod

Способ кодирования строки. Объявлено, не реализовано: функций URL-кодирования, принимающих это перечисление, нет.

Значение Англ. алиас Смысл
КодировкаURL URLEncoding Кодирование по правилам URL
URLВКодировкеURL URLInURLEncoding URL в URL-кодировке

СостояниеФоновогоЗадания / BackgroundJobState

Состояние фонового задания — свойство ФоновоеЗадание.Состояние (см. Фоновые задания).

Значение Англ. алиас Смысл
НеВыполнялось NotRunned Задание ещё не начинало выполняться
Активно Active Задание выполняется
Завершено Completed Задание завершилось успешно
ЗавершеноАварийно Failed Задание завершилось ошибкой

ПорядокБайтов / ByteOrder

Порядок байтов при чтении/записи целых в БуферДвоичныхДанных; значение по умолчанию — LittleEndian. У перечисления нет отдельных русских имён значений.

Значение Англ. алиас Смысл
LittleEndian LittleEndian Младший байт первым
BigEndian BigEndian Старший байт первым

ТипПлатформы / PlatformType

Тип платформы — свойство СистемнаяИнформация.ТипПлатформы. У значений нет отдельных русских имён: русский и английский алиасы совпадают.

Значение Англ. алиас Смысл
Linux_x86 Linux_x86 Linux, 32-бит
Linux_x86_64 Linux_x86_64 Linux, 64-бит
MacOS_x86 MacOS_x86 macOS, 32-бит
MacOS_x86_64 MacOS_x86_64 macOS, 64-бит
Windows_x86 Windows_x86 Windows, 32-бит
Windows_x86_64 Windows_x86_64 Windows, 64-бит
Unknown Unknown Неизвестная платформа

РасположениеПеременнойСреды / EnvironmentVariableTarget

Область переменной среды. Объявлено, не реализовано: функции ПеременныеСреды, ПолучитьПеременнуюСреды, УстановитьПеременнуюСреды работают только с процессом и область не принимают (см. Система и окружение).

Значение Англ. алиас Смысл
Процесс Process Переменные текущего процесса
Пользователь User Переменные пользователя
Машина Machine Переменные машины

Символы

Глобальный объект Символы / Chars — контейнер строковых констант (не значение-тип). Значения доступны как свойства и являются обычными строками.

Константа Англ. алиас Смысл Код UTF-16
ПС LF Перевод строки 10
ВК CR Возврат каретки 13
ВТаб VTab Вертикальная табуляция 11
Таб Tab Табуляция 9
ПФ FF Перевод страницы 12
НПП Nbsp Неразрывный пробел 160

Имена констант регистронезависимы: Символы.ПС = символы.пс = Chars.LF. ТипЗнч(Символы) = Символы. Константы только для чтения; запись — исключение «Свойство '…' недоступно для записи», несуществующая константа — «Свойство '…' не найдено у Символы». Строкой является само значение: СтрДлина(Символы.Таб) = 1, а Символы.ПС <> Символы.ВК.

Двоичные данные: объекты

Два типа для работы с байтами: изменяемый БуферДвоичныхДанных и неизменяемые ДвоичныеДанные. Глобальные функции преобразования строк/Hex/Base64 и объектов — в разделе Двоичные данные и кодировки.

БуферДвоичныхДанных / BinaryDataBuffer

Создание: Новый БуферДвоичныхДанных(Размер: Число) — буфер из Размер нулевых байт (без аргумента — пустой; отрицательный размер — исключение). Также буферы возвращают функции ПолучитьБуферДвоичныхДанныхИзСтроки, …ИзHexСтроки, …ИзBase64Строки, …ИзДвоичныхДанных и методы Прочитать, Перевернуть, Скопировать, Соединить.

Свойства

Свойство Тип Доступ Описание
Размер / Size Число чтение Количество байт в буфере
ТолькоЧтение / ReadOnly Булево чтение Истина, если буфер переведён в режим только для чтения
ПорядокБайтов / ByteOrder ПорядокБайтов чтение/запись Порядок байтов для ПрочитатьЦелое*/ЗаписатьЦелое*; по умолчанию LittleEndian

Методы

Метод Параметры Возвращает Описание
Получить / Get Индекс: Число Число Байт по индексу (0–255)
Установить / Set Индекс: Число, Значение: Число — Записывает байт; значение вне 0–255 — исключение
Записать / Write Позиция: Число, Буфер: БуферДвоичныхДанных, Количество?: Число — Копирует в позицию Позиция первые Количество байт из буфера; 0 — весь буфер
Прочитать / Read Позиция: Число, Количество: Число БуферДвоичныхДанных Новый буфер из Количество байт начиная с Позиция
Перевернуть / Reverse — БуферДвоичныхДанных Новый буфер с байтами в обратном порядке
Скопировать / Copy — БуферДвоичныхДанных Независимая копия буфера
Соединить / Concat Буферы: Массив БуферДвоичныхДанных Новый буфер — конкатенация элементов массива
УстановитьТолькоЧтение / SetReadOnly — — Переводит буфер в режим только для чтения
ЗаписатьЦелое16 / WriteInt16 Позиция: Число, Значение: Число — Записывает 2 байта целого
ЗаписатьЦелое32 / WriteInt32 Позиция: Число, Значение: Число — Записывает 4 байта целого
ЗаписатьЦелое64 / WriteInt64 Позиция: Число, Значение: Число — Записывает 8 байт целого
ПрочитатьЦелое16 / ReadInt16 Позиция: Число Число Читает беззнаковое целое из 2 байт
ПрочитатьЦелое32 / ReadInt32 Позиция: Число Число Читает беззнаковое целое из 4 байт
ПрочитатьЦелое64 / ReadInt64 Позиция: Число Число Читает беззнаковое целое из 8 байт
ЗаписатьПобитовоеИ / WriteBitwiseAnd Позиция: Число, Буфер: БуферДвоичныхДанных, Количество?: Число — Побайтовое И с буфером
ЗаписатьПобитовоеИли / WriteBitwiseOr Позиция: Число, Буфер: БуферДвоичныхДанных, Количество?: Число — Побайтовое ИЛИ с буфером
ЗаписатьПобитовоеИсключительноеИли / WriteBitwiseXor Позиция: Число, Буфер: БуферДвоичныхДанных, Количество?: Число — Побайтовое исключающее ИЛИ с буфером
ЗаписатьПобитовоеИНе / WriteBitwiseAndNot Позиция: Число, Буфер: БуферДвоичныхДанных, Количество?: Число — Побайтовое И с инвертированным буфером (И-НЕ)

Буфер индексируется: Буфер[Индекс] — чтение и запись байта (как Получить/Установить). Чтение за границами возвращает Неопределено, исключения нет; запись значения вне 0–255 — «Неверное значение аргумента».

Количество = 0 (и отсутствие аргумента) у Записать/ЗаписатьПобитовое* означает «весь буфер-аргумент». Записать копирует байты аргумента с его начала и не учитывает никакого смещения.

Прочитать, Перевернуть, Скопировать создают новый независимый буфер и не меняют исходный. Соединить собирает результат только из элементов Массив; сам буфер, у которого вызван метод, в результат не добавляется (расхождение с C#-эталоном, где возвращается конкатенация текущего буфера и буфера-аргумента). Соединить принимает только Массив буферов, другой тип элемента — исключение.

ЗаписатьЦелое* и ЗаписатьПобитовое* при ТолькоЧтение = Истина бросают исключение «Буфер предназначен только для чтения»; чтение при этом работает. Целые читаются как беззнаковые (например, после ЗаписатьЦелое16(0, -1) чтение даёт 65535). Порядок байтов для целых берётся только из свойства ПорядокБайтов — необязательного аргумента порядка нет.

Сравнение =/<> двух буферов — побайтовое (по содержимому, не по ссылке).

ДвоичныеДанные

Создание: только функциями преобразования — через Новый тип не создаётся: типа ДвоичныеДанные в конструкторе нет — объект создаётся только функциями ПолучитьДвоичныеДанныеИзСтроки, …ИзHexСтроки, …ИзBase64Строки, …ИзДвоичныхДанных, ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных, СоединитьДвоичныеДанные (см. Двоичные данные и кодировки).

Английского алиаса типа нет: Тип("BinaryData") не канонизируется, Новый BinaryData — «Тип … не найден».

Свойства — нет.

Методы

Метод Параметры Возвращает Описание
Размер / Size — Число Количество байт

Размер — именно метод (Данные.Размер()), свойства Размер нет. Сравнение =/<> — побайтовое; с буфером (БуферДвоичныхДанных) данные не равны. Изменение невозможно: нет ни методов записи, ни индексации.

Значения и типы

Тип / Type

Создание: функции Тип(ИмяТипа) и ТипЗнч(Значение) (см. Типы значений). Значение используется для сравнения типов и динамического создания: Новый(Тип("Массив"), 3).

Свойства — нет. Методы — нет.

Строка(Тип("Массив")) = Массив; ТипЗнч(Тип("Массив")) = Тип. Сравнение =/<> — по имени типа: Тип("Булево") = Тип("Boolean") — истина, Тип("Массив") = ТипЗнч(Новый Массив) — истина.

У значения нет свойства Имя, методов и индексации: .Имя — исключение «Свойство 'Имя' не найдено у типа Тип», индексация — «Индексация недоступна для типа Тип».

Тип() канонизирует только известный список двуязычных имён (см. таблицу в Типы значений); любое другое имя берётся как есть и остаётся регистрозависимым. Поэтому для сравнения указывайте точное каноническое имя: Тип("РегулярноеВыражение") = ТипЗнч(Новый РегулярноеВыражение("a")) — истина, а Тип("Regex") даст тип с именем Regex и не будет равен. Незнакомое имя не ошибка: Тип("МойТип") вернёт тип МойТип.

Значение перечисления

Создание: значение перечисления (НаправлениеПоиска.СНачала, КодировкаТекста.UTF8, …) получается как свойство перечисления; конструктора у него нет (см. Перечисления).

Свойства — нет. Методы — нет.

Строка(Значение) возвращает каноническое русское имя значения (Строка(ТипДиска.Fixed) = ЖесткийДиск). ТипЗнч(Значение) возвращает имя перечисления (ТипЗнч(ТипДиска.ЖесткийДиск) = ТипДиска). Свойства Имя/Name нет — имя получайте через Строка(). Сравнение — по типу и имени; индексация недоступна.

УникальныйИдентификатор / UUID

Создание: Новый УникальныйИдентификатор() — новый случайный UUID (v4); Новый УникальныйИдентификатор(Строка: Строка) — UUID из строки. Алиас типа — UUID: Новый UUID(…).

Свойства — нет. Методы — нет.

Если аргумент — Неопределено/Null, создаётся новый случайный идентификатор. Строка приводится к нижнему регистру и проверяется по формату xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; иначе — исключение «Неверный формат УникальногоИдентификатора». Строка(УникальныйИдентификатор) — 36-символьный UUID в нижнем регистре. Сравнение =/<> — по значению, поэтому Новый УникальныйИдентификатор(Строка(У)) = У — истина. Свойств, методов и индексации нет; ТипЗнч(У) = УникальныйИдентификатор, Тип("UUID") канонизируется в него же.

Сценарий

Загруженный модуль BSL. Создание: только функции загрузки — ЗагрузитьСценарийИзСтроки, ЗагрузитьСценарий (только Node), ТекущийСценарий, СтартовыйСценарий; тип Сценарий через Новый не создаётся (см. Сценарии и модули).

Свойства

Свойство Тип Доступ Описание
Источник / Source Строка чтение Путь, переданный при запуске/загрузке; "", если путь неизвестен
Каталог / Directory Строка чтение Каталог из Источник; "", если пути нет
Имя / Name Строка чтение Имя файла из Источник; "", если пути нет
Экспортные переменные модуля Любое чтение/запись Доступны по имени, как свойства объекта

Методы — собственных нет; экспортные методы модуля вызываются как методы объекта (Сценарий.Метод(…)).

Свойства Путь нет — путь хранится в Источник. Неэкспортные методы и переменные снаружи недоступны (Метод '…' не найден у типа Сценарий). Строка(Сценарий) = Сценарий либо представление, заданное методом модуля ОбработкаПолученияПредставления(Представление, СтандартнаяОбработка). Индексация недоступна. Английского алиаса типа нет: Тип("Script") не канонизируется.

ИнформацияОбОшибке / ErrorInfo

Сведения о перехваченном исключении. Создание: функция ИнформацияОбОшибке() в блоке Исключение (см. Встроенные функции языка); тип через Новый не создаётся. Вне блока Исключение описание пустое.

Свойства

Свойство Тип Доступ Описание
Описание / Description Строка чтение Текст текущего исключения
ПодробноеОписаниеОшибки / DetailErrorDescription Строка чтение То же значение, что и Описание (отдельного стека нет)
Причина / Cause Null чтение Всегда Null: вложенные причины не поддерживаются

Методы — нет.

ТипЗнч(ИнформацияОбОшибке()) = ИнформацияОбОшибке; Тип("ErrorInfo") канонизируется в него же. Свойства только для чтения; неизвестное свойство — исключение. ОписаниеОшибки() возвращает то же значение строкой (см. Встроенные функции языка); для повторного броска объект можно передать в ВызватьИсключение. Индексации нет.

Инструменты

СистемнаяИнформация / SystemInfo

Сведения о системе и окружении. Создание: Новый СистемнаяИнформация — аргументы игнорируются; алиас — SystemInfo.

Свойства (все только для чтения)

Свойство Тип Доступ Описание
ИмяКомпьютера / MachineName Строка чтение Имя компьютера из переменных среды; может быть пустой строкой
ВерсияОС / OSVersion Строка чтение Платформа и архитектура, например darwin arm64
ПолнаяКоманднаяСтрока / FullCommandLine Строка чтение Командная строка процесса через пробел
ИмяЯдра / KernelName Строка чтение WindowsNT, Darwin, Linux или Unknown
Версия / Version Строка чтение Версия движка (в текущей сборке — 0.1.0)
ТипПлатформы / PlatformType ТипПлатформы чтение Тип платформы (см. ТипПлатформы)
ПользовательОС / OSUser Строка чтение Имя пользователя из переменных среды
Это64БитнаяОперационнаяСистема Булево чтение Признак 64-битной ОС (английского алиаса нет)
КоличествоПроцессоров / ProcessorCount Число чтение Число процессоров (в браузере — navigator.hardwareConcurrency)
РазмерСистемнойСтраницы / SystemPageSize Число чтение Размер страницы памяти; в реализации — 4096
ВремяРаботыСМоментаЗагрузки / TickCount Число чтение Время работы системы в миллисекундах
ИменаЛогическихДисков Массив чтение Пути корней дисков (английского алиаса нет)

Методы

Метод Параметры Возвращает Описание
ПолучитьПутьПапки / GetFolderPath Папка: СпециальнаяПапка Строка Путь специальной папки (см. СпециальнаяПапка)
ПеременныеСреды / EnvironmentVariables — Соответствие Снимок переменных среды процесса
ПолучитьПеременнуюСреды / GetEnvironmentVariable Имя: Строка Строка | Неопределено Значение переменной или Неопределено
УстановитьПеременнуюСреды / SetEnvironmentVariable Имя: Строка, Значение: Любое — Задаёт переменную (Неопределено/Null удаляют её)

Свойства только для чтения, индексация недоступна. ПолучитьПутьПапки принимает значение СпециальнаяПапка; другой тип — «Неверный тип аргумента». Каталог не создаётся.

Методы работы с переменными среды — те же операции, что и глобальные функции ПеременныеСреды/ПолучитьПеременнуюСреды/УстановитьПеременнуюСреды (см. Система и окружение).

В браузере process отсутствует: ИмяКомпьютера, ПользовательОС, ПолнаяКоманднаяСтрока пустые, ВерсияОС, ИмяЯдра, ТипПлатформы — заглушки, ИменаЛогическихДисков = ["/"], УстановитьПеременнуюСреды — no-op.

Тип("SystemInfo") не канонизируется (в списке двуязычных имён его нет): для сравнения используйте Тип("СистемнаяИнформация") или ТипЗнч(Система).

РегулярноеВыражение / Regex

Создание: Новый РегулярноеВыражение(Шаблон?: Строка); без шаблона — пустое выражение (совпадает с любой строкой). Алиас — Regex.

Свойства

Свойство Тип Доступ Описание
ИгнорироватьРегистр / IgnoreCase Булево чтение/запись Игнорировать регистр; по умолчанию Истина
Многострочный / Multiline Булево чтение/запись Многострочный режим (^/$ на границах строк); по умолчанию Истина

Методы

Метод Параметры Возвращает Описание
Совпадает / IsMatch ВходнаяСтрока: Строка, НачальнаяПозиция?: Число Булево Есть ли хотя бы одно совпадение
НайтиСовпадения / Matches ВходнаяСтрока: Строка, НачальнаяПозиция?: Число КоллекцияСовпаденийРегулярногоВыражения Все совпадения начиная с позиции
Разделить / Split ВходнаяСтрока: Строка, Количество?: Число, НачальнаяПозиция?: Число Массив Делит строку по совпадениям-разделителям
Заменить / Replace ВходнаяСтрока: Строка, Замена: Строка Строка Заменяет все совпадения

Свойства Шаблон нет — сохранённый шаблон недоступен. Регистр и многострочность задаются свойствами, а не аргументом конструктора; по умолчанию оба флага включены.

НачальнаяПозиция — позиция в строке (с 0); по умолчанию 0. Для Совпадает и НайтиСовпадения поиск начинается с неё; для Разделить она задаёт только место начала поиска разделителей — текст до неё попадает в первую часть.

Количество у Разделить — максимальное число частей (0 — без ограничения); остаток строки после последнего разделителя всегда становится последней частью.

Замена поддерживает обратные ссылки $1…$99 и $<имя>; $& — всё совпадение. $0 (как в .NET/1С) не поддерживается: он остаётся в тексте буквально. Пустые совпадения обрабатываются без зацикливания.

Группы нумеруются как в .NET: сначала безымянные в порядке появления (1, 2, …), затем именованные. Группа 0 — всё совпадение. Именованные группы задаются синтаксисом (?<имя>…); имена распознаются только из латиницы/_ (затем буквы/цифры) — группа с кириллическим именем не попадёт в нумерацию .NET, хотя JS-движок её скомпилирует.

Некорректный шаблон обнаруживается при первом вызове метода (компиляция при создании не выполняется) и приводит к исключению с текстом ошибки JS-движка.

ТипЗнч(Новый РегулярноеВыражение("a")) = РегулярноеВыражение; Тип("Regex") не канонизируется — для сравнения используйте Тип("РегулярноеВыражение").

СовпадениеРегулярногоВыражения

Одно совпадение. Создание: только как результат НайтиСовпадения; конструктора нет.

Свойства

Свойство Тип Доступ Описание
Значение / Value Строка чтение Текст совпадения (группа 0)
Индекс / Index Число чтение Позиция совпадения в исходной строке (с 0)
Длина / Length Число чтение Длина совпадения
Группы / Groups КоллекцияГруппРегулярногоВыражения чтение Группы совпадения, включая нулевую

Методы — нет.

Индексация недоступна; ТипЗнч(Совпадение) = СовпадениеРегулярногоВыражения.

ГруппаРегулярногоВыражения

Одна группа совпадения. Создание: только из коллекции групп; конструктора нет.

Свойства

Свойство Тип Доступ Описание
Значение / Value Строка чтение Текст группы ("", если группа не участвовала)
Индекс / Index Число чтение Позиция группы в исходной строке (с 0)
Длина / Length Число чтение Длина группы
Имя / Name Строка чтение Имя группы; для безымянной — её номер строкой ("1", "2", …), для нулевой — "0"

Методы — нет.

Индексация недоступна; ТипЗнч(Группа) = ГруппаРегулярногоВыражения.

КоллекцияСовпаденийРегулярногоВыражения

Все совпадения. Создание: только как результат НайтиСовпадения; конструктора нет.

Свойства — нет.

Методы

Метод Параметры Возвращает Описание
Количество / Count — Число Число совпадений

Коллекция индексируется с 0: Коллекция[0] → СовпадениеРегулярногоВыражения. Поддерживается обход Для Каждого Совпадение Из Коллекция Цикл … КонецЦикла. ТипЗнч(Коллекция) = КоллекцияСовпаденийРегулярногоВыражения.

КоллекцияГруппРегулярногоВыражения

Группы одного совпадения. Создание: только как Совпадение.Группы; конструктора нет.

Свойства — нет.

Методы

Метод Параметры Возвращает Описание
Количество / Count — Число Число групп, включая нулевую
ПоИмени / FromName Имя: Строка ГруппаРегулярногоВыражения Группа по имени; неизвестное имя — исключение

Индексируется с 0 (0 — всё совпадение); поддерживается обход Для Каждого. Нумерация — как в .NET: безымянные группы, затем именованные. ТипЗнч(Коллекция) = КоллекцияГруппРегулярногоВыражения.

ГенераторСлучайныхЧисел / RandomNumberGenerator

Создание: Новый ГенераторСлучайныхЧисел(НачальноеЧисло?: Число). Без аргумента (или при НачальноеЧисло = 0) генератор неинициализирован — последовательность неповторяема; при ненулевом начальном числе последовательность детерминирована (mulberry32).

Свойства — нет.

Методы

Метод Параметры Возвращает Описание
СлучайноеЧисло / RandomNumber Минимум?: Число, Максимум?: Число Число Целое в диапазоне [Минимум, Максимум] включительно

Значения по умолчанию: Минимум = 0, Максимум = 4294967295 (2³²−1). Оба аргумента должны быть целыми в диапазоне 0…4294967295, иначе — исключение «Неверное значение аргумента»; Минимум > Максимум — та же ошибка. СлучайноеЧисло(7, 7) = 7.

Одинаковое ненулевое начальное число даёт одинаковую последовательность (в том числе для больших и дробных чисел — берутся младшие 32 бита). Дробное начальное число допустимо. Свойств, индексации и других методов нет; ТипЗнч(Генератор) = ГенераторСлучайныхЧисел.

Интеграции: HTTP

Синхронный HTTP-клиент BSL: объекты HTTPСоединение, HTTPЗапрос, HTTPОтвет. Вызовы блокируют исполнение, как в эталоне. Транспорт зависит от окружения: [браузер] — синхронный XMLHttpRequest; [Node] — дочерний процесс node -e с fetch (каждый запрос ≈ 100 мс). В библиотечном createGlobalContext() без переданного транспорта Новый HTTPСоединение бросает «HTTP-запросы недоступны в этом окружении»; TS-тип транспорта HttpTransport передаётся в createGlobalContext(transport). Прокси, произвольные SSL-сертификаты, файловое тело и потоки не поддерживаются.

HTTPСоединение / HTTPConnection

Создание: Новый HTTPСоединение(Сервер, Порт, Пользователь, Пароль, Прокси, Таймаут, ЗащищенноеСоединение, ИспользоватьАутентификациюОС) — обязателен только Сервер; необязательные параметры можно пропускать.

Свойство Тип Доступ Описание
Сервер / Host Строка чтение Хост из адреса соединения (без пути и порта)
Порт / Port Число чтение Эффективный порт: из аргумента, иначе из адреса, иначе 80/443
Пользователь / User Строка чтение Имя для basic-auth; по умолчанию ""
Пароль / Password Строка чтение Пароль для basic-auth; по умолчанию ""
Прокси / Proxy Неопределено чтение Прокси не поддерживается, всегда Неопределено
Таймаут / Timeout Число чтение Таймаут запроса в секундах; 0 — без ограничения
РазрешитьАвтоматическоеПеренаправление / AllowAutoRedirect Булево чтение/запись Следовать редиректам; по умолчанию Истина
ИспользоватьАутентификациюОС / UseOSAuthentication Булево чтение Принимается, но транспортом не используется
Метод Параметры Возвращает Описание
Получить / Get Запрос: HTTPЗапрос, ИмяФайлаОтвета?: Строка HTTPОтвет Запрос GET
ОтправитьДляОбработки / Post Запрос: HTTPЗапрос, ИмяФайлаОтвета?: Строка HTTPОтвет Запрос POST
Записать / Put Запрос: HTTPЗапрос HTTPОтвет Запрос PUT
Удалить / Delete Запрос: HTTPЗапрос HTTPОтвет Запрос DELETE
Изменить / Patch Запрос: HTTPЗапрос HTTPОтвет Запрос PATCH
ПолучитьЗаголовки / Head Запрос: HTTPЗапрос HTTPОтвет Запрос HEAD; тело не возвращается
ВызватьHTTPМетод / CallHTTPMethod Метод: Строка, Запрос: HTTPЗапрос, ИмяФайлаОтвета?: Строка HTTPОтвет Произвольный метод; имя приводится к верхнему регистру

Сервер — адрес с протоколом или без (example.com = http://example.com); допускаются только схемы http/https, иначе ошибка. В адресе можно указать путь базы: адрес ресурса разрешается относительно него (URL), абсолютный URL в запросе переопределяет базу. Порт из аргумента переопределяет порт из адреса; 0/пропуск — оставить порт адреса, иначе используется 80/443 по схеме. Недопустимый порт — ошибка.

Таймаут задаётся в секундах (в миллисекунды переводит клиент); [Node] прерывает запрос по таймауту через AbortSignal.timeout. [браузер] таймаут не применяется, настройка РазрешитьАвтоматическоеПеренаправление тоже игнорируется — синхронный XHR сам следует редиректам. [Node] при РазрешитьАвтоматическоеПеренаправление = Ложь ответ 3xx возвращается как есть.

Пользователь/Пароль: если хотя бы один непустой, к запросу добавляется заголовок Authorization: Basic <base64(Пользователь:Пароль)>, перекрывая одноимённый заголовок из запроса. Прокси-аргумент игнорируется. ЗащищенноеСоединение (7-й аргумент): любое значение, кроме Неопределено, — ошибка «Защищенное соединение по произвольным сертификатам не поддерживается…»; используйте https в адресе.

Тело не отправляется для GET/HEAD (а также CONNECT через ВызватьHTTPМетод), даже если оно задано в запросе. Ответ 4xx/5xx — обычный HTTPОтвет, а не исключение. Ошибки транспорта оборачиваются в исключение «Не удалось выполнить HTTP-запрос <МЕТОД> : <причина>».

Второй аргумент ИмяФайлаОтвета (Получить, ОтправитьДляОбработки; третий у ВызватьHTTPМетод) принимается для совместимости, но непустое значение — ошибка «Запись ответа в файл не поддерживается». У остальных методов лишние аргументы игнорируются. ТипЗнч(Соединение) = HTTPСоединение.

[браузер] нужен CORS; заголовки, которые браузер запрещает менять (Cookie, User-Agent и т.п.), молча игнорируются; при сетевой ошибке или CORS-отказе — исключение. [Node] перед fetch отбрасывает служебные заголовки (Content-Length, Host, Connection, User-Agent, Transfer-Encoding и т.п.), TLS проверяется стандартно для Node; имена заголовков ответа приводятся к виду Content-Type.

HTTPЗапрос / HTTPRequest

Создание: Новый HTTPЗапрос(АдресРесурса, Заголовки); оба аргумента необязательны — по умолчанию адрес "" (база соединения), заголовки — пустое Соответствие.

Свойство Тип Доступ Описание
АдресРесурса / ResourceAddress Строка чтение/запись Абсолютный URL или путь относительно адреса соединения
Заголовки / Headers Соответствие чтение/запись Заголовки запроса; ключи сравниваются с учётом регистра
Метод Параметры Возвращает Описание
УстановитьТелоИзСтроки / SetBodyFromString Текст: Строка, Кодировка?: КодировкаТекста | Строка — Кодирует строку в тело; по умолчанию UTF-8 без BOM
ПолучитьТелоКакСтроку / GetBodyAsString — Строка | Неопределено Тело как текст (UTF-8, BOM распознаётся)
УстановитьТелоИзДвоичныхДанных / SetBodyFromBinaryData Данные: ДвоичныеДанные — Тело из двоичных данных
ПолучитьТелоКакДвоичныеДанные / GetBodyAsBinaryData — ДвоичныеДанные | Неопределено Тело как ДвоичныеДанные

Заголовки обязаны быть Соответствием, иначе ошибка «Неверный тип аргумента: Заголовки должны быть Соответствием». Присвоение свойства замещает объект Соответствие целиком. Ключи Соответствия сравниваются по значению, для строк — с учётом регистра, поэтому ищите/удаляйте заголовок в том же написании, в каком вставили; при basic-auth Authorization перекрывается без учёта регистра имени. Пока тело не задано, методы ПолучитьТелоКак* возвращают Неопределено.

Кодировка, переданная в УстановитьТелоИзСтроки, не запоминается: ПолучитьТелоКакСтроку всегда декодирует UTF-8 (с учётом BOM). ПолучитьТелоКакДвоичныеДанные возвращает ДвоичныеДанные (см. Двоичные данные: объекты). Индексация недоступна; ТипЗнч(Запрос) = HTTPЗапрос.

HTTPОтвет / HTTPResponse

Создание: напрямую не создаётся (Новый HTTPОтвет — «Тип 'HTTPОтвет' не найден»); экземпляр возвращают методы HTTPСоединения.

Свойство Тип Доступ Описание
КодСостояния / StatusCode Число чтение HTTP-статус ответа
Заголовки / Headers Соответствие чтение Заголовки ответа; содержимое Соответствия изменяемо
Метод Параметры Возвращает Описание
ПолучитьТелоКакСтроку / GetBodyAsString Кодировка?: КодировкаТекста | Строка Строка | Неопределено Тело как текст; по умолчанию кодировка из Content-Type
ПолучитьТелоКакДвоичныеДанные / GetBodyAsBinaryData — ДвоичныеДанные | Неопределено Тело как ДвоичныеДанные
Закрыть / Close — — Освобождает тело ответа; идемпотентно

ПолучитьТелоКакСтроку без аргумента берёт charset из Content-Type (по умолчанию UTF-8); явная кодировка перекрывает заголовок. Тело отсутствует (методы возвращают Неопределено) при HEAD, статусах 204/304 и Content-Length: 0.

gzip/сжатый ответ нормализуется транспортом: тело приходит распакованным, заголовок Content-Encoding удаляется, Content-Length пересчитывается под фактическую длину.

Закрыть освобождает тело, но КодСостояния и Заголовки остаются доступны; повторный вызов безопасен. Свойство Заголовки только для чтения (менять можно содержимое Соответствия); имена заголовков — как их вернул транспорт ([Node] приводит к виду Content-Type), поиск по имени — с учётом регистра, а служебные Content-Type/Content-Encoding/Content-Length клиент ищет без учёта регистра. Индексация недоступна; ТипЗнч(Ответ) = HTTPОтвет.

Фоновые задания

Глобальный объект ФоновыеЗадания/BackgroundJobs — единственный экземпляр МенеджерФоновыхЗаданий; регистрируется в stdlib и доступен и в Node, и в браузере. Модель кооперативная: задания — логические потоки в одном JS-потоке с общим состоянием модуля; переключение происходит в точках ожидания и по квантам (~10 мс).

ФоновыеЗадания / BackgroundJobs

Создание: глобальный объект; собственного конструктора нет (Новый МенеджерФоновыхЗаданий — «Тип … не найден»).

Свойства: нет.

Метод Параметры Возвращает Описание
Выполнить / Execute Объект: Объект, ИмяМетода: Строка, Параметры?: Массив, Длительное?: Булево ФоновоеЗадание Запускает метод объекта в фоновом задании
Очистить / Clear — — Очищает реестр заданий
ОжидатьВсе / WaitAll Задания: Массив, Таймаут?: Число Булево Ждёт завершения всех заданий из массива
ОжидатьЛюбое / WaitAny Задания: Массив, Таймаут?: Число Число Ждёт первое завершившееся задание
ОжидатьЗавершенияЗадач / WaitCompletionOfTasks — — Ждёт все задания реестра; при аварийном — исключение
ПолучитьФоновыеЗадания / GetBackgroundJobs Фильтр?: Структура Массив Снимок заданий, возможно с фильтром
ПолучитьТекущее / GetCurrent — ФоновоеЗадание | Неопределено Текущее задание (внутри задания)

Параметры задания — Массив, его элементы передаются методу позиционными аргументами: Новый Массив(20) — это массив из 20 пустых элементов, а не один аргумент 20; один аргумент — Массив из одного элемента (Параметры.Добавить(20)). Состав массива копируется в момент запуска (значения элементов общие), поэтому дальнейшие изменения массива-источника на задание не влияют. Параметры должны быть Массивом либо Неопределено.

Выполнить синхронно возвращает ФоновоеЗадание, а исполнение стартует в ближайшем кванте (queueMicrotask): сразу после запуска состояние — НеВыполнялось. Объект — ЭтотОбъект или Сценарий; проверяется наличие метода (Метод объекта не обнаружен). Четвёртый аргумент Длительное принимается для совместимости и не влияет на исполнение.

Таймауты ожиданий — миллисекунды; 0 или пропуск — ждать бесконечно; отрицательное значение — ошибка «Неверное значение аргумента: таймаут». ОжидатьВсе возвращает Ложь по таймауту (задания продолжают работу); по пустому массиву — Истина. ОжидатьЛюбое возвращает индекс первого завершившегося задания или -1 по таймауту; пустой массив — ошибка «ОжидатьЛюбое: нужен непустой массив заданий».

ОжидатьЗавершенияЗадач дожидается заданий, бывших в реестре на момент вызова; при аварийном завершении бросает исключение со списком методов и описаний (задания остаются в реестре), при успехе удаляет ожидавшиеся задания. Задания, созданные во время ожидания, остаются. Если реестр пуст — сразу возвращает Неопределено.

Очистить очищает реестр, но не отменяет уже выполняющиеся задания.

ПолучитьФоновыеЗадания возвращает снимок Массив: активные — в порядке запуска, затем завершённые — в порядке завершения. Фильтр — Структура с ключами Состояние/State (значение СостояниеФоновогоЗадания), ИмяМетода/MethodName (без учёта регистра), Объект/Object, УникальныйИдентификатор/UUID; неизвестные ключи и значения неверного типа игнорируются. ПолучитьТекущее внутри задания возвращает само ФоновоеЗадание, вне задания — Неопределено.

Хост после тела скрипта дожидается активных заданий и Обещаний (flushAsync), поэтому отложенный вывод не теряется. Единственные точки переключения основного скрипта — ожидания заданий и Приостановить (см. Вывод, пауза и базовые значения); импортируемые #Использовать-модули рекомендуется держать синхронными. ТипЗнч(ФоновыеЗадания) = МенеджерФоновыхЗаданий.

Нет настоящего параллелизма CPU, отмены, приоритетов, ТекущийПоток и БлокировкаРесурса (осознанное расхождение с эталонными потоками C#). Задание на Асинх-метод получает Обещание в Результат и не ждёт его.

ФоновоеЗадание

Создание: возвращается ФоновыеЗадания.Выполнить(...); публичного конструктора нет (Новый ФоновоеЗадание — «Тип … не найден»).

Свойство Тип Доступ Описание
УникальныйИдентификатор / UUID УникальныйИдентификатор чтение Уникальный идентификатор задания
ИмяМетода / MethodName Строка чтение Имя запущенного метода
Объект / Object Объект чтение Объект, которому принадлежит метод
Состояние / State [СостояниеФоновогоЗадания](#перечисления) чтение НеВыполнялось, Активно, Завершено, ЗавершеноАварийно
Параметры / Parameters Массив | Неопределено чтение Копия массива аргументов на момент запуска
Результат / Result Любое чтение Значение, возвращённое методом; Неопределено до завершения
ИнформацияОбОшибке / ExceptionInfo ИнформацияОбОшибке | Неопределено чтение Ошибка аварийного завершения
Метод Параметры Возвращает Описание
ОжидатьЗавершения / Wait Таймаут?: Число Булево Истина — задание завершено, Ложь — таймаут

ОжидатьЗавершения возвращает Истина и для успешно, и для аварийно завершённого задания: ошибка задания не бросается ожиданием, а попадает в ИнформацияОбОшибке (Описание — текст ошибки). По таймауту (миллисекунды, 0 — бесконечно) возвращается Ложь, задание продолжает работу. Повторное ожидание завершённого задания сразу возвращает Истина. ТипЗнч(Задание) = ФоновоеЗадание. Английского алиаса типа нет: Тип("BackgroundTask") не канонизируется.

Обещания

Обещание — непрозрачный handle вызова Асинх-метода. Синтаксис Асинх/Ждать, правила и диагностика — в README, «Асинх/Ждать»; краткая выборка — bsl-surface.md.

Обещание

Создание: конструктора нет (Новый Обещание — «Тип 'Обещание' не найден»); экземпляр возвращает вызов Асинх-функции или Асинх-процедуры.

Свойства: нет. Методы: нет. Индексация недоступна. Английского алиаса типа нет: Тип("Promise") не канонизируется.

Единственный способ получить результат — оператор Ждать: для выполненного обещания он сразу возвращает значение, для отвергнутого — бросает исходную ошибку в точке ожидания, для незавершённого — приостанавливает текущий логический поток. Параметры async-методов передаются по значению; Асинх-процедура тоже возвращает Обещание (её результат — Неопределено).

Строка(Обещание) = "Обещание"; ТипЗнч(Обещание) = Обещание; Тип("Обещание") = ТипЗнч(Обещание) — истина. Доступ к методам/свойствам и индексация дают ошибки «Метод … не найден», «Свойство … не найдено», «Индексация недоступна».

Повторное ожидание кэшируется: результат или ошибка вычисляются один раз и возвращаются повторно. Ошибка, возникшая до первой приостановки, сохраняется в Обещании и не бросается в точке вызова. Необработанная ошибка (обещание никто не Ждать) уходит в console.error/stderr после текущего тика и не прерывает сценарий; хост дожидается async-тела и всех Обещаний (flushAsync), поэтому отложенный вывод не теряется.

Ждать не-Обещания возвращает значение как есть. Рекурсивного разворачивания нет: если Асинх-функция вернула другое Обещание, Ждать вернёт это вложенное Обещание — его нужно ожидать отдельно. Отмены, таймаутов ожидания и КогдаВсе/КогдаЛюбой нет.

Браузер: DOM и события

Объекты Документ/Document, ЭлементDOM, СобытиеDOM и СтильDOM существуют только в браузерной сборке (createBrowserGlobalContext, элемент <one-script>) — [браузер]. В Node/CLI и в createGlobalContext() глобального Документ нет: Документ = Неопределено, обращение к методу — ошибка «Метод '…' недоступен для Неопределено». Общая stdlib остаётся Node-совместимой.

Имена типов для ТипЗнч: ДокументDOM, ЭлементDOM, СобытиеDOM, СтильDOM. Конструкторы в BSL не зарегистрированы: Новый Документ/Новый ЭлементDOM — «Тип … не найден».

Декларативные обработчики data-os-* и переменная Событие в них описаны в README, «События элементов»; здесь — программный API НаСобытие. Код обработчика исполняется в области видимости скрипта-подписчика.

Документ / Document

Создание: глобальный объект браузерной сборки (Документ/Document); обёртка над document.

Свойство Тип Доступ Описание
ТелоКорпуса / Body ЭлементDOM | Неопределено чтение Элемент <body>
Заголовок / Title Строка чтение/запись Заголовок документа (document.title)
Метод Параметры Возвращает Описание
ПолучитьЭлемент / GetElementById Идентификатор: Строка ЭлементDOM | Неопределено Элемент по id
СоздатьЭлемент / CreateElement ИмяТега?: Строка ЭлементDOM Новый несмонтированный элемент; без аргумента — div
Запросить / QuerySelector Селектор: Строка ЭлементDOM | Неопределено Первый элемент по CSS-селектору
ЗапроситьВсе / QuerySelectorAll Селектор: Строка Массив Все элементы по CSS-селектору

Ненайденный элемент — Неопределено. ЗапроситьВсе возвращает снимок Массив элементов. Индексация недоступна; ТипЗнч(Документ) = ДокументDOM.

ЭлементDOM

Создание: возвращается методами Документа и других элементов; напрямую не создаётся.

Свойство Тип Доступ Описание
Текст / Text Строка чтение/запись Текстовое содержимое (textContent)
HTML / InnerHTML Строка чтение/запись HTML-содержимое (innerHTML)
Значение / Value Строка чтение/запись Значение поля ввода; у прочих элементов — пустая строка
Идентификатор / Id Строка чтение/запись Атрибут id
Класс / ClassName Строка чтение/запись Атрибут class
ИмяТега / TagName Строка чтение Имя тега в нижнем регистре
Стиль / Style СтильDOM чтение Обёртка над element.style
Родитель / Parent ЭлементDOM | Неопределено чтение Родительский элемент
Дети / Children Массив чтение Дочерние элементы (без текстовых узлов)

Индексация: Элемент[i] — дочерний элемент с индексом i (с нуля) или Неопределено; запись по индексу недоступна.

Метод Параметры Возвращает Описание
УстановитьАтрибут / SetAttribute Имя: Строка, Значение: Строка — Устанавливает атрибут
ПолучитьАтрибут / GetAttribute Имя: Строка Строка | Неопределено Значение атрибута; нет атрибута — Неопределено
УдалитьАтрибут / RemoveAttribute Имя: Строка — Удаляет атрибут
ДобавитьВ / AppendTo Родитель: ЭлементDOM — Вставляет элемент в конец родителя (переносит узел)
Добавить / Append Ребёнок: ЭлементDOM — Добавляет дочерний элемент (переносит узел)
Удалить / Remove — — Удаляет элемент из документа
ДобавитьКласс / AddClass Класс: Строка — Добавляет CSS-класс
УбратьКласс / RemoveClass Класс: Строка — Удаляет CSS-класс
ЕстьКласс / HasClass Класс: Строка Булево Проверяет наличие CSS-класса
НаСобытие / OnEvent Событие: Строка, Код: Строка — Подписка на DOM-событие; код исполняется в области модуля
СнятьСобытие / OffEvent Событие: Строка — Снимает обработчик DOM-события
Запросить / QuerySelector Селектор: Строка ЭлементDOM | Неопределено Первый потомок по CSS-селектору

НаСобытие исполняет Код как фрагмент модуля с локальной переменной Событие (см. СобытиеDOM); повторная подписка на тот же тип DOM-события замещает предыдущий обработчик, СнятьСобытие удаляет его. Имена событий русские/английские (см. таблицу ниже), неизвестное имя передаётся в DOM как есть — так подписываются на произвольные события (pointerdown и т.п.).

Имя в BSL DOM-событие
Нажатие / Click click
ДвойноеНажатие / DoubleClick dblclick
Ввод / Input input
Изменение / Change change
Наведение / MouseEnter mouseenter
Уход / MouseLeave mouseleave
НажатиеКлавиши / KeyDown keydown
Отправка / Submit submit

Ошибки в обработчике (синхронные и асинхронные) выводятся в console.error и не ломают страницу. ДобавитьВ/Добавить переносят существующий узел (DOM appendChild). Класс — строка атрибута class; для массовых классов используйте ДобавитьКласс/УбратьКласс. Индексация только для чтения; ТипЗнч(Элемент) = ЭлементDOM.

СобытиеDOM

Создание: движок создаёт объект на каждое DOM-событие; в inline-коде обработчика доступен как Событие (метод НаСобытие, декларативные data-os-*); в вызываемые процедуры автоматически не передаётся.

Свойство Тип Доступ Описание
Тип / Type Строка чтение Тип DOM-события (click, input, …)
Цель / Target ЭлементDOM | Неопределено чтение Элемент-источник события (event.target)
Отменено / DefaultPrevented Булево чтение Отменено ли действие по умолчанию
Метод Параметры Возвращает Описание
Отменить / PreventDefault — — Отменяет действие по умолчанию
ОстановитьРаспространение — — Останавливает всплытие события

Объект живёт, пока выполняется обработчик (при Ждать/Приостановить — до его завершения); переменная между вызовами — через Перем. Цель — именно event.target, отдельного currentTarget нет: контейнер определяйте через Родитель или передавайте явно. В реализации распознаётся только русское имя ОстановитьРаспространение (английский алиас StopPropagation не срабатывает — ошибка «Метод … не найден»).

СтильDOM

Создание: Элемент.Стиль; напрямую не создаётся.

Свойство Тип Доступ Описание
CSS-свойство (например, color) Строка чтение/запись Значение CSS-свойства; имя приводится к нижнему регистру
Метод Параметры Возвращает Описание
Установить / Set Свойство: Строка, Значение: Строка — Устанавливает CSS-свойство (style.setProperty)
Получить / Get Свойство: Строка Строка Значение CSS-свойства; не задано — пустая строка
Удалить / Remove Свойство: Строка — Удаляет CSS-свойство (style.removeProperty)

Свойства через точку доступны только для имён без дефиса (Стиль.color); для CSS-имён с дефисом (font-size) и custom properties (--x) используйте Установить/Получить/Удалить. Индексация недоступна; ТипЗнч(Стиль) = СтильDOM.

Тестирование

Тестовый модуль в формате xUnitFor1C: функция ПолучитьСписокТестов(ЮнитТестирование) возвращает Массив имён процедур, которые прогоняет библиотечная функция runTests (TS; возвращает TestResult[] — name, passed, error?, упавший тест не прерывает прогон). Запуск и формат — в README, «Файлы и тестирование». Раннер синхронный: тесты с Приостановить и ожиданиями не поддерживаются (ошибка «xUnit-тесты с приостановкой не поддерживаются»). Утверждения доступны через переданный юТест и глобальный Ожидаем (директива #Использовать asserts не нужна — no-op).

ЮнитТестирование

Создание: экземпляр создаёт раннер и передаёт его аргументом в ПолучитьСписокТестов; в BSL тип называется ЮнитТестирование, отдельного конструктора нет (Новый ЮнитТестирование — «Тип … не найден»). TS-класс — BslTestContext (это не BSL-алиас: Тип("BslTestContext") не канонизируется).

Свойства: нет.

Метод Параметры Возвращает Описание
ПодробныеОписанияОшибок / ShowDetailedErrors Использовать: Булево — Запоминает флаг подробных сообщений
ТестПровален / Fail Описание?: Строка — Проваливает тест исключением «Тест провален…»
ИмяВременногоФайла / TempFileName Расширение?: Строка Строка Имя временного файла в каталоге TMPDIR/TEMP/TMP; по умолчанию расширение tmp
ПроверитьРавенство / AssertEquals Ожидаемое: Любое, Фактическое: Любое — Проверяет равенство
ПроверитьНеравенство / AssertNotEquals Ожидаемое: Любое, Фактическое: Любое — Проверяет неравенство
Проверить / Assert / ПроверитьВерно / AssertTrue Условие: Булево — Проверяет истинность условия
ПроверитьИстина / ПроверитьИстину Значение: Булево — Проверяет, что значение истинно
ПроверитьЛожь / AssertFalse Значение: Булево — Проверяет, что значение ложно
ПроверитьЗаполнено Значение: Любое — Проверяет, что значение приводится к Истина
ПроверитьБольше Большее: Число, Меньшее: Число — Первый аргумент должен быть больше второго
ПроверитьМеньше Меньшее: Число, Большее: Число — Первый аргумент должен быть меньше второго
ПроверитьВхождение Строка: Строка, Подстрока: Строка — Проверяет вхождение подстроки
ПроверитьТип Значение: Любое, ОжидаемыйТип: Тип | Строка — Сверяет ТипЗнч значения

При провале проверки бросается исключение (его перехватывает раннер и пишет в error); успешная проверка возвращает Неопределено. Третий аргумент-сообщение у ПроверитьРавенство/ПроверитьНеравенство для совместимости принимается, но в тексте ошибки не используется.

ПроверитьЗаполнено считает пустым всё, что приводится к Ложь: пустая строка, 0, Ложь, Неопределено, Null — проверка проваливается. ИмяВременногоФайла только строит имя: файл не создаётся и автоматически не удаляется. ПодробныеОписанияОшибок сохраняет флаг, но текущий раннер его не использует. ТипЗнч(юТест) = ЮнитТестирование.

Ожидаем / Expect

Создание: глобальный объект stdlib (доступен в Node и в браузере).

Свойства: нет.

Метод Параметры Возвращает Описание
Что / What Значение: Любое, Текст?: Строка Ожидание Начинает цепочку проверок; Текст попадает в сообщение об ошибке

Ожидаем.Что(2 + 2).Равно(4) — проверки выполняются по мере вызова матчеров; при провале бросается исключение, иначе матчер возвращает Неопределено. ТипЗнч(Ожидаем) = Ожидаем.

Ожидание

Создание: возвращается Ожидаем.Что(...); напрямую не создаётся.

Свойства: нет.

Метод Параметры Возвращает Описание
Равно / Equals Ожидаемое: Любое — Значения равны
НеРавно / NotEquals Ожидаемое: Любое — Значения не равны
Больше / Greater Ожидаемое: Любое — Фактическое больше
Меньше / Less Ожидаемое: Любое — Фактическое меньше
БольшеИлиРавно / GreaterOrEqual Ожидаемое: Любое — Фактическое не меньше
МеньшеИлиРавно / LessOrEqual Ожидаемое: Любое — Фактическое не больше
ЭтоИстина / IsTrue — — Фактическое истинно
ЭтоЛожь / IsFalse — — Фактическое ложно
ЭтоНе / Not — Ожидание Инвертирует следующую проверку цепочки
ИмеетДлину / HasLength Длина: Число — Длина строки или коллекции
Существует / Exists — — Значение не Неопределено и не Null
Содержит / Contains Подстрока: Строка — Строковое представление содержит подстроку

ЭтоНе() возвращает новое ожидание с инверсией: Ожидаем.Что(1).ЭтоНе().Равно(2). ИмеетДлину работает для строк и BSL-коллекций (длина итератора), для прочих типов — ошибка. Содержит сравнивает строковые представления. При наличии Текст в Ожидаем.Что(...) сообщение об ошибке начинается с него. ТипЗнч(Ожидание) = Ожидание.