Содержание
1. Язык запросов и работа с временными таблицами
— 1.1 Добавление новых данных в существующую временную таблицу
— 1.2 Создание нескольких индексов для временной таблицы
— 1.3 Создание уникального индекса
— 2.3 Бизнес-процессы и задачи
3. Регистры сведений и подчиненные справочники
— 3.1 Регистры сведений: новые режимы записи
— 3.2 Реструктуризация независимых регистров сведений и подчиненных справочников: усечение типов
12 марта 2024 года фирма «1С» опубликовала тестовую версию технологической платформы «1С:Предприятие 8.3.25». В статье рассказали подробнее о некоторых нововведениях.
1. Язык запросов и работа с временными таблицами
1.1 Добавление новых данных в существующую временную таблицу
В новой версии станет доступным добавление данных в уже существующую временную таблицу (далее — ВТ) с помощью команды ДОБАВИТЬ (ADD).
Такая возможность позволит быстрее работать с открытым менеджером ВТ, оптимизировать читаемость текста запроса. Новые данные можно добавить отдельным пакетом без последующего удаления исходной таблицы.
Однако стоит учитывать, что структура добавляемых данных (состав колонок и их типы) должна совпадать со структурой ВТ, как при объединении. В противном случае возникнет ошибка «Тип устанавливаемого значения не соответствует типу поля временной таблицы».
1.2 Создание нескольких индексов для временной таблицы
С целью увеличения скорости поиска по ВТ в 1С будет реализовано создание нескольких индексов. Для предложения ИНДЕКСИРОВАТЬ ПО будет реализовано расширение НАБОРАМ (SETS).
На рисунке видно, что будут созданы два индекса по трем полям. Как правило, ВТ должна быть проиндексирована по тем полям, по которым дальше будет выполняться соединение или отбор.
Новая возможность позволяет оптимизировать запрос, когда есть большая ВТ, и в нескольких последующих запросах выполняется отбор или соединение по разным полям. Создавать индексы можно будет только при первом помещении данных в ВТ.
1.3 Создание уникального индекса
Для предложений ИНДЕКСИРОВАТЬ ПО и ИНДЕКСИРОВАТЬ ПО НАБОРАМ будет реализована опция УНИКАЛЬНО (UNIQUE).
Это гарантирует, что в наборе полей будут отсутствовать повторяющиеся комбинации. Подобный контроль уникальности индексов реализован в системе для регистров сведений.
2. Расширения конфигураций
2.1 Критерии отбора
Появится возможность в состав собственных и заимствованных критериев отбора включать реквизиты, которые добавлены другим объектам в расширении. Например, заимствуем в расширении документ «Доставка», критерий отбора «Документы контрагента» и справочник «Контрагенты». В расширении в документе «Доставка» создадим реквизит «Контрагент» с типом СправочникСсылка.Контрагенты. Теперь этот реквизит будет доступен в расширении для добавления в состав критерия отбора «Документы контрагента».
Далее можно использовать все преимущества критериев отбора. Например, функционал связанных документов из библиотеки стандартных подсистем, чтобы вывести в структуру подчиненности документы из расширения.
2.2 Подчиненные подсистемы
Ранее можно было добавлять в расширение только корневые подсистемы, теперь доступны для захвата и подчиненные ей подсистемы.
2.3 Бизнес-процессы и задачи
Новые возможности:
- Создание собственных бизнес-процессов и задач;
- Добавление собственных реквизитов, табличных частей и их реквизитов заимствованным бизнес-процессам и задачам;
- Модицифицирование ряда свойств у заимствованных бизнес-процессов и задач;
- Редактирование карты маршрутов заимствованных бизнес-процессов.
3. Регистры сведений и подчиненные справочники
3.1 Регистры сведений: новые режимы записи
На текущий момент единственный параметр метода Записать(<Замещение>) регистр сведений (РС) имеет значение типа Булево. В версии 8.3.25 он сможет также принимать значение нового перечисления РежимЗамещения / ReplacementMode:
- Добавление / Append эквивалентно текущему значению параметра «Замещение», равному «Ложь»;
- Замещение / Replace эквивалентно текущему значению параметра «Замещение», равному «Истина»;
- Слияние / Merge — в информационной базе происходит обновление записей, совпадающих по ключевым полям с записываемым набором, а остальные просто добавляются в регистр;
- Удаление / Delete — происходит удаление из информационной базы записей, совпадающих по ключевым полям.
Кроме того, обработчики событий «ПередЗаписью()» и «ПриЗаписи()», а также обработчики соответствующих подписок получили значение параметра «Замещение» в том виде, в каком он был передан методу «Записать()».
РежимЗамещения.Слияние и РежимЗамещения.Удаление возможны исключительно для независимого РС. Если попробовать применить их для РС, подчиненного регистратору, будет выброшено исключение.
Разработчики 1С не рекомендуют устанавливать отбор при записи в режимах «Слияние» и «Удаление». В силу большого разнообразия записей регистра в этих режимах автоматическая проверка записей на соответствие установленному отбору может привести к ошибке.
3.2 Реструктуризация независимых регистров сведений и подчиненных справочников: усечение типов
Такое нововведение позволяет определять поведение системы при сокращении количества типов в измерении. Сейчас записи независимых регистров сведений (НРС), если они записаны в разрезе сокращаемого измерения, при реструктуризации не удаляются — вместо этого значения измерений с удаленным типом заменяются на «Неопределено».
В новой платформе для измерений НРС будет введена настройка-перечисление «РежимСокращенияТипа», которая определяет поведение записей при реструктуризации:
- «Преобразовывать значения»: сохраняется старое поведение.
- «Удалять данные»: удаляются записи регистра со значениями измерений, относящихся к удаленному типу данных. При этом сокращается размер данных регистра и, соответственно, повышается скорость работы с ним.
- «Запрещать»: если в регистре есть записи, измерения которых имеют удаленный тип, обновление конфигурации будет запрещено.
В расширениях настройка «РежимСокращенияТипа» для измерений НРС пока будет недоступна.
Рассмотрим на примере. У нас есть независимый РС «ЦеныНоменклатуры», измерение ТоварыУслуги составного типа СправочникСсылка.Товары, СправочникСсылка.Услуги и ресурс «Цена» типа число. В регистре имеются записи и с товарами, и с услугами.
- По умолчанию у измерения ТоварыУслуги свойство РежимСокращенияТипа установлено как «Преобразовывать значения». В этом случае, если мы решим исключить из составного типа измерения «Услуги», то при попытке обновить конфигурацию мы получим предупреждение: «Записи регистра сведений стали неуникальными».
- Поменяем свойство РежимСокращенияТипа на «Запрещать», исключим из составного типа измерения «Услуги» и попробуем обновить конфигурацию. В результате получим предупреждение: «Сокращение состава типов измерения приводит к потере данных».
- Используем РежимСокращенияТипа в значении «Удалять данные» при попытке обновить конфигурацию. Мы получим предупреждение «Удалены записи из-за сокращения типов измерения».
По кнопке «Принять» все данные с услугами будут удалены из регистра.
4. Метод «ВызватьПаузу»
В новой версии платформы во встроенном языке будет реализован метод глобального контекста ВызватьПаузу (CallSleep), который приостанавливает выполнение потока сеанса на заданный интервал времени.
Если использовать серверный метод, содержащий «ВызватьПаузу» с клиента, будет вызвано исключение: «Нельзя вызвать метод «ВызватьПаузу» в клиент-серверном вызове».
«Мы сделали это осознанно: метод «ВызватьПаузу» блокирует выполнение кода и будучи вызван из клиентского кода, заблокирует пользовательский интерфейс. Мы же хотим, чтобы наш пользовательский интерфейс был максимально «отзывчивым». Для реализации функциональности паузы в клиентском коде есть другие способы. Например, можно воспользоваться механизмом фоновых заданий», — объяснили свое решение разработчики платформы.
Поэтому ВызовПаузы через механизм фоновых заданий нужно производить напрямую, а не через использование подсистемы длительных операций БСП, поскольку фоновые задания БСП при запуске приложения с параметром РежимОтладки заменяются на явные серверные вызовы — это приведет к ошибке выполнения.
Также вызов метода поддерживается в веб-сервисах, http-сервисах, ботах, и т. д. (где нет вызова с клиента). Предполагается, что метод «ВызватьПаузу» значительно упростит реализацию ряда сценариев, например, при интеграции с внешними системами.
Обо всех новых возможностях платформы можно прочитать на официальном сайте.
Остались вопросы?
Проконсультируйтесь с нашими специалистами