Перейти к основному содержимому

Новое в версии 6.1

Содержание

Системные требования

Изменены системные требования для «1С:Шины». Теперь для работы сервера требуется наличие Java Runtime Environment (JRE) версии 17.

Сервер

Настроечные файлы сервера

Добавлен новый настроечный файл сервера jobs.yml, в котором задается размер пула потоков фоновых заданий.

Авторизация и аутентификация для доступа к HTTP-сервисам / API

Изменился запрос на получение токена аутентификации:

  • Устаревший формат: /auth/oidc/token.
  • Рекомендуемый формат:
    • /{app}/sys/token — для встроенных в «Шина» приложений, например /console/sys/token для панели управления;
    • /applications/{app}/sys/token — для прикладных приложений.

Хранилище двоичных данных

Добавлена поддержка ограничения размера загружаемых двоичных данных на сервере.

Максимальный и минимальный размер загружаемого объекта можно задать в форме настройки правил хранилища. Для этого в панели управления выберите приложение, перейдите на вкладку Объектные хранилища и в меню выберите пункт «Изменить правила использования хранилища»:

Изменение правил использования хранилища

В пространство имен Стд::ОбъектноеХранилище:События добавлены события, которые записываются в журнал событий при превышении допустимых размеров:

  • ОшибкаПревышенияДопустимогоРазмераДвоичногоОбъекта,
  • ОшибкаПревышенияДопустимогоРазмераОбъектногоХранилища,
  • ОшибкаПревышенияДопустимогоРазмераДвоичныхОбъектовЗаПериод.

Создание снимков данных приложения при подготовке миграции

В случае возникновения ошибки при подготовке миграции «1С:Шина» собирает снимки данных приложения (дампы) и отправляет их в сервис «1С:Пульт». В состав дампа входят:

  • Трассировка стека и причина ошибки.
  • Снимок состояния базы данных, хранящей метаданные приложения, до и после перехода на новый проект.
  • Служебный файл report.json, содержащий отчет для отправки в «1С:Пульт».
  • Дополнительная информация:
    • время возникновения ошибки,
    • время работы,
    • версия проекта,
    • квалификатор дампа (обозначает сценарий, в рамках которого произошло исключение),
    • идентификатор сессии.

Панель управления

Раздел «Проекты»

Открытие панели управления из среды разработки

При открытии панели управления из палитры команд среды разработки открывается окно с текущим разрабатываемым приложением.

Удаление приложения из панели управления

При удалении приложения, открытого в среде разработки, теперь можно предварительно закрыть его, сохранив изменения, или закрыть без сохранения:

Удаление приложения, открытого �в среде разработки

Регистрация и аутентификация пользователей

Операции самообслуживания пользователей

Добавлена страница самообслуживания, на которой пользователь приложения может управлять способами аутентификации, менять пароль, добавлять и подтверждать контактную информацию. Если пользователю необходимо подтвердить контактную информацию или сменить пароль, он будет перенаправлен на эту страницу сразу после входа в приложение.

Объектная модель

Добавлено пространство имен Стд::Пользователи::Самообслуживание, в котором содержатся типы для работы с операциями самообслуживания.

Самостоятельная регистрация пользователей

Самостоятельная регистрация пользователей ― это программный интерфейс, позволяющий разработчику создавать страницы самостоятельной регистрации пользователей приложения. Новый пользователь может выбрать способ аутентификации из разрешенных администратором для данного приложения. При регистрации с использованием логина и пароля обязательно указывается контактная информация, которая подтверждается в процессе регистрации. В ходе регистрации от пользователя можно потребовать ввести дополнительные данные и потом использовать их при инициализации пользователя приложения. При помощи этого механизма разработчик приложения может реализовать собственный механизм регистрации пользователя по приглашению.

Пользовательский интерфейс страницы регистрации можно разработать самостоятельно с использованием программного интерфейса или при помощи специального компонента SelfRegistrationComponent, который реализует логику регистрации. В его свойстве UserDataEditForm можно указать собственную форму для редактирования пользовательских данных.

Форма самостоятельной регистрации задается в свойстве КлиентскоеПриложениеСамостоятельнойРегистрации проекта (Проект.yaml). Например:

Произвольное клиентское приложение, которое используется для самостоятельной регистрации
ВидЭлемента: КомпонентИнтерфейса
Ид: 9c5709c8-60ce-44c7-b46b-933c3940f908
Имя: ФормаРегистрацииВПриложении
ОбластьВидимости: ВПроекте
Наследует:
Тип: ПроизвольноеКлиентскоеПриложение
Путь: custom-registration
РежимАутентификации: НеАутентифицированный
Содержимое:
Тип: SelfRegistrationComponent
Имя: КомпонентСамостоятельнойРегистрации
Описание проекта
Ид: 0eb9df7a-d688-4673-a3c6-d314f2664c26
Версия: 1.0
Имя: МоеПриложение
КлиентскоеПриложениеСамостоятельнойРегистрации: ФормаРегистрацииВПриложении
Поставщик: МояКомпания
Представление: Мое приложение
ПредставлениеПоставщика: Моя компания
РежимСовместимости: 6.1
ЯзыкПоУмолчанию: Русский
ЯзыкРазработки: Русский
ЯзыкиЛокализации:
- Русский

«1С:Шина» предоставляет готовую страницу самостоятельной регистрации пользователей без возможности ввести дополнительные данные в момент регистрации.

Объектная модель

Редактирование формы аутентификации

Добавлена возможность изменить форму аутентификации для приложения.

Событие успешной аутентификации пользователя

В пространство имен Стд::Пользователи::События добавлено событие СобытиеПользовательАутентифицирован, которое записывается в журнал событий при успешной аутентификации пользователя в приложении.

Среда разработки

Настройка параметров сред разработки

Реализована возможность задавать и редактировать параметры запуска среды разработки из панели управления (подробнее).

Публикация проекта перед отладкой и открытием

Если в проекте есть неопубликованные изменения, при запуске отладки или открытии появляется окно с предложением опубликовать проект.

Анимация при переходе в автономный режим

Если среда разработки теряет соединение с сервером, строка состояния и панели действий окрашиваются в оранжевый цвет. «1С:Шина» показывает предупреждение о том, что среда разработки перешла в автономный режим и изменения не будут сохранены.

Предупреждение о потере соединения с сервером

Создание нового элемента

Упрощен процесс создания новых элементов в навигаторе проекта.

При выборе пункта Новый контекстного меню теперь отображается окно выбора доступных элементов, с группировкой и поиском:

Окно выбора нового элемента

При создании нового элемента пользователю предлагается автоматически сгенерированное имя, которое можно изменить непосредственно в навигаторе проекта:

Окно создания нового элемента

примечание

При попытке ввести недопустимое имя элемента, например уже существующее, пользователю выводится ошибка.

Панель свойств

В панели свойств выполнены следующие изменения:

  • Добавлена возможность изменять порядок элементов для коллекций данных.
  • Теперь автоматически отображается значение по умолчанию.
  • Реализована поддержка многострочного режима для строк, например для пользовательских заголовков.
  • Названия слишком длинных свойств теперь полностью отображаются во всплывающей подсказке.
  • При выборе изображения доступен его предварительный просмотр.
  • При добавлении типа или ресурса соответствующее пространство имен импортируется автоматически.
  • При указании длины префикса и постфикса добавлена возможность установить неограниченное значение.
  • Реализовано выделение текущего элемента при навигации с помощью клавиатуры.

Автоматическое добавление описания подсистемы

  • При добавлении подсистемы автоматически создается элемент Описание подсистемы, при нажатии на который открывается панель Свойства, позволяющая задать основные свойства подсистемы и указать список используемых подсистем:

Свойства подсистемы

Автоматическое создание модуля при генерации обработчика

Теперь при создании обработчика через панель свойств автоматически создается модуль (если он еще не был создан), который уже включает в себя соответствующий метод.

В общем случае автоматически генерируемое имя обработчика включает в себя имя элемента, имя события и тип обработчика. Для разных типов элементов, таких как HTTP-сервисы, SOAP-сервисы, компоненты «1С:Шины», используются различные схемы генерации имени.

Например, для метода ЛюбойМетод шаблона ПолучитьСделку HTTP-сервиса СделкиHttpСервис:

  • схема генерации имени:
    • ИмяШаблона + ЛюбойМетод + ОбработкаЗапроса
  • имя обработчика:
    • ПолучитьСделкуЛюбойМетодОбработкаЗапроса

Указание типа в панели свойств

При указании типа доступны такие операции, как группировка, фильтрация, поиск и т. д.:

Указание типа в панели свойств

Выбор значения «Авто» для свойств

  • Значение Авто теперь доступно в выпадающих списках.

  • Для типа Булево значения Авто и Истина/Ложь отображаются в виде переключателя из трех кнопок:

    Авто для Булево

    примечание

    В большинстве случаев значение Авто устанавливается системой автоматически как значение по умолчанию.

Поиск в панели свойств

В панели свойств реализованы следующие возможности:

  • подсветка результатов поиска — выделяется искомая подстрока;

    Подсветка результатов поиска в панели свойств

  • поиск по значениям — выделяется весь редактор конкретного свойства со значением, включающим искомую строку.

    Поиск по значениям полей

Отображение иконок при ошибках и выделении неподдерживаемых элементов

В панели свойств при выделении объекта, отображение которого не поддерживается в панели свойств, выводится надпись «Нет свойств, доступных для редактирования», а в случае ошибки — «Произошла ошибка при открытии панели свойств»:

Элемент не поддерживается

Отображение панели свойств, если элемент не поддерживается

Ошибка отображения

Отображение панели свойств, если произошла ошибка

Навигатор проекта

Улучшены внешний вид и удобство использования навигатора проекта и узлов в нем:

  • заголовок навигатора изменен на Проект;
  • реализовано отображение контекстного меню в пустом пространстве навигатора проекта;
  • при наведении на дерево элементов навигатора отображается значок +, который открывает меню создания нового элемента;
  • вкладка Задачи перенесена в панель Система управления версиями;
  • добавлена команда Свернуть все, которая сворачивает все развернутые файлы проекта до первого уровня иерархии.

Панель «Проблемы»

Переработана панель «Проблемы»:

  • Список файлов теперь отображается в соответствии со структурой проекта.

    Обновленная панель «Проблемы»

  • При выборе ошибки все связанные с этой ошибкой элементы автоматически выделяются/отображаются в соответствующих панелях среды разработки. Файл проекта, содержащий ошибку, открывается для редактирования.

  • Поддержано использование механизма быстрых исправлений.

    Быстрые исправления в панели «Проблемы»

  • Добавлена фильтрация ошибок по типу и области видимости.

    Фильтрация в панели «Проблемы»

  • Реализован поиск по имени файла и тексту ошибок.

  • Добавлена возможность сворачивать/разворачивать список ошибок.

  • Добавлена команда выгрузки списка ошибок в файл в формате .tsv.

Улучшение пользовательского интерфейса

Для улучшения пользовательского интерфейса добавлены следующие возможности:

  • Во время инициализации среды разработки отображается скелет навигатора проекта и панели свойств:

    Отображение скелета навигатора проекта и панели свойств

  • В представлениях Система управления версиями, Поиск и История теперь отображаются не файлы, а иконки и имена объектов из навигатора проекта.

Процессы интеграции

Для элемента проекта ПроцессИнтеграции реализована возможность задавать маршруты и связи между узлами с помощью точек соединения. Также можно изменять и передвигать существующие маршруты для более удобного расположения их на экране.

Настройка связи между узлами

Оптимизация и ускорение работы

  • Оптимизированы время и объем памяти, требующиеся для запуска среды разработки и сборки проекта. Так, например, ускорение сборки при изменении одного модуля составило около 40 %.
  • Значительно ускорена работа контекстной подсказки на больших файлах и файлах со множеством зависимостей.

Групповая разработка

  • Реализована поддержка параллельной разработки веток несколькими разработчиками (подробнее).

  • В панели управления для новых и существующих веток добавлена возможность загружать проект из файла (подробнее).

    Диалоговое окно загрузки проекта в ветку

  • Добавлено представление История, позволяющее просматривать историю изменений для элементов проекта.

    Представление «История»

  • В представление Система управления версиями добавлена группа Поиск и сравнение, в которой разработчики могут выполнять поиск коммитов, а также сравнивать выбранные ветки, теги или коммиты.

    Поиск и сравнение коммитов

  • Добавлена возможность отменять изменения в панели diff среды разработки (подробнее).

  • Для задачи в статусе В работе доступна кнопка Вернуть в открытые, которая позволяет вернуть задачу в состояние Открыта после начала работы.

  • При создании нового приложения для разработки задачи или ветки реализована возможность сгенерировать приложение по существующей ветке проекта. Для этого из ветки будет сформирована новая сборка.

  • На вкладке РазработкаЗадачи доступна фильтрация задач по проектам.

  • Улучшен механизм проверки задач:

    • Статус проверки задачи теперь отображается в карточке задачи в панели управления.

      Карточка задачи

    • На вкладке Проверка задачи в среде разработки при нажатии на путь к файлу задачи, содержащему комментарии, открывается панель diff.

    • Для добавления комментария в панели diff теперь используется значок комментария.

    • Для комментариев отображаются дата и время их создания / редактирования.

    • Добавление комментариев доступно только для файлов задачи, находящейся на проверке, и только для тех изменений, которые были сделаны в рамках этой задачи.

    • К редактору комментариев в среде разработки добавлена кнопка Отмена, которая позволяет отменить ввод комментария и закрыть редактор.

    • Когда проверяющий нажимает на кнопку Проверено или Требует доработки на вкладке Проверка задачи в среде разработки, к этой кнопке добавляется изображение его иконки пользователя.

    • В среде разработки в группе Задачи добавлена индикация наличия комментариев к задаче.

      Комментарии в среде разработки

    • Если файл был изменен после того, как пользователь оставил комментарий, то файл помечается как устаревший.

      Отметка, что файл устарел

    • Исполнители и проверяющие автоматически удаляются из задачи при их исключении из проекта.

  • Добавлена иконка «Внимание» Иконка «Внимание», которая указывает на необходимость обновления приложения в связи с появлением новых изменений в связанной ветке проекта. Данная иконка отображается:

    • на вкладке Приложения в колонке Сборки списка приложений;
    • в карточке приложения на вкладке Проект в поле Ветка;
    • в списке задач проекта в колонке Приложение;
    • в списке веток проекта в колонке Приложение;
    • в карточке ветки в поле Приложение.

    При нажатии на иконку открывается форма обновления приложения по ветке.

  • Скрыто уведомление об ошибке, появляющееся, когда среда разработки «Шины» запускается на машине, на которой отсутствует клиент Git.

  • Улучшено описание ошибки доступа к репозиторию при открытии среды разработки:

    Ошибка доступа к репозиторию GitLab

  • Префикс origin/ больше не добавляется к именам веток удаленного репозитория.

  • В представлении Система управления версиями среды разработки скрыты лишние команды и кнопка меню Кнопка «Многоточие» в группах Коммиты, Ветки, Теги и Участники.

  • Запрещена фиксация изменений при переходе на отдельный коммит или тег. В этом случае «1С:Шина» отобразит уведомление о необходимости переключиться на ветку, чтобы сохранить изменения. При переходе на ветку разработчик может указать, требуется ли перенести сделанные изменения или нужно сбросить их.

  • Если при разрешении конфликта слияния разработчик не проиндексировал сделанные изменения, а сразу нажал кнопку Завершить слияние и отправить, появится всплывающее окно с просьбой добавить все измененные файлы в индекс коммита.

    Диалоговое окно для добавления конфликтующих файлов в индекс коммита

  • Переработана команда по переносу коммита из одной ветки в другую (git cherry-pick):

    • Команда Отобрать лучшее переименована в Отобрать коммит в текущую ветку.
    • Удалена команда отбора коммита, позволяющая изменить сообщение коммита перед выполнением операции (git cherry-pick --edit).
    • Перед выполнением операции производится проверка, что изменения в текущей ветке синхронизированы с репозиторием проекта.
    • Если операция переноса завершается успешно, выполняется синхронизация изменений с репозиторием проекта.
  • В панели управления добавлена проверка наличия незафиксированных изменений при выполнении следующих операций:

    Если незафиксированные изменения обнаружены, показывается диалоговое окно с соответствующим предупреждением.

    Предупреждение о несохраненных изменениях

  • В панели управления изменено поведение при обновлении приложения, связанного с веткой. Если ветка открыта в среде разработки и содержит незафиксированные изменения, то при обновлении приложения «1С:Шина» отобразит окно с соответствующим предупреждением:

    Предупреждение о несохраненных изменениях при обновлении приложения

    Разработчик может выбрать один из следующих вариантов:

    • Закрыть и обновить. «1С:Шина» обновит рабочую область и загрузит в ветку новый проект. Все несохраненные изменения будут утеряны.
    • Продолжить. Среда разработки не будет закрыта, и все незафиксированные изменения сохранятся.
    • Отмена. Операция обновления будет отменена.
  • Если на сервере не установлен Git, во всех формах списка групповой разработки (Задачи, Ветки, Разработчики, Хранилища репозиториев) отображается соответствующая надпись:

    Сообщение о необходимости установить Git

  • Добавлена возможность проверить настройки доступа (чтобы проверить их актуальность, например, при смене пароля или ключа учетной записи пользователя внешнего репозитория). Для этого в проекте перейдите на вкладку Разработчики, выберите нужного разработчика и нажмите кнопку Настройки доступа:

    Настройка доступа для разработчика

    В открывшемся окне введите данные пользователя и нажмите кнопку Проверить:

    Проверка настроек доступа

Разработка библиотек

Добавлена возможность разрабатывать проекты библиотек. Библиотека представляет собой набор готовых универсальных механизмов для решения различных задач. Использование библиотек помогает избежать дублирования кода, сократить количество ошибок, упростить и ускорить разработку приложений. «1С:Шина» позволяет как создавать собственные библиотеки, так и подключать к проекту сторонние библиотеки, созданные другими разработчиками.

Элементы проекта

Проект

В файле описания проекта Проект.yaml выполнены следующие переименования:

  • РазработчикПоставщик;
  • ПредставлениеРазработчикаПредставлениеПоставщика;
  • ПроектПоставщикаНаОсновеПроекта.

Данные термины также переименованы в панели управления и среде разработки «1С:Шины».

Навигационные ссылки

При создании навигационных ссылок теперь используется новый формат:

  • для всех элементов проекта:
    • вместо полного имени элемента проекта ― краткий идентификатор,
    • сокращенный идентификатор объекта как краткий идентификатор (23 символа);
  • для регистров сведений:
    • вместо перечисления фильтров ― хеш записи,
    • вместо префикса infoReg ― префикс data (который уже использовался для большинства других элементов проекта).
примечание

При чтении ранее созданных навигационных ссылок ничего не поменяется ― поддерживаются как новый, так и старый форматы.

Структура

Для элементов проекта вида Структура:

  • поля больше не обязаны иметь значения по умолчанию (становятся обязательными параметрами конструктора);
  • для полей добавляется настройка Обязательное типа Булево со значением по умолчанию Ложь:
    • если Истина, то поле становится обязательным параметром конструктора, даже если имеет значение инициализации (неявное).

И для Структура, и для ХранимаяСтруктура:

  • для полей добавляется настройка ТолькоЧтение типа Булево со значением по умолчанию Ложь:
    • если Истина, то поле нельзя менять после инициализации (соответствует знч во встроенном языке).

Ранее данные настройки были доступны только во встроенном языке.

Также для структур и хранимых структур появилась возможность добавлять аннотации. Аннотации можно добавлять как для самих структур, так и для отдельных полей. Аннотации добавляются через панель свойств соответствующих элементов проекта.

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

Процесс интеграции

Переименование свойства «Тип»

В схеме процесса интеграции свойство Тип узлов переименовано в Вид:

ВидЭлемента: ПроцессИнтеграции
Ид: 59a38377-3274-4bcd-bd4c-15162b4fe715
Имя: МойПроцессИнтеграции
ОбластьВидимости: ВПодсистеме
Схема:
Узлы:
-
Вид: Http
Ид: ba665e60-37b0-41e0-9c6a-1fb7b5d2ca2d
Имя: Http

Работа с метриками

  • В «1С:Шину» добавлена возможность получать метрики без авторизации в формате Prometheus. Для этого используется конечная точка с адресом host:port/applications/app_path/sys/esb/runtime/metrics, с помощью которой администратор «Шины» может реализовывать интеграцию с другими сервисами.
  • Переименованы и локализованы метрики:
    • MessageCountNodeMessageCounter/СчетчикСообщенийУзлов
    • MessageCountFromProcessStartNodeMessageCounterAfterProcessStart/СчетчикСообщенийУзловПослеСтартаПроцесса
    • HttpCountHttpNodeMessageCounter/СчетчикСообщенийHttpУзлов
    • TranslatorCountTranslatorNodeChangedMessageCounter/СчетчикИзмененныхСообщенийТрансляторов
    • FileCountFileNodeMessageCounter/СчетчикСообщенийФайловыхУзлов
    • ErrorCountErrorCounter/СчетчикОшибок
    • UndeliveredMessageCountNodeUndeliveredMessageCounter/СчетчикНедоставленныхСообщенийУзлов

Ресурсы

В Стд::Ресурсы добавлен новый тип ПакетРесурсов, который позволяет получить доступ к ресурсу или ко всем вложенным ресурсам по строке. Ранее доступ можно было получить только по литералу.

В Стд::Отражение для типа ОтражениеПакетаПроекта добавлено свойство Ресурсы для получения ресурсов пакета, а также реализованы методы, которые позволяют получить ОтражениеПакетаПроекта по его имени или типу из этого пакета.

Прикладная функциональность

Удаление объектов

Реализовано удаление объектов с возможностью их восстановления.

  • Для объектных сущностей поддержано свойство РежимУдаления со следующими значениями:
    • Немедленно — объект удаляется немедленно.
    • ПометкаУдаления — объект помечается на удаление.
  • В формах объекта и списка поменялось поведение команды Удалить. Теперь оно зависит от режима удаления: команда либо удаляет объект, либо помечает его на удаление.
  • В форму списка добавлен фильтр Показывать удаленные. По умолчанию записи, помеченные на удаление, не отображаются.
  • Для реквизитов ссылочного типа реализовано свойство ПриУдаленииОбъектаПоСсылке. Оно указывает, как удалять зависимые объекты: запретить удаление, разорвать связь и оставить битую ссылку, удалить зависимый объект вместе с главным, установить значение поля по умолчанию при удалении главного объекта.
  • В тип имя-плана-обмена добавлен метод УстановитьПометкуУдаления(), который устанавливает пометку на удаление для главного и всех зависимых объектов в одной транзакции.
  • В тип имя-плана-обмена.Объект добавлены следующие свойства и методы:
    • ПометкаУдаления — признак, что объект удален.
    • МоментПометкиУдаления — момент времени, когда была установлена пометка удаления.
    • УстановитьПометкуУдаленияПриЗагрузкеДанных() — предназначен для создания объекта с установленной пометкой удаления при обмене данными. Вызывается только в контексте загрузки данных.
  • В пространство имен Стд::Сущности добавлены новые типы:
    • НеудаленныеОбъекты — предназначен для разрешения ссылок на объекты, которые препятствуют удалению сущностей.
    • УдалениеОбъектов — позволяет задать область удаляемых данных и период устаревания данных, а также начать очистку.

Полнотекстовый поиск по файлам объектного хранилища

«1С:Шина» позволяет выполнять поиск по содержимому файлов в хранилище двоичных данных. Поддерживаются такие популярные форматы, как текстовые документы, PDF-файлы, электронные таблицы, презентации и архивы.

Для каждого объекта в хранилище можно указать, нужно ли учитывать его при полнотекстовом индексировании. Для этого используется свойство ИспользованиеПолнотекстовогоПоиска типа ДвоичныйОбъект.Свойства. Оно может принимать значения перечисления ИспользованиеПолнотекстовогоПоискаПоДвоичномуОбъекту:

  • Авто (значение по умолчанию) — объект включается в полнотекстовый индекс, только если он соответствует требованиям по типу и размеру файла и не содержит персональные, временные, конфиденциальные или секретные данные;
  • Использовать — объект всегда учитывается при полнотекстовом индексировании;
  • НеИспользовать — объект не индексируется.

Настройка фрагментов текста в полнотекстовом поиске

Реализована возможность настраивать представление найденных фрагментов текста в полнотекстовом поиске. Для этого в объектной модели выполнены следующие изменения:

Автоматическое вычисление MIME-типа по содержимому двоичных файлов

Если при загрузке двоичных объектов в ОбъектноеХранилище их MIME-тип не указан, он определяется автоматически. Если определить тип содержимого не удастся, то ему будет присвоен тип application/octet-stream.

ДвоичныйОбъект

В тип ДвоичныйОбъект добавлено новое свойство Хеш: Байты, которое возвращает хеш SHA-256 содержимого двоичного объекта.

Хранение метаданных в объектном хранилище

Реализовано хранение метаданных в самом хранилище.

  • В файловом хранилище метаданные в формате json хранятся в файле с расширением .mtd рядом с файлом объекта.
  • В хранилище S3 способы хранения метаданных задаются в настройках хранилища:
    • TAGS — метаданные хранятся в тегах;
    • USER_METADATA — метаданные хранятся в userMetadata;
    • NONE — метаданные не сохраняются.

Журнал событий

  • Свойство Обязательно события журнала событий переименовано в Обязательное:

    ВидЭлемента: СобытиеЖурналаСобытий
    Ид: 3aa502ec-4df0-426c-8fe3-d1e57a4133f0
    Имя: МоеСобытиеЖурналаСобытий
    ОбластьВидимости: ВПодсистеме
    ВидСобытия: Ошибка
    Описание: Описание события журнала событий
    ШаблонПредставления: Шаблон представления события журнала событий
    Свойства:
    -
    Ид: 746d7ee6-ec5b-49ab-83b4-3f1bf1ae259e
    Имя: Свойство1
    Тип: Строка
    Обязательное: Истина
    Описание: Описание
  • Добавлен новый метод ПолучитьРетроспективыСобытий(), который возвращает информацию о регистрируемых событиях.

  • Добавлены новые типы:

Система взаимодействия

«1С:Шина» поддерживает сервер системы взаимодействия версии 10 и выше.

Добавлена возможность отправки сообщений пользователям через внешние системы

Теперь с помощью системы взаимодействия «1С:Шины» можно отправлять уведомления пользователям из приложения в Telegram, WhatsApp, VK, WebChat и Webhook (подробнее).

В тип СистемаВзаимодействия добавлены методы для работы с интеграциями:

В метод НайтиОбсуждения() добавлены параметры Участники: ЧитаемыйМассив<Ууид>? и ИдИнтеграции: Ууид?.

В пространство имен Стд::СистемаВзаимодействия добавлены типы для описания внешних систем взаимодействия и их параметров:

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

В типе ОбсуждениеВзаимодействия добавлено свойство ИдИнтеграции, которое показывает, привязано ли обсуждение к какой-либо интеграции.

Проверка наличия активной транзакции

Для типа Транзакции реализованы методы, позволяющие проверить, выполняется ли код в транзакции:

Улучшение логирования исключений при откате транзакций

После исключения в рамках транзакции в журнале событий и логе сервера будут зафиксированы:

Получение менеджера сущности по ссылке

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

Пример получения менеджера сущности по ссылке:

метод ПолучитьМенеджерПоКлючу(Ключ: Сущность.Ключ): Одиночка
возврат ОтражениеСущности.ПоТипу(Ключ.ПолучитьТип()).ТипОдиночка.ПолучитьЭкземпляр()
;

Доработка объектов XML

Для удобства работы с объектами XML добавлены новые методы:

В типе ЗаписьXml в методы ЗаписатьНачалоЭлемента и ЗаписатьКонецЭлемента добавлен необязательный параметр ДобавлятьОтступы, который указывает, нужно ли добавлять отступ и перенос на новую строку при записи элемента:

ЗаписьXml.ЗаписатьНачалоЭлемента(Имя: Строка,
ПространствоИмен: Строка? = Неопределено,
ДобавлятьОтступы: Булево? = Неопределено): ЗаписьXml
ЗаписьXml.ЗаписатьКонецЭлемента(ДобавлятьОтступы: Булево? = Неопределено): ЗаписьXml

API для работы с XML

Добавлен API для работы с объектами формата XML во встроенном языке:

Планы обмена

Изменения типов

Внесены изменения в типы, порождаемые элементом проекта ПланОбмена:

ПланОбмена.Объект
  • Доступен на клиенте и сервере.
имя-плана-обмена
  • Добавлен метод СоздатьНаОсновании(), который создает объект на основании источника, указанного в параметре (подробнее).
имя-плана-обмена.Объект
  • Доступен на клиенте и сервере, но создавать можно только на сервере.
  • Является дочерним для типа РедактируемыйОбъект<ПланОбмена.Ссылка, ПланОбмена.ПараметрыЗаписи>.
  • Удалены методы УстановитьПрефикс() и УстановитьПостфикс().
  • Добавлен метод СоздатьКопию(), который создает копию объекта (подробнее).
  • Добавлены события:
    • ПриСозданииКопии(Источник: имя-плана-обмена.Данные) — вызывается при копировании экземпляра сущности; позволяет настроить механизм создания копированием (подробнее);
    • ПриСозданииНаОсновании(Основание: имя-плана-обмена.Ссылка) — вызывается при заполнении объекта, создаваемого на основании какого-либо другого объекта (подробнее).
имя-плана-обмена.Ссылка
  • Добавлен новый метод СоздатьКопиюОбъекта() для создания копии объекта, на который указывает эта ссылка (подробнее).

Оптимизация механизма обмена данных с «1С:Предприятием»

В рамках оптимизации механизма сериализации данных для обмена с «1С:Предприятием» были реализованы механизмы записи/чтения собственно тела сообщения (DTO) в формате XML (подробнее).

В описание элемента проекта ПланОбмена добавлены:

  • КонвертацияДанных ― общий объект для описания конвертации данных, включает:
    • СхемаДанных ― описывает внешнюю систему и передаваемые ей данные, включает:
      • ВидСхемыДанных ― перечисление Проект1СПредприятияЭлемент/Конфигурация1СПредприятия8,
      • Элементы ― позволяет описывать правила конвертации на уровне конкретных элементов проекта (участников конвертации). Включает множество различных настроек.

Во встроенный язык добавлены:

  • для типа ИмяПланаОбмена
    • методы:
      • ВыгрузитьСообщение(ЗаписьСодержимого: ЗаписьXml, Узел: ПланОбмена.Ссылка) ― выгружает сообщение обмена для узла,
      • ЗагрузитьСообщение(ЧтениеСодержимого: ЧтениеXml, ДопустимыйНомерСообщения: ДопустимыйНомерСообщения = ДопустимыйНомерСообщения.Больший) ― загружает сообщение обмена;
  • для типа ИмяПланаОбмена.Объект
    • методы:
      • ВыгрузитьДанные(ЗаписьСодержимого: ЗаписьXml, Данные: <ИмяОбъектаВСоставеПланаОбмена>.Объект|<ИмяОбъектаВСоставеПланаОбмена>.НаборЗаписей| УдалениеОбъекта>) ― выгружает данные в сообщение обмена, при необходимости перед записью конвертирует,
      • ЗагрузитьДанные(ЧтениеСодержимого: ЧтениеXml): <ИмяОбъектаВСоставеПланаОбмена>.Объект|<ИмяОбъектаВСоставеПланаОбмена>.НаборЗаписей|УдалениеОбъекта> ― загружает данные из сообщения обмена в БД, по одному изменению данных, при необходимости перед записью конвертирует;
    • обработчики:
      • ПриЗагрузкеДанных(Параметры: ПараметрыЗагрузкиОбменаДанными) ― позволяет внести изменения во время загрузки,
      • ПриВыгрузкеДанных(Параметры: ПараметрыВыгрузкиОбменаДанными) ― позволяет внести изменения во время выгрузки;
  • для типа ПараметрыЗагрузкиОбменаДанными
    • свойства:
      • ДанныеОбъект: ПланОбмена ― данные из сообщения обмена,
      • ЗагрузкаДанных: ДействиеПриЗагрузкеОбменаДанными ― будут ли загружены данные, условия загрузки данных,
      • ОтправлятьНазад: Булево ― вернуть отправителю,
      • ОбменДанными: ПараметрыОбменаДанными ― настройки узлов-получателей, узла-отправителя;
  • для типа ПараметрыВыгрузкиОбменаДанными
    • свойства:
      • Данные: Объект ― данные для записи в сообщение обмена,
      • ВыгрузкаДанных: ДействиеПриВыгрузкеОбменаДанными ― будут ли выгружены данные, условия выгрузки данных,
  • для типа ДействиеПриЗагрузкеОбменаДанными
    • перечисление:
      • Авто ― безусловно загружать,
      • Игнорировать ― не загружать,
      • ЗагружатьНеконфликтующие ― загружать, если нет других изменений.
  • для типа ДействиеПриВыгрузкеОбменаДанными
    • перечисление:
      • Авто ― безусловно выгружать,
      • Игнорировать ― не выгружать,
      • Удалить ― не выгружать, а удалить объект.

Регистр сведений

Изменения типов

Внесены изменения в типы, порождаемые элементом проекта РегистрСведений.

РегистрСведений.Запись
  • Доступен на клиенте и сервере.
имя-регистра-сведений.Запись
  • Доступен на клиенте и сервере.
  • Является дочерним для типа РедактируемыйОбъект<РегистрСведений.Ключ, РегистрСведений.ПараметрыЗаписи>.
  • Добавлен переопределяемый обработчик ПриЗаполнении, который вызывается при открытии формы нового объекта или вызове метода Заполнить().
  • Добавлен метод СоздатьКопию(), который создает копию записи регистра сведений.
  • Добавлено событие ПриСозданииКопии(Источник: имя-регистра-сведений.Запись.Данные), которое вызывается при копировании записи регистра сведений.
имя-регистра-сведений.КлючЗаписи
  • Добавлен метод СоздатьКопиюЗаписи(), который создает копию записи регистра сведений.

Добавлены новые типы:

  • имя-регистра-сведений.НаборЗаписей.Данные — предназначен для чтения набора записей со значениями измерений, которые соответствуют установленному свойству Фильтр;
  • имя-регистра-сведений.НаборЗаписей.Фильтр.Данные — предназначен для чтения значений ключевых полей, по которым отбираются записи в набор записей.

Форма записи

Для регистров сведений форма объекта теперь описывается типом ФормаЗаписи.

В типе ФормаЗаписи доступны следующие события:

  • ПередЗаписью;
  • ПослеЗаписи;
  • ПередУдалением;
  • ПослеУдаления.

В группе свойств Интерфейс элемента проекта Регистр сведений свойство Объект переименовано в Запись:

ВидЭлемента: РегистрСведений
Ид: e571296e-602d-478b-a51a-fdfa1c1701be
Имя: КурсыВалют
ОбластьВидимости: ВПроекте
КонтрольДоступа:
Разрешения:
ПоУмолчанию: РазрешенияВычисляются
Интерфейс:
Список:
Форма: КурсыВалютФормаСписка
Представление: $ЛокализованныеСтроки.КурсыВалют
Запись:
Форма: КурсыВалютФормаОбъекта

Переименована команда автоматического интерфейса:

  • имя-регистра-сведений.СоздатьОбъектимя-регистра-сведений.СоздатьЗапись

Переименован тип автоматической формы записи:

  • имя-регистра-сведений.АвтоматическаяФормаОбъектаимя-регистра-сведений.АвтоматическаяФормаЗаписи

Переименован и изменен метод создания формы записи:

  • Было: имя-регистра-сведений.СоздатьФормуОбъекта(Ключ: {ИмяРегистраСведений}.КлючЗаписи?): ФормаОбъекта
  • Стало: имя-регистра-сведений.СоздатьФормуЗаписи(Ключ: {ИмяРегистраСведений}.КлючЗаписи? = Неопределено): ФормаЗаписи<{ИмяРегистраСведений}.Запись, неизвестно>

Метод «ЭтоНовый»

В типы <ИмяЭлемента>.Данные добавлен новый метод ЭтоНовый(): Булево. С его помощью можно определить, что объект только что создан и еще не был записан.

Управление разметкой табличного документа

Реализована возможность программно управлять размером ячеек и размещением текста в них (подробнее).

В пространство имен Стд::ТабличныйДокумент добавлен новый тип ФорматСтрокТабличногоДокумента, который позволяет назначать форматы строк разным областям табличного документа.

В тип ОбластьТабличногоДокумента добавлены свойства:

Кроме того, в тип ОбластьТабличногоДокумента добавлены следующие методы:

В тип ВыводимаяОбластьТабличногоДокумента добавлены следующие методы:

Задания

В типах пространства имен Стд::Задания выполнены следующие изменения:

Расписания

В тип Расписание добавлен новый метод МоментСледующегоИсполнения(), который вычисляет момент следующего исполнения расписания.

Системные перечисления больше не могут использоваться в хранимых типах

В реквизитах планов обмена и регистров сведений больше не допускается использование системных перечислений. Если в качестве типа реквизита указать системное перечисление, в палитре свойств элемента проекта и панели Проблемы появится следующая ошибка: «Тип "ИмяТипа" нельзя использовать для хранения в БД».

Чтобы избежать этой ошибки при обновлении проекта до версии «Шины» 6.1, необходимо выполнить следующие действия:

  1. Например, если элемент проекта содержит реквизит МойРеквизит, в качестве типа которого используется системное перечисление ЕдиницаВремени, создайте прикладную копию этого перечисления (ЕдиницаВремениКопия).
  2. Создайте временный реквизит МойВременныйРеквизит типа ЕдиницаВремениКопия.
  3. В обработчике обновления проекта перенесите данные из реквизита МойРеквизит во временный реквизит.
  4. Удалите МойРеквизит и переименуйте МойВременныйРеквизит в МойРеквизит.
  5. Выполните обновление проекта.

Контроль прав доступа

Для свойства КонтрольДоступа элемента проекта выполнены следующие изменения:

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

Было:

КонтрольДоступа:
Создание: РазрешеноАутентифицированным
Чтение: РазрешеноВсем
ПоУмолчанию: РазрешенияВычисляютсяДляКаждогоОбъекта

Стало:

КонтрольДоступа:
Разрешения:
Создание: РазрешеноАутентифицированным
Чтение: РазрешеноВсем
ПоУмолчанию: РазрешенияВычисляютсяДляКаждогоОбъекта
РасчетРазрешенийПо:
- Пользователь

Изменения элементов проекта ПланОбмена и РегистрСведений:

  • Добавлен тип имя-элемента-проекта.ДанныеРасчетаРазрешений. Он порождается, если для элемента проекта включена настройка РазрешенияВычисляютсяДляКаждогоОбъекта, и содержит все поля, перечисленные в настройке РасчетРазрешенийПо (подробнее).

  • Изменилась сигнатура метода ВычислитьРазрешенияДоступаДляОбъектов().

    Было:

    ВычислитьРазрешенияДоступаДляОбъектов(
    Объекты: ЧитаемыйМассив<имя-элемента-проекта.Объект>
    ): ЧитаемоеСоответствие<имя-элемента-проекта.Объект, ЧитаемаяКоллекция<РазрешениеДоступа>

    Стало:

    ВычислитьРазрешенияДоступаДляОбъектов(
    Ключи: ЧитаемыйМассив<имя-элемента-проекта.ДанныеРасчетаРазрешений>
    ): ЧитаемоеСоответствие<имя-элемента-проекта.ДанныеРасчетаРазрешений, ЧитаемыйМассив<РазрешениеДоступа>>
  • Для элемента проекта РегистрСведений с настройкой периодичности изменилась сигнатура метода ВычислитьКлючиДоступаДляИзменения().

    Было:

    ВычислитьКлючиДоступаДляИзменения(
    Записи: ЧитаемыйМассив<имя-регистра-сведений.Запись>
    ): ЧитаемоеСоответствие<имя-регистра-сведений.Запись, ЧитаемыйМассив<КлючДоступа.Объект>

    Стало:

    ВычислитьКлючиДоступаДляИзменения(
    Элементы: ЧитаемыйМассив<имя-регистра-сведений.ДанныеРасчетаРазрешений>
    ): ЧитаемоеСоответствие<имя-регистра-сведений.ДанныеРасчетаРазрешений, ЧитаемыйМассив<КлючДоступа.Объект>

Изменения в автоматическом пересчете ключей:

  • при создании пользователя теперь необходимо самостоятельно вызывать пересчет экземпляров ключей доступа (подробнее);
  • при создании пользователя «Шина» автоматически выполнит пересчет ключей, только если для пользователя заполнено свойство Утверждения;
  • при обновлении пользователя «Шина» автоматически выполнит пересчет ключей, если изменилось значение свойства Утверждения; в других случаях необходимо вызвать пересчет ключей самостоятельно.

Права на системные действия

Добавлен новый тип СистемноеПраво, позволяющий выдавать пользователям права на системные действия (подробнее). Данный тип является базовым для перечисления ВстроенноеПраво, которое содержит встроенные права на системные действия, в частности на выполнение запросов в консоли запросов.

Для вычисления разрешений на выполнение системных действий в модуле проекта реализован обработчик ВычислитьСистемныеРазрешенияДоступа(). Для вызова обработчика и пересчета разрешений доступа используется метод ПересчитатьСистемныеРазрешенияДоступа() типа Пользователи.

В тип КонтрольДоступа добавлены новые методы и перегрузки существующих методов для проверки наличия и возврата системных прав:

  • ЕстьПраво() — возвращает признак наличия права на указанное системное действие у пользователя.

    ЕстьПраво(
    Право: СистемноеПраво,
    Пользователь: Пользователи.Объект|Пользователи.Ссылка|? = Неопределено
    ): Булево
  • ПроверитьПраво() — проверяет наличие права на указанное системное действие у пользователя.

    ПроверитьПраво(
    Право: СистемноеПраво,
    Пользователь: Пользователи.Объект|Пользователи.Ссылка|? = Неопределено)
  • ПолучитьСистемныеПрава() — возвращает набор системных прав, доступных указанному пользователю. Вызов этого метода возможен только из пользовательского контекста.

    ПолучитьСистемныеПрава(
    Пользователь: Пользователи.Объект|Пользователи.Ссылка|? = Неопределено
    ): ЧитаемоеМножество<СистемноеПраво>
  • ПолучитьСистемныеРазрешенияДоступа() — возвращает массив всех системных разрешений доступа. Вызов этого метода возможен только из пользовательского контекста.

    ПолучитьСистемныеРазрешенияДоступа(): Массив<РазрешениеДоступа>

Изменение поведения методов типа «КонтрольДоступа»

Изменилось поведение следующих методов типа КонтрольДоступа:

  • ПолучитьРазрешениеДоступа(), ПолучитьПрава() — теперь вызов этих методов возможен только из пользовательского контекста. Метод ПолучитьПрава() может вызываться также в случае получения прав для конкретного пользователя.

    Если передан объект, которого еще нет в базе, или ссылка на такой объект, то выполняется расчет прав на объект путем вызова обработчика ВычислитьРазрешенияДоступаДляОбъектов().

    Если в методы передан объект типа ДанныеРасчетаРазрешений, то их поведение будет аналогично вызову методов для объекта или ссылки на объект.

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

    Если в методы передан объект типа ДанныеРасчетаРазрешений, то их поведение будет аналогично вызову методов для объекта или ссылки на объект. Если такие данные расчета разрешений уже есть в базе, права берутся из них, иначе они вычисляются путем вызова обработчика и ищутся среди полученных в ответе.

Для типов имя-сущности добавлена перегрузка метода пересчета разрешений доступа для объектов:

ПересчитатьРазрешенияДоступаДляОбъектов(Параметр1: Тип1, ... ПараметрN: ТипN)

Метод пересчитывает разрешения доступа на объекты, значения реквизитов которых совпадают со значениями параметров, переданных в метод. В качестве параметров нельзя указывать реквизиты, не входящие в расчет разрешений доступа.

Подписки на события

Добавлен механизм подписок на события для таких типов, как:

  • ПланыОбмена,
  • РегистрСведений,
  • Пользователи.

Подписка объявляется с помощью аннотации @Подписка с параметром. В качестве параметра используется литерал события вида Событие{<ИмяТипа>.<ИмяСобытия>}.

Сериализация JSON

В механизм сериализации формата JSON добавлена поддержка новых типов:

  • Диапазон<ТипГраницы>, ЗакрытыйДиапазон<ТипГраницы>

    Запись объекта с двумя свойствами: «from» и «to»
    СериализацияJson.ЗаписатьОбъект(новый Диапазон(1, 2))
    // "{"from":1,"to":2}"
  • имя-сущности.Ссылка

    Запись строкового представления Ууид
    СериализацияJson.ЗаписатьОбъект(новый Склады.Ссылка(новый Ууид()))
    // "f8ce22a9-c197-4341-893e-ad2f6bf6c24f"
  • имя-необъектной-сущности.Ссылка

    Запись необъектной сущности как структуры
    пер КлючЗаписи = новый МойРегистрСведений.КлючЗаписи(Измерение1 = 1, Измерение2 = 2)
    СериализацияJson.ЗаписатьОбъект(КлючЗаписи)
    // "{"Измерение1":1,"Измерение2":2}"
  • Тип

    Запись сигнатуры типа строкой
    пер МойТип = Тип<Массив<Число>>
    СериализацияJson.ЗаписатьОбъект(МойТип)
    // "Std::Collections::Array<Std::Number>"

Убраны неявные преобразования JSON

При сериализации/десериализации JSON изменился порядок разбора значений, а также выполнены другие изменения (подробнее).

Криптография

Функция HMAC

Добавлена возможность вычислять код аутентификации сообщения с помощью хеш-функции — HMAC (подробнее).

Хранилища для ключей JKS

Добавлен объект ХранилищеJks, который позволяет создавать хранилище сертификатов и ключей шифрования в формате JKS (файлы .jks, .keystore):

  • ХранилищеJks() — создает новый экземпляр пустого хранилища ключей;
  • ХранилищеJks(Данные: Байты | ПотокЧтения, Пароль: Строка = "") — загружает хранилище ключей из данных;
  • ХранилищеJks(Файл: Файл | Строка, Пароль: Строка = "") — загружает хранилище ключей из файла.

Созданное хранилище можно записать в массив байтов, поток или файл с помощью соответствующих методов:

  • ВБайты(Пароль: Строка = ""): Байты;
  • ЗаписатьВПоток(Поток: ПотокЗаписи, Пароль: Строка = "");
  • ЗаписатьВФайл(Файл: Файл | Строка, Пароль: Строка = "").

Добавлена поддержка двустороннего TLS

Реализована поддержка аутентификации клиента при использовании TLS. Для этого в тип ПараметрыЗащищенногоСоединения добавлены свойства:

Конструктор объекта типа ПараметрыЗащищенногоСоединения дополнен двумя необязательными параметрами, которые описывают настройки защищенного соединения:

ПараметрыЗащищенногоСоединения(
ХранилищеСертификатов: ХранилищеСертификатов,
ХранилищеКлючей: ХранилищеКлючей? = Неопределено,
ПарольХранилищаКлючей: Строка = "")

Встроенный язык

Аннотация @ПроверятьИспользованиеЗначения

Добавлена аннотация @ПроверятьИспользованиеЗначения. Данной аннотацией помечаются методы, смысл которых заключается в возврате значений, например: Обходимое.Сортировать, Число.Округлить или Строка.ВВерхнийРегистр. Если метод помечен этой аннотацией и возвращаемое им значение не используется, то компилятор выдает ошибку.

Изменен синтаксис оператора «умолчание»

Синтаксис оператора умолчание изменен с умолчание на ??.

Было: знч Значение = Структура.Поле умолчание 0

Стало: знч Значение = Структура.Поле ?? 0

Именованные параметры в обобщенных типах

Добавлена возможность указывать параметры обобщенных типов в именованной форме по аналогии с именованными параметрами методов.

Синтаксис: ИмяОбобщенногоТипа<[ИмяПараметра1 =] Тип1, ..., [ИмяПараметраN =] ТипN>

Пример: Соответствие<Число, ТипЗначения = Строка>

Ограничения:

  • в именованной форме нельзя указать параметры функциональных типов;
  • именованные параметры должны следовать строго за позиционными (при их наличии).

Оператор динамического доступа к свойству объекта []

Оператор [] больше не поддерживается по умолчанию у всех объектов. Например, оператор по-прежнему разрешен для типов Соответствие и Массив, но не поддерживается для пользовательских элементов типа Структура. Чтобы обеспечить динамический доступ к свойству объекта, который не поддерживает оператор [], используйте механизм отражения или приведите переменную к типу неизвестно перед использованием оператора [] (подробнее).

Потоковая обработка структур данных

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

Добавлен новый тип Последовательность<ТипЭлемента>. Элементы этого типа неявно создаются при вызове цепочки методов.

Тип «КодировкаBase64»

В метод ДекодироватьВСтроку() типа КодировкаBase64 добавлен параметр Кодировка, который задает кодировку декодируемой строки:

ДекодироватьВСтроку(
СтрокаBase64: Строка,
Кодировка: Кодировка | Строка = Кодировка.Utf8
): Строка

Тип «никогда»

Добавлен новый тип никогда / never, обозначающий тип выражения, которое никогда не будет выполнено. Оно может завершиться исключением или не завершиться вообще (подробнее).

Данный тип является типом выражения выбросить.

метод ВыброситьИсключение(Описание: Строка): никогда
выбросить новый ИсключениеВыполнения(Описание)
;

Тип «РазмерБайтов»

Добавлен новый тип РазмерБайтов — размер в байтах. Допустимые значения: от 0 до 9007199254740991. Литерал имеет вид [<A>тб][<B>гб][<C>мб][<D>кб][<E>б], где <A>, <B>, <C>, <D>, <E> — соответствующее количество терабайтов, гигабайтов, мегабайтов и т. д. Например: 1тб2гб3мб4кб5б. Любой элемент может быть опущен, если соответствующее значение равно нулю.

  • В следующих методах возвращаемое значение изменилось с Число на РазмерБайтов:

    • Байты.Размер(): РазмерБайтов;
    • ВложениеВзаимодействия.Размер(): РазмерБайтов;
    • ВременныйПотокЗаписи.Размер(): РазмерБайтов;
    • РезультатЧтенияДанных.Размер(): РазмерБайтов;
    • ЭлементZip.РазмерСжатого(): РазмерБайтов;
    • ЭлементZip.РазмерНесжатого(): РазмерБайтов.
  • В следующих типах изменился тип свойства Размер с Число на РазмерБайтов:

    • ВложениеВзаимодействия.Размер: РазмерБайтов;
    • ДвоичныйОбъект.Размер: РазмерБайтов;
    • РазмерСообщенийИнтеграции.Размер: РазмерБайтов;
    • Файл.Размер: РазмерБайтов?;
    • ФайлSftp.Размер: РазмерБайтов?.
  • В типе СообщениеИнтеграции изменился тип свойства РазмерФайла с Число? на РазмерБайтов?:

    СообщениеИнтеграции.РазмерФайла: РазмерБайтов?

  • В конструкторе типа ВременныйПотокЗаписи тип параметра РазмерБуфера изменился с Число на РазмерБайтов:

    ВременныйПотокЗаписи(РазмерБуфера: РазмерБайтов = 100кб)

  • В типе НастройкиПоискаФайлов для метода Размер() изменился тип параметров От и До с Число? на РазмерБайтов|Число|?:

    Размер(От: РазмерБайтов|Число|? = Неопределено,
    До: РазмерБайтов|Число|? = Неопределено
    ): НастройкиПоискаФайлов
  • В методах типа ОбъектноеХранилище изменился тип параметра Размер с Число на РазмерБайтов|Число:

    УстановитьМаксимальныйРазмерЗагружаемыхДанных(Размер: РазмерБайтов|Число|?)
    Загрузить(ВходнойПоток: ПотокЧтения,
    Размер: РазмерБайтов|Число,
    Свойства: ДвоичныйОбъект.Свойства,
    ТаймаутУстаревания: Длительность? = Неопределено): ДвоичныйОбъект
    Загрузить(ВходнойПоток: ПотокЧтения,
    Размер: РазмерБайтов|Число,
    ТипСодержимого: Строка? = Неопределено,
    Свойства: ДвоичныйОбъект.Свойства? = Неопределено,
    ТаймаутУстаревания: Длительность? = Неопределено): ДвоичныйОбъект
  • В типе ЗапросHttp для метода УстановитьТело() изменился тип параметра Размер с Число на РазмерБайтов|Число:

    УстановитьТело(Поток: ПотокЧтения, Размер: РазмерБайтов|Число): ЗапросHttp
  • В методе ОткрытьПотокЗаписиТела() типа HttpСервисОтвет удален параметр Размер:

    ОткрытьПотокЗаписиТела(): ПотокЗаписи

Тип «Совпадение»

Для типа Совпадение добавлена возможность получать индекс начала подстроки, захваченной некоторой группой, и ее длины. Добавлены следующие методы и перегрузки:

  • Индекс(НомерГруппы: Число): Число — возвращает индекс первого символа самой правой подстроки, захваченной группой с номером НомерГруппы;
  • Индекс(ИмяГруппы: Строка): Число — возвращает индекс первого символа самой правой подстроки, захваченной группой с именем ИмяГруппы;
  • Длина(НомерГруппы: Число): Число — возвращает длину самой правой подстроки, захваченной группой с номером НомерГруппы;
  • Длина(ИмяГруппы: Строка): Число — возвращает длину самой правой подстроки, захваченной группой с именем ИмяГруппы.

Если группой, указанной в параметре, не захвачена ни одна подстрока, то:

  • методы Индекс() возвращают -1;
  • методы Длина() возвращают 0.

Тип «Соответствие»

В тип Соответствие добавлены ленивые перегрузки для методов Вставить() и ВставитьЕслиОтсутствует().

Тип «Строка»

Для типа Строка добавлен новый метод Обрезать():

Обрезать(
МаксимальнаяДлина: Число,
Постфикс = ""
): Строка

Метод сокращает строку до числа символов, равного МаксимальнаяДлина - Постфикс.Длина(), и добавляет в конец постфикс. Например:

пер МояСтрока = "Это пример строки"
пер Результат = МояСтрока.Обрезать(13, "...")
// Результат: Это пример...

Тип «Тип»

  • Тип данных Тип сделан обобщенным. Например: Тип<Объект?> (значение по умолчанию).
  • Добавлено свойство ПараметрыТипа типа ЧитаемыйМассив<ЧитаемоеМножество<Тип>>, которое позволяет использовать механизм отражения для доступа к параметрам обобщенных типов.

Тип «ТипДанныхБазыДанных»

Для типа ТипДанныхБазыДанных изменился конструктор.

Было:

ТипДанныхБазыДанных(
Типы: ФиксированноеМножество<Тип>,
ДлинаЦелойЧасти: Число? = Неопределено,
ДлинаДробнойЧасти: Число? = Неопределено,
ДлинаСтроки: Число? = Неопределено,
ДлинаБайт: Число? = Неопределено
)

Стало:

ТипДанныхБазыДанных(
Типы: ЧитаемоеМножество<Тип>,
КвалификаторЧисла: КвалификаторЧисла? = Неопределено,
КвалификаторСтроки: КвалификаторСтроки? = Неопределено,
КвалификаторБайт: КвалификаторБайт? = Неопределено
)

Меняются также следующие свойства:

Добавлены статические методы, которые создают экземпляр типа ТипДанныхБазыДанных с соответствующим типом данных и указанным квалификатором:

Тип «УтилитыБазыДанных»

Добавлен новый тип-одиночка УтилитыБазыДанных для использования инструментов языка запросов во встроенном языке. Для нового типа добавлен метод Сравнить(), который сравнивает два значения в том же порядке, что и язык запросов.

Тип «Ууид»

К базовым типам для Ууид добавлен тип Сравнимое. Теперь доступно сравнение Ууид с помощью операций <, >, >=, <= или с помощью метода Сравнить().

Типы-квалификаторы

Добавлен тип КвалификаторТипаДанных, который является родительским для других квалификаторов:

Цикл «для по»

Для цикла для по добавлена возможность делать обход от большего к меньшему и указывать шаг (подробнее).

Язык запросов

Метод «ВСтроку()» для типа «Тип»

Добавлена возможность получения строкового представления типа Тип:

ВЫБРАТЬ
Тип<НаправлениеСортировки>
КАК
Тип
ПОМЕСТИТЬ
ВременнаяТаблица
ВЫБРАТЬ
Тип.ВСтроку()
КАК
Тип
ИЗ
ВременнаяТаблица

Добавлено предложение «ЗАПОЛНИТЬ»

Для инструкции ВЫБРАТЬ реализовано предложение ЗАПОЛНИТЬ, которое позволяет использовать существующие типы в качестве типа строк результата запроса. Если не удалось найти подходящий тип, то будет порожден новый тип с указанным именем.

Переименовано предложение «В СТРУКТУРУ»

В инструкции ВЫБРАТЬ языка запросов предложение В СТРУКТУРУ переименовано в ПОРОДИТЬ (подробнее).

Было:
ВЫБРАТЬ
Наименование
Цена
В СТРУКТУРУ Товар
ИЗ
Товары
Стало:
ВЫБРАТЬ
Наименование
Цена
ПОРОДИТЬ Товар
ИЗ
Товары

Также добавлена возможность указывать область видимости для порождаемых запросом структур. Для этого необходимо добавить аннотацию видимости перед ключевым словом ПОРОДИТЬ. Пример:

ВЫБРАТЬ
Наименование,
Цена
ИЗ
Товары
@ВПодсистеме
ПОРОДИТЬ Товар

Если область видимости не задана явно, она совпадает с областью видимости метода или константы, в которой объявлен литерал запроса.

Добавление дополнительных полей в индексы

Для регистров сведений и планов обмена реализована возможность указывать дополнительные поля в свойстве Индексы. Это поможет оптимизировать работу запросов и улучшить их производительность.

Пример:

Индексы:
-
Имя: Пользователь
Поля:
- Пользователь
ДополнительныеПоля:
- Роль

В дополнительные рекомендуется включать часто используемые поля, которые входят в результирующую строку запроса, но при этом не используются для упорядочивания и отбора значений.

Также поддерживается возможность указать дополнительные поля при создании временных таблиц. Выражения СОЗДАТЬ ИНДЕКС и ИНДЕКСИРОВАТЬ ПО расширены ключевым словом ДОПОЛНИТЕЛЬНО ПО, позволяющим задать набор дополнительных полей.

Права на таблицы

Теперь при отсутствии прав на все таблицы, на основе которых формируется реквизит, результат обращения к этому реквизиту через точку будет зависеть от выбора ключевого слова: РАЗРЕШЕННЫЕ или ПОЛНОСТЬЮ. В первом случае результатом такого запроса станет Null, во втором — исключение.

Поддержка функций для работы с числами

  • В язык запросов добавлены алгебраические и тригонометрические функции:

    • Sin(), Cos(), Tan(), ASin(), ACos(), ATan(),
    • Log(), Log10(),
    • Exp(),
    • Pow(),
    • Корень().
  • Для функции Число.Округлить(Разрядность) добавлена возможность округления целой части. Для этого в качестве значения точности необходимо указать отрицательное число.

Изменен синтаксис экранирования имен

Для экранирования имен таблиц, полей и псевдонимов полей, не являющихся корректными идентификаторами, теперь необходимо использовать знаки обратного апострофа `, а не символы [ и ] (подробнее):

Было: [Имя с пробелом]

Стало: `Имя с пробелом`

Изменения в объектной модели

Переименования

Архивация

  • ЭлементZip.ЯвляетсяКаталогом()ЭлементZip.ЭтоКаталог()

База данных

  • ОписаниеИсточникаДанныхОписаниеИсточникаДанныхЗапроса
  • ОписаниеКолонкиОписаниеКолонкиРезультатаЗапроса
  • ТипДанныхТипДанныхБазыДанных

База данных — События

  • СобытиеОтменаТранзакцииСобытиеОткатТранзакции

Ввод/Вывод — Файлы

  • НастройкиКопированияНастройкиКопированияФайлов
  • НастройкиПоискаНастройкиПоискаФайлов
  • Файл:
    • ЯвляетсяКаталогом()ЭтоКаталог()
    • ЯвляетсяСсылкой()ЭтоСсылка()
    • ЯвляетсяФайлом()ЭтоФайл()

Документ HTML

  • УтилитыHtml.ЯвляетсяБулевымАтрибутомВHtml5()УтилитыHtml.ЭтоБулевыйАтрибутВHtml5()

Доставляемые уведомления

  • ВажностьУведомленияВажностьДоставляемогоУведомления
  • ВидОшибкиОтправкиУведомленияВидОшибкиОтправкиДоставляемогоУведомления
  • ВидПодписчикаУведомленийВидПодписчикаДоставляемыхУведомлений
  • ВидимостьУведомленияВидимостьДоставляемогоУведомления
  • ДействиеВводТекстаДействиеДоставляемогоУведомленияВводТекста
  • ДействиеУведомленияДействиеДоставляемогоУведомления:
    • ПриРазблокированномУстройствеТребуетсяРазблокировка
  • ДоставляемоеУведомление:
    • КартинкаИзображение
    • ПиктограммаИконка
  • ЗвуковоеОповещениеЗвуковоеОповещениеДоставляемогоУведомления
  • ИдПодписчикаУведомленийИдПодписчикаДоставляемыхУведомлений
  • ИнформацияОПроблемеОтправкиИнформацияОПроблемеОтправкиДоставляемогоУведомления
  • ИнформацияОСервисеУведомленийИнформацияОСервисеДоставляемыхУведомлений
  • КаналУведомленийКаналДоставляемыхУведомлений:
    • РазрешитьОповещенияВключитьОповещения
  • КатегорияУведомленияКатегорияДоставляемогоУведомления
  • РезультатОтправкиУведомленийРезультатОтправкиДоставляемыхУведомлений
  • СтандартноеДействиеУведомленийСтандартноеДействиеДоставляемыхУведомлений
  • ТриггерПоИнтервалуВремениТриггерДоставляемыхУведомленийПоИнтервалуВремени
  • ТриггерПоКалендарюТриггерДоставляемыхУведомленийПоКалендарю
  • ТриггерПоСпискуПолучателейТриггерДоставляемыхУведомленийПоСпискуПолучателей

Журнал событий

  • ВажностьСобытияВажностьСобытияЖурналаСобытий
  • ВидСобытияВидСобытияЖурналаСобытий
  • КонтекстОперацииКонтекстОперацииЖурналаСобытий
  • РезультатПоискаСобытийРезультатПоискаСобытийЖурналаСобытий
  • СобытиеСобытиеЖурналаСобытий

Задания

  • СобытиеЗапланированныеЗаданияРазрешеныСобытиеЗапланированныеЗаданияВключены
  • СтратегияПовтораСтратегияПовтораЗадания
  • СтратегияПубликацииСтратегияПубликацииЗадания
  • СтратегияХраненияРезультатовСтратегияХраненияРезультатовЗаданий
  • УсловияЗапускаНаМобильныхУстройствахУсловияЗапускаЗаданияНаМобильныхУстройствах

Изображения

  • ОбрабатываемоеИзображение.ВырезатьКруг()ОбрабатываемоеИзображение.ОбрезатьПоКругу()

Интеграционная шина

  • ВидУзлаСхемыВидУзлаСхемыИнтеграции
  • ДвижениеСообщенияДвижениеСообщенияИнтеграции
  • ДинамикаЗначенияДинамикаЗначенияИнтеграции
  • ИзмерениеМетрикиИзмерениеМетрикиИнтеграции
  • Канал, хранящий сообщения:
    • ЯвляетсяКаналомЭтоКанал
  • КонтекстВызоваКонтекстВызоваИнтеграции
  • МаршрутСхемыМаршрутСхемыИнтеграции
  • НастройкиХраненияДоставленныхСообщенийИнтеграции:
    • ДлительностьХраненияТаймаутУстаревания
  • НедоставленноеСообщениеНедоставленноеСообщениеИнтеграции
  • ПричинаОшибкиДоставкиПричинаОшибкиДоставкиСообщенияИнтеграции
  • ПроцессИнтеграции:
    • ДлительностьХраненияНедоставленныхСообщенийТаймаутУстареванияНедоставленныхСообщений
    • КартинкаСхемыИзображениеСхемы
    • ОбластиКартинкиСхемыОбластиИзображенияСхемы
  • ПроцессИнтеграцииОстановленСобытиеПроцессИнтеграцииОстановлен
  • СобытиеОшибкаВалидацииСообщенияПроцессаИнтеграцииОшибкаВалидацииСообщенияПроцессаИнтеграции
  • СостояниеОчередиШиныСостояниеОчередиИнтеграционнойШины
  • СостояниеПроцессаСостояниеПроцессаИнтеграции
  • СхемаПроцессаСхемаПроцессаИнтеграции
  • УзелСхемыУзелСхемыИнтеграции
  • Узел процесса интеграции вида «KafkaНазначение»:
    • РежимПодтвержденияРежимКвитирования
    • ЗамедлениеСборкиПакетаЗадержкаСборкиПакета
  • Узел процесса интеграции вида «Таймер»:
    • ЧислоПовторовКоличествоПовторов
  • УзлыСхемыУзлыСхемыИнтеграции
  • Узлы процесса интеграции вида «FtpИсточник» и «FtpНазначение»:
    • МаксимумПопытокПодключенияМаксимумПопытокПереподключения
    • ЗадержкаПовторногоПодключенияЗадержкаПереподключения

Объектное хранилище

  • КонфиденциальностьДанныхКонфиденциальностьДвоичногоОбъекта:
    • КонфиденциальныеКонфиденциальный
    • СекретныеСекретный
  • НадежностьХранилищаНадежностьОбъектногоХранилища

Отражение

  • КоллекцияЭлементовПроектаКоллекцияОтраженийЭлементовПроекта
  • Описание ⟶ Отражение:
    • ОписаниеОбъектнойСущностиОтражениеОбъектнойСущности
    • ОписаниеПоляТаблицыОтражениеПоляТаблицы
    • ОписаниеСвойстваОтражениеСвойства
    • ОписаниеСущностиОтражениеСущности
    • ОписаниеСущностиРегистраОтражениеСущностиРегистра
    • ОписаниеТаблицыОтражениеТаблицы
    • ОписаниеХранимогоСвойстваОтражениеХранимогоСвойства
    • ОписаниеЭлементаПеречисленияОтражениеЭлементаПеречисления
    • ОписаниеЭлементаПроектаОтражениеЭлементаПроекта
  • ОтражениеХранимогоСвойства:
    • ТипТипы
  • ПакетПроектаОтражениеПакетаПроекта
  • ПодсистемаПроектаОтражениеПодсистемыПроекта
  • СвойствоСущностиОтражениеХранимогоСвойства
  • СвойствоСущностиКоллекцияОтражениеХранимогоСвойстваКоллекция
  • ТабличнаяЧастьСущностиОтражениеТабличнойЧастиСущности
  • ЭлементПроектаПеречислениеОтражениеЭлементаПроектаПеречисление

Планы обмена

  • ДопустимыйНомерСообщенияДопустимыйНомерСообщенияОбмена

Пользователи

  • ВидСервисаУчетныхЗаписей:
    • OIDCOidc
  • ВторойФакторВторойФакторАутентификации
  • ВторойФакторПочтаВторойФакторАутентификацииПочта
  • ВторойФакторСмсВторойФакторАутентификацииСмс
  • НастройкиАктивацииНастройкиАктивацииПользователей
  • НастройкиСамостоятельнойРегистрацииНастройкиСамостоятельнойРегистрацииПользователей
  • ЛичныйТокенДоступаДанныеЗапросаТокенаДоступа (больше не является базовым для ОписаниеЗапросаТокенаДоступа)
  • ОписаниеПользователяОписаниеПользователяСервиса
  • ПолитикаПаролей:
    • МаксимальноеКоличествоСимволовМаксимальнаяДлина
    • МинимальноеКоличествоСимволовМинимальнаяДлина
  • ПользователиСервиса:
    • ДобавитьТокенДоступа()СгенерироватьДанныеЗапросаТокенаДоступа()
    • ПолучитьТокеныДоступа()ПолучитьОписанияЗапросовТокеновДоступа()
    • УдалитьТокенДоступа()УдалитьДанныеЗапросаТокенаДоступа()
  • ТокенДоступаОписаниеЗапросаТокенаДоступа (больше не является дочерним для ДанныеЗапросаТокенаДоступа, теперь имеет свойство Ид)

Регистры сведений

  • РегистрСведений
    • КлючИзмеренийКлючРазрешенийИзмерений
    • КлючОсновногоОтбораКлючОсновногоФильтра
    • НаборЗаписей.ОтборНаборЗаписей.Фильтр

Система взаимодействия

  • ВидОбсужденияВидОбсужденияВзаимодействия
  • ОбсуждениеОбсуждениеВзаимодействия
  • СистемаВзаимодействия.ПолучитьВерсиюПротокола()СистемаВзаимодействия.ПолучитьВерсиюApi()

Стандартная библиотека

  • ИсключениеВалидации.ПоказыватьСообщениеОбОшибкеИсключениеВалидации.ОтображатьСообщениеОбОшибке
  • ИсключениеНеПоддерживаетсяИсключениеНеподдерживаемаяОперация
  • Перечисление.ПорядокПеречисление.Индекс
  • ПорядокНаправлениеСортировки
  • Строка.ЧислоВхожденийСтрока.КоличествоВхождений
  • Pow()Степень()

Сущности

  • Сущность.СсылкаСущность.Ключ
  • ЭлементОтбораНабораЗаписейЭлементФильтраНабораЗаписей

Табличный документ

  • ДанныеВыводаИзображенияДанныеВыводаИзображенияТабличногоДокумента
  • ДанныеВыводаРисункаДанныеВыводаРисункаТабличногоДокумента
  • ЗаписьТабличногоДокумента:
    • ВывестиВертикальныйРазделительСтраниц()ВывестиВертикальныйРазрывСтраницы()
    • ВывестиГоризонтальныйРазделительСтраниц()ВывестиГоризонтальныйРазрывСтраницы()

Электронная почта

  • СоединениеPop3.ОтметитьНаУдаление()СоединениеPop3.ПометитьНаУдаление()

HTTP

  • ПараметрыЗапросаПараметрыUrl

SSH

  • ФайлSftp:
    • ЯвляетсяКаталогом()ЭтоКаталог()
    • ЯвляетсяФайлом()ЭтоФайл()

XML

  • НастройкиЗаписиXml.ИспользоватьОтступыНастройкиЗаписиXml.ДобавлятьОтступы
  • НастройкиЧтенияXml.ИгнорироватьПробельныеСимволыНастройкиЧтенияXml.ИгнорироватьПробельныеУзлы

Переносы

Удаления

Пользователи

События

Стандартная библиотека

Тип ТипПеречисление удален. Вместо него можно использовать Тип. Методы ПоИмени() и Элементы() типа ТипПеречисление перенесены в Тип с условием, что ТипЗначения — это Перечисление.