Новое в версии 3.1
Элементы проекта
Структура — это элемент проекта, который позволяет создать одель данных с фиксированным набором полей. Он может содержать как описание данных, так и описания методов. Хранимую структуру также можно использовать как тип реквизита справочника или тип измерения (ресурса, реквизита) регистра сведений (для хранения данных в базе данных)
Среда разработки
- Подсветка синтаксиса:
- Добавлена подсветка для интерполяции строк во встроенном языке;
- Добавлена подсветка для языка запросов;
- Контекстная подсказка:
- Автозамена ключевых слов знч и пер на исп для типа Закрываемое;
- Автоматическое приведение типа при автодополнении;
- При использовании контекстной подсказки для статических методов обращение к переменной автоматически заменяется на обращение к типу;
- Быстрые исправления:
- Если в коде есть обращение к несуществующему методу, то система сама предложит создать такой метод с автоматически подобранной сигнатурой;
- Быстрое изменение метода на статический: добавляется ключевое слово;
- Если метод является обработчиком, но для него не указана аннотация @Обработчик, то система сама предложит её добавить;
- Теперь при вводе некорректного идентификатора объекта во встроенном языке, например имени переменной или метода, пользователю автоматически предлагаются варианты автоисправления. В частности, добавлена возможность автоисправления при попытке использования варианта встроенного языка, отличного от текущего;
- Система сама предложит удалить сущность, например параметр или переменную, если они не используются;
- Если метод, который реализует контракт, имеет некорректную сигнатуру, то система сама предложит автоматическое исправление;
- Автоматическая замена конкатенации строк, включая многострочные и вложенные строки (например, когда в конкатенации участвуют методы со строкой-параметром), на форматированную строку;
- Если переменная не найдена, то система сама предложит добавить её в сигнатуру метода, при этом автоматически вычислив ее тип;
- Изменение видимости объектов встроенного языка при необходимости. Например, если объект был использован в другой подсистеме, но для него указана видимость ВПодсистеме, то система предложит автоматически изменить для него видимость;
- В схеме файла теперь отображаются сигнатуры методов, что позволяет пользователям лучше ориентироваться в структуре кода, особенно при наличии перегрузок методов.
- Полностью новый дизайн;
- Реализован механизм поиска свойств;
- Теперь редактирование элементов проекта можно осуществлять, используя панель свойств, без редактирования через файлы YAML (за исключением фрагментов командного интерфейса);
- В панели свойств добавлена возможность предварительно выбрать тип свойства, если свойство может содержать значения нескольких типов
- В панели свойств добавлена возможность интерактивно задавать значения для свойств типа Время, ДатаВремя и Дата
-
В панели свойств для некоторых свойств добавлена возможность задавать многострочное значение
- Добавлены:
- Команды;
- Локализованные строки;
- Поля представлений и поля индексов;
- Контракты;
- Формы объекта и формы списка;
- События и свойства элементов интерфейса;
- Собственная подсистема для расширений элементов проекта;
- Состав планов обмена: выбор элемента и редактирование массива;
- Функциональные типы;
- Исправлены:
- Имя объекта (теперь можно изменить);
- Типы;
- Массивы;
- Группы (появилась возможность сворачивания);
- Импорт и использование;
- Ошибки:
- Если во время загрузки свойств произошла ошибка, то отобразится соответствующее сообщение об ошибке;
- Если указаны некорректные свойства, то отобразится соответствующее сообщение об ошибке.
- Отладку меню теперь можно запустить из контекстного меню проекта прямо в навигаторе, при этом в строке состояния отображается статус отладки приложения;
- Значительно уменьшено время полной загрузки навигатора в среде разработки;
- Имя элемента теперь можно скопировать напрямую из навигатора в редактор;
- При копировании элемента в навигаторе ему автоматически будут присвоены уникальные имя и другие свойства, например Ид;
- Выделение элементов:
- В контекстное меню вкладки редактора добавлено действие выделения текущего элемента.
- В заголовок навигатора добавлено действие выделения элемента, над которым в данный; момент ведётся работа.
Пользовательский интерфейс
Сервер
- Значение свойства РежимСовместимости в описании проекта поднято до 3.0.
- Добавлена возможность включить идентификатор и представления пользователя, а также текущий путь HTTP-сервиса в каждую запись технологического журнала, где эти значения определены
Панель управления
- Среды разработки — содержит сквозной список сред разработок по всем пространствам (подробнее);
- Задачи — содержит сквозной список задач по всем проектам (подробнее).
Отладка
Добавлена возможность устанавливать точки останова на вызовы пользовательских методов, а также на вызовы системных методов и методов встроенных типов (подробнее)
Переименования
- Свойство ТипОшибки типа ИнформацияОПроблемеОтправки переименовано в ВидОшибки;
- Свойство Реквизиты описания Индексов переименовано в Поля;
- Переименованы ограничения числовых реквизитов:
- КонтрольОграничений -> КонтрольПредельныхЗначений;
- КонтрольТочности -> КонтрольДробнойЧасти.
- Подсистема -> ВПодсистеме;
- Проект -> ВПроекте.
Встроенный язык
- Все аннотации стали писаться с прописной буквы.
- Ключевое слово «реализация» стало аннотацией: @реализация -> @Реализация;
-
Области видимости стали аннотациями:
- @локально -> @Локально;
- @типа -> @ВТипе;
- @подсистема -> @ВПодсистеме;
- @проект -> @ВПроекте;
- @глобально -> @Глобально.
Переименованы аннотации:
- @Сервер -> @НаСервере;
- @Клиент -> @НаКлиенте.
Было:
Разделить(Образец: Образец, КоличествоРазбиений: Число = 0): Массив<Строка>
Стало:
Разделить(Образец: Образец, ВключаяПустые: Булево = Ложь, КоличествоРазбиений: Число = 0): Массив<Строка
Например, для:
"в_строку".Разделить("", ВключаяПустые = Истина)
Было:
[в, _, с, т, р, о, к, у]
Стало:
[, в, _, с, т, р, о, к, у, ]
знч МоиБайты = Байты{0112EEAA3311FFAA0011FFAA0011FFAA}
// Получить первые 4 байта
знч ПервыеЧетыреБайта = МоиБайты.ПолучитьДиапазон(0, 4) // Байты{0112EEAA}
// Получить последние 4 байта
знч ПоследниеЧетыреБайта = МоиБайты.ПолучитьДиапазон(Bytes.Size() - 4) //Байты{0011FFAA}
// Отрезать первые 4 байта и получить байты с 5-го по последний
знч ОтрезаемПервыеЧетыреБайта = МоиБайты.ПолучитьДиапазон(4) //Байты{3311FFAA0011FFAA0011FFAA}
Возвращает единственный содержащийся элемент или Неопределено. Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз. Если найдено больше одного значения — выбрасывает исключение ИсключениеНедопустимоеСостояние;ЕдинственныйИлиУмолчание(): ТипЭлемента?
Возвращает единственный содержащийся элемент или значение Умолчание, если элементов нет. Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз. Если найдено больше одного значения — выбрасывает исключение ИсключениеНедопустимоеСостояние.ЕдинственныйИлиУмолчание<ТипУмолчания>(Умолчание: ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания
Возвращает первый элемент или Неопределено. Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз;ПервыйИлиУмолчание(): ТипЭлемента?
Возвращает первый элемент или значение Умолчание, если элементов нет. Вызов приводит к частичному обходу. Если реализация не поддерживает повторный обход — вызвать можно только один раз.ПервыйИлиУмолчание<ТипУмолчания>(Умолчание: ТипЭлемента|ТипУмолчания): ТипЭлемента|ТипУмолчания
- Изменены ограничения на минимальные/максимальные значения типов даты и времени:
- Дата: 01-01-01 — 9999-12-31;
- ДатаВремя: 01-01-01 00:00 — 9999-12-31 23:59:59.999;
- Момент: 0000-12-31 06:00:00 Z — 4000-01-01 17:59:59.999 Z;
- Длительность: -999999999999999мс — 999999999999999мс;
- Для типов Дата, Время, ДатаВремя, Момент введены литералы Минимум/Максимум для получения соответствующих значений. Например, литерал Дата{Максимум} имеет значение 9999-12-31. Эти литералы можно также использовать языке запросов.
- Для типа ЧтениеXml добавлены методы, позволяющие считать
содержимое узла как:
- Байты / БайтыBase64;
- Время / ДатаВремя / Дата / Длительность / Момент.
Для чтения атрибутов узла также добавлены методы, позволяющие считать значение как:- Ууид / Число / Булево.
- Для типа ЗаписьXml добавлены методы, позволяющие
записать содержимое элементов и значения атрибутов XML-документа как:
- Ууид / Число / Булево;
- Байты / БайтыBase64;
- Время / ДатаВремя / Дата / Длительность / Момент.
Прикладная функциональность
- УстановитьПараметрыЗапроса — для установки новых параметров запроса, с перезаписью старых.
- ДобавитьПараметрыЗапроса — для добавления параметров запроса к уже установленным.
- УстановитьПараметрЗапроса — для установки параметра запроса, с перезаписью уже установленного.
- ДобавитьПараметрЗапроса — для добавления параметра запроса к уже установленным.
- ОчиститьПараметрыЗапроса — для очистки параметров запроса.
- УдалитьПараметрЗапроса — для удаления параметра запроса по его имени.
Криптография
- СформироватьЦепочку
СформироватьЦепочку( СертификатИздателя: ЦифровойСертификат, Криптопровайдер: Криптопровайдер|Строка|? = Неопределено ): ЦифровойСертификат
Возвращает копию текущего сертификата, у которой в качестве значения свойства СертификатИздателя используется сертификат, указанный в параметре СертификатИздателя. Метод также проверяет, что сертификат был подписан закрытым ключом, связанным с открытым ключом сертификата СертификатИздателя. Проверка выполняется с использованием алгоритмов указанного криптопровайдера. Если Криптопровайдер не задан, он подбирается автоматически.
- РазорватьЦепочку
РазорватьЦепочку(): ЦифровойСертификат
Возвращает копию текущего сертификата, у которой свойство СертификатИздателя установлено в Неопределено.
- ПроверитьПодпись
ПроверитьПодпись( СертификатИздателя: ЦифровойСертификат, Криптопровайдер: Криптопровайдер|Строка|? = Неопределено ): Булево
Проверяет, что сертификат был подписан закрытым ключом, связанным с открытым ключом сертификата СертификатИздателя. Проверка выполняется с использованием алгоритмов указанного криптопровайдера. Если Криптопровайдер не задан, он подбирается автоматически.
Статический ЗаменитьСертификат(
Подпись: Байты|ПотокЧтения,
Сертификат: ЦифровойСертификат
): Байты
Электронная почта
Добавлена поддержка получения писем с почтовых серверов, работающих по протоколам POP3 и IMAP. Подробнее в разделе Электронная почта.
Система взаимодействия
- Получение сообщения по его идентификатору;
- Редактирование сообщения;
- Удаление сообщения.
- Объединение приложений в единое пространство СистемаВзаимодействия.ОбъединитьПриложения;
- Отмена объединения приложений СистемаВзаимодействия.ОтменитьОбъединениеПриложений;
- Получение списка объединения приложений СистемаВзаимодействия.ПолучитьОбъединенияПриложений.
- Получение почты абонента СистемаВзаимодействия.ПолучитьПочтуАбонента;
- Получение версии протокола СистемаВзаимодействия.ПолучитьВерсиюПротокола;
- Получение версии сервера взаимодействия СистемаВзаимодействия.ПолучитьВерсиюСервераВзаимодействия;
- Получение информации о текущем приложении взаимодействия СистемаВзаимодействия.ПолучитьТекущееПриложение;
- Получение информации о приложении взаимодействия по его идентификатору СистемаВзаимодействия.ПолучитьПриложениеАбонента;
- Получение списка приложений абонента СистемаВзаимодействия.ПолучитьПриложенияАбонента.
- В методе СистемаВзаимодействия.ПодключитьОбработчикНовыхСообщений изменен параметр Обработчик
на функциональный тип.Было:
СистемаВзаимодействия.ПодключитьОбработчикНовыхСообщений( Ууид{c5943676-5edb-43d1-915e-d7a5eba8a145}, "ОбработчикНовыхСообщений") // ... метод ОбработчикНовыхСообщений(ТекстСообщения: Строка) // какой-то обработчик ;
Стало:СистемаВзаимодействия.ПодключитьОбработчикНовыхСообщений( Ууид{c5943676-5edb-43d1-915e-d7a5eba8a145}, &ОбработчикНовыхСообщений) // ... метод ОбработчикНовыхСообщений(ТекстСообщения: Строка) // какой-то обработчик ;
- Тип КлючПриложения переименован в КлючиПриложенияВзаимодействия;
- Тип ПараметрыПриложения переименован в ПараметрыПриложенияВзаимодействия;
- Тип Сообщение переименовано в СообщениеВзаимодействия;
-
В типе СистемаВзаимодействия удалены следующие методы:
- Подключиться;
- ПодключитьсяБезПроверкиСертификата;
- Отключиться;
- Войти;
- ОбновитьПриложение;
- ПодключитьсяВременный;
- АутентифицироватьсяВременный;
- ПолучитьДанныеАутентификацииВременный;
- Добавлен тип УправлениеПриложениямиВзаимодействия. Предоставляет возможность выполнять операции на сервере взаимодействия, связанные с приложениями системы взаимодействия;
- Метод СистемаВзаимодействия.СоздатьПриложение перемещен и переименован в УправлениеПриложениямиВзаимодействия.СоздатьПриложениеВзаимодействия;
- Метод СистемаВзаимодействия.ЗапроситьКодАктивации перемещен в тип УправлениеПриложениямиВзаимодействия;
- Добавлен новый объект ПользовательВзаимодействия — информация о пользователе взаимодействия.
- Добавлено новое исключение ИсключениеОбъектСуществуетВСистемеВзаимодействия, выбрасываемое при попытке создать объект, который уже есть в системе взаимодействия;
- В перечисление РежимСопоставленияПользователейВзаимодействия добавлено новое значение ПоКлючуСопоставления, используемое при объединении приложений взаимодействия;
- В объект СистемаВзаимодействия добавлены новые методы:
- ПолучитьТекущегоПользователяВзаимодействия — для получения информации о текущем пользователе взаимодействия.
- НайтиПользователяВзаимодействия — для получения информации о пользователе взаимодействия по его идентификатору в системе взаимодействия.
- НайтиПользователейВзаимодействия — для поиска пользователей взаимодействия по отбору.
- СоздатьПользователяВзаимодействия — для создания нового пользователя взаимодействия.
- РедактироватьПользователяВзаимодействия — для изменения свойств пользователя взаимодействия по его идентификатору в системе взаимодействия.
- Метод СистемаВзаимодействия.ПолучитьСообщение переименован в СистемаВзаимодействия.НайтиСообщение;
- Метод СистемаВзаимодействия.ПолучитьОбсуждение переименован в СистемаВзаимодействия.НайтиОбсуждение;
- Создавать нового пользователя взаимодействия без аутентификации под ним.
- Изменять свойства пользователя, например ключ сопоставления, используемый при объединении приложений.
- Искать пользователей взаимодействия с отборами.
- Упрощенный способ получения данных текущего пользователя взаимодействия.
Язык запросов
- ОписаниеИсточникаДанных стало возможным использовать в литерале запроса;
- В языке запросов стали доступны функции для конвертации значений различных типов в тип Строка. Значения, приведенные к типу Строка, затем можно использовать в выражениях внутри самого запроса;
- Для элементов проекта «Справочник», «Документ» и «Регистр Сведений» добавлены таблицы регистрации изменений. Они создаются после того, как элемент проекта добавляется в состав плана обмена.
Групповая разработка
- При удалении либо добавлении разработчика в список разработчиков проекта, а также при изменении его роли, разработчику теперь высылается уведомления по e-mail;
- Если в удаленном репозитории были сделаны изменения, то при запуске среды разработки пользователю автоматически будет предложено получить эти изменения;
- В среде разработки, в представлении 1С, в группах Версии и Задачи добавлена возможность вливать изменения в текущую ветку из нужной версии либо задачи;
- Новые возможности фиксировать изменения в среде
разработки:
- Добавлена возможность фиксировать изменения в Навигаторе проекта;
- Добавлена возможность фиксировать изменения, при нажатии на Ветку либо Задачу/Версию в строке состояния;
- Переработаны элементы представления Система управления версиями с целью сделать процесс фиксации изменений более простым и понятным.
- При создании репозитория для проекта, для которого уже создано приложение, это приложение автоматически будет назначено на существующую ветку.
- Если при наличии групповой разработки для запуска разработки приложения не назначено ветки, то будет открыто диалоговое окно с предложением создать новую задачу или ветку, либо использовать его для разработки версии.
- При попытке включить задачу в версию в панели управления, при наличии конфликтующих изменений, будет предложено открыть среду разработки для разрешение имеющихся конфликтов.
- В панели управления появилась возможность переносить задачи в другие версии проекта. При возникновении конфликтов, будет предложено открыть среду разработки для их разрешения
- В среду разработки добавлена возможность интерактивного разрешения конфликтов:
- Добавлена подсветка обеих версий кода, между которыми произошел конфликт;
- Добавлены элементы интерфейса, позволяющие интерактивно принять текущие изменения;
- Добавлены элементы интерфейса, позволяющие интерактивно принять входящие изменения;
- Добавлена возможность открыть сравнение двух сторон конфликта в отдельном окне.
- В среде разработки, в контекстном меню фиксации, в панели фиксаций, добавлена
возможность:
- Осуществить сброс (reset) до выбранной фиксации;
- Осуществить сброс (reset) до фиксации, предыдущей к выбранной;
- Осуществить перебазирование (rebase) текущей ветки на фиксацию.
- В среде разработки, в контекстном меню ветки, в панели веток, добавлена
возможность:
- Осуществить перебазирование (rebase) текущей ветки на ветку.
- В среде разработки, в контекстном меню панели тегов, добавлена возможность:
- Создания тега (tag + push).
- В среде разработки, в контекстном меню тега, в панели тегов добавлена
возможность:
- Удаления тега (tag -d + push).
-
Добавлено отображение текущей версии (если открыта версия) или текущей задачи (если открыта задача) при разработке в среде разработки.
-
В панель просмотра истории фиксаций добавлено отображение сведений о задачах, в рамках которых сделаны фиксации. Префикс задачи по-умолчанию добавляется в сообщение фиксации (данную функциональность можно отключить). Если у фиксации есть префикс в сообщении, то для этой фиксации доступна команда открытия задачи в панели управления.