Меня зовут Матвей Серегин, я работаю в Фирме 1С системным архитектором сервиса 1С:Бухобслуживание – это самый крупный сервис по автоматизации бухгалтерского аутсорсинга. Платформа 1С развивается в разных направлениях: для пользователей и для специалистов службы эксплуатации. Я рассмотрю изменения с позиции прикладного разработчика. Что мне, как разработчику, нужно знать, чтобы грамотно вписывать в свои конфигурации те возможности, которые предоставляют новые версии платформы? Постараюсь на каждую из технологий привести конкретный практический пример, где она либо уже применяется (мной или в практиках), либо, если технологии совсем новые (в бета-версиях), где это будет применяться или где я планирую это применить.
Что входит в экосистему 1С для разработчика
На базе платформы 1С практически во всех современных конфигурациях располагается Библиотека стандартных подсистем. Поэтому мы никак не можем исключать БСП, говоря о развитии платформы и о новых возможностях, которые нами используются в прикладной разработке.
Прикладные подсистемы базируются на этом фундаменте. В своей работе они взаимодействуют с многочисленными дополнительными компонентами: 1С:ИТС, 1С:Аналитика, 1С:Предприятие.Элемент, 1С:Исполнитель, 1С:Шина и многими другими. Они, с одной стороны, не включены в дистрибутив платформы. С другой стороны, современные конфигурации очень много с ними взаимодействуют и получают дополнительную пользу.
В статье я хочу сфокусироваться на развитии двух основных продуктов: платформы 1С:Предприятие (версии с 8.3.23 по 8.3.26) и Библиотеки стандартных подсистем (версии с 3.1.8 по 3.1.10).
Рассмотрим отрезок с 2022 года по сегодняшний день – и немного заглянем в будущее.
Режим совместимости и новые функции платформы
Когда я рассказываю о новинках платформы коллегам или сообществу, я очень часто слышу: «А когда же мы сможем использовать эти новинки в типовых конфигурациях? Режим совместимости сильно отстает от платформы».
На сегодняшний день в типовых конфигурациях режим совместимости где-то 8.3.24, а где-то 8.3.21. Новую функциональность платформы мы практически всегда можем использовать без изменения режима совместимости. То есть, если у нашей конфигурации режим совместимости 8.3.21, мы поставили платформу 8.3.25 и можем использовать новые функции, привнесенные в 8.3.25. Режим совместимости не мешает.
При этом есть отдельные моменты, когда меняется уже существующая функциональность, на которую могут опираться прикладные конфигурации. В этом случае, безусловно, нам нужно будет дождаться изменения режима совместимости. Но большая часть нововведений, которые я буду рассматривать, относится именно к первому случаю: новую функциональность можно использовать, просто установив новую платформу на сервер и клиент.
Новшества платформы 8.3.23: Комьюнити-лицензии, Регулярные выражения, Множественные значения, Распознавание речи
Комьюнити-лицензии. Появилась возможность бесплатно использовать платформу для разработки, тестирования и обучения. Если у вас есть задача на своей машине (дома, на ноутбуке, на виртуалке) развернуть платформу и потестировать какие-то базы или поразрабатывать – вы можете сделать это бесплатно. Вам не нужен ключ или программная лицензия. Вы просто регистрируетесь на портале developer.1с.ru, подтверждаете номер телефона и активируете комьюнити-лицензию на машине.
Преимущества. Во-первых, можно использовать сервер. То есть развернуть сервер и в нем активировать лицензию. Во-вторых, на этом сервере можно использовать функции, которые требуют лицензию КОРП (профили безопасности, хранилище двоичных данных и др.). Разработчики могут у себя разрабатывать механизмы, которые опираются на КОРП-функции платформы, при этом не просить у работодателя покупку дорогого сервера КОРП.
Регулярные выражения. Позволяют искать по сложным конструкциям в строке, проверять соответствие строки формату, менять подстроку по сложному алгоритму. Работают значительно быстрее, чем аналогичные алгоритмы на встроенном языке.
Примеры использования:
-
Автоматизированная проверка конфигурации. Статический анализатор кода на 1С использует регулярные выражения для проверки соответствия кода стандартам.
-
Проверка внедрения БСП (статический анализ).
-
Распознавание назначения платежа в банковских выписках (бухгалтерия НКО) – регулярные выражения вычленяют блоки строки для передачи в алгоритм.
-
Синтетические тесты. Строковые функции БСП (латинские/русские буквы) работают в десятки раз быстрее при замене алгоритмов на регулярные выражения. Возможно, БСП изменит эти функции после отказа от поддержки платформы 8.3.21.
-
Исключение небезопасного содержимого из файлов HTML (например, теги script). Алгоритмически это сложно и ресурсоемко, регулярные выражения делают это проще и быстрее.
В багаж знаний профессионального разработчика 1С уровня Middle+ стоит включать регулярные выражения. Очень полезный инструмент.
Множественные значения в полях ввода. Ранее значения из списка значений выводились через точку с запятой и редактировались в отдельном окне. В 8.3.23 появилась возможность:
-
Редактировать значения через выпадающее меню;
-
Управлять оформлением (прикреплять картинки, выводить значения в кружочках, в ячейках таблиц значений);
-
В динамических списках при добавлении автоматического отбора с видом «В списке» включать множественный выбор (работает «из коробки»);
-
Делать удобный вывод множественных значений в конкретной колонке таблицы (раньше делали рядом лежащую таблицу значений или вложенную таблицу без удобного интерфейса).
Распознавание речи (первая ступень). Платформа поддерживает:
-
Потоковое распознавание. Система в реальном времени преобразует речь человека в текст с помощью специального сервиса.
-
Локальное и облачное распознавание. Можно использовать собственные мощности или облачные решения.
-
Обработку заранее записанных аудио. Пользователи могут загружать готовые записи для анализа.
-
Подключение пользовательских словарей. Если в речи встречается специфическая терминология, можно загрузить свой словарь.
Можно надиктовывать письма или автоматически транскрибировать телефонные разговоры (если у вас АТС пишет телефонные разговоры) без подключения каких-то сторонних решений.
Новшества платформы 8.3.24: Работа с буфером обмена, Улучшения отладки, Форматирование в табличном документе
Работа с буфером обмена. Ранее с помощью поля HTML-объекта, COM-объекта или JavaScript можно было положить информацию в буфер обмена, а затем достать. Это было не кроссплатформенно и трудоемко. Теперь используется единый кроссплатформенный программный интерфейс, который работает в браузере (Linux, Windows, macOS).
Можно реализовывать нативные сценарии:
Копирование изображений и диаграмм. Скопируйте картинку или диаграмму в буфер обмена (Ctrl+C) и вставьте ее в Telegram через Ctrl+V.
Быстрое добавление скриншотов в документы. Сделайте скриншот (например, с помощью PrintScreen или Win+Shift+S) ? вставьте как присоединенный файл через Ctrl+V в письмо или заявку в 1С.
Перенос файлов между проводником и 1С. Выделите несколько файлов в проводнике (Ctrl+C), переключитесь в окно 1С и вставьте их (Ctrl+V) — файлы добавятся как вложения.
Обмен данными между табличными частями. Поддерживается перенос строк и структур данных как в пределах одной информационной базы, так и между разными ИБ (для ссылочных типов требуется дополнительный алгоритм сопоставления).
Платформа позволяет записывать и считывать сложные структуры в системный буфер (обеспечивая прозрачную работу между тонким клиентом и веб-клиентом).
Отладка. Появилась возможность более гибко настраивать условия срабатывания точек останова (например, по стеку). Также стало возможным не останавливать исполнение кода на продуктиве при срабатывании точки останова (что чревато блокировками), а только логировать попадание в точку с фиксацией контекста вызова и других данных для расследования.
Форматирование в табличном документе. Появилась возможность форматирования ячеек (в несколько этапов). Можно сформировать форматированную строку и назначить ее в качестве текста ячейки.
Часто возникают запросы на выделение элементов при печати документов. Например, в договорах нужно подсветить ключевые слова (название организации, контрагента и т. д.). Раньше для такого форматирования приходилось создавать печатную форму в формате DOCX, даже если требовалось лишь выделить один фрагмент жирным.
Теперь это можно сделать непосредственно в табличном документе, не выходя за рамки платформы.
Новшества платформы 8.3.25: Пауза, Синтез речи, Временные таблицы, Усечение типов, Режимы записи регистров
Пауза. Появилась функция приостановки выполнения кода на указанное время (в миллисекундах).
Нюансы. Прямое использование паузы в клиент-серверном вызове запрещено – она доступна только на сервере. Ограничение можно обойти с помощью ожидания фонового задания. Однако мы теряем точность паузы, поскольку запуск фонового задания требует дополнительного времени (возможна погрешность вплоть до десятков миллисекунд).
Сама пауза обеспечивает высокую точность (например, можно ждать ровно 5 миллисекунд). Она полезна в сценариях, где нужно:
-
Ожидать выполнение синхронного метода внешней системы (например, отправили запрос, подождали 1–2 секунды, проверили ответ).
-
Контролировать частоту запросов при интеграции с внешними сервисами.
Например, если сервис ограничивает число запросов (не более 10 в секунду), то после получения ошибки 429 можно сделать паузу на разумное время (например, секунду) и повторить запрос.
Важно: если сервис требует ждать 5 минут, пауза – не лучшее решение. В таком случае стоит прервать выполнение и возобновить попытки при следующем сеансе взаимодействия.
Синтез речи (вторая ступень). Появилась возможность озвучивать текст (например, прочитать входящее письмо). Это еще один шаг к созданию голосовых интерфейсов.
В платформе 8.3.28 планируется активация распознавания речи по ключевым словам, что позволит создавать полноценные голосовые интерфейсы (как Яндекс.Алиса или Apple).
Временные таблицы. Появились новые возможности:
-
Добавлять несколько индексов (включая уникальные) к временной таблице. Это полезно, если таблица используется в разных запросах с соединениями по разным полям.
-
Добавлять записи в существующую временную таблицу (вместо уничтожения старой и создания новой с тем же именем через «Поместить»). Уменьшает нагрузку на СУБД, упрощает код (особенно при использовании менеджеров временных таблиц, собирающих данные из разных модулей).
Усечение типов. Изменения на стыке эксплуатации и прикладной разработки.
Если мы работаем с регистром сведений, содержащим измерения с множественными ссылками, и при этом в этом технологическом регистре не хранятся важные пользовательские данные (например, там могут быть только кэши), то при удалении одного типа из составного измерения нам нужно заранее позаботиться о том, чтобы все строки, где этот тип упоминался, были удалены. В противном случае при реструктуризации возникнет ошибка из-за нарушения уникальности ключевых полей, что остановит процесс.
Теперь, если мы уверены, что эти данные можно безопасно удалить, мы можем просто указать для измерения параметр «удалять записи при реструктуризации».
Однако если усечение типов для нас неприемлемо (например, в случае определяемого типа, на который мы опираемся в чужой библиотеке), мы можем установить правило «запрещено усечение». В таком случае система не будет пытаться очищать данные или проверять их на дубли, а просто откажет в выполнении операции, сообщив, что для этого измерения удаление запрещено.
Таким образом мы получаем больше возможностей для принятия решений и их автоматической передачи в эксплуатацию. Кроме того, в некоторых случаях это упрощает планирование обновлений.
Режимы записи регистров. Появились новые режимы для эффективных записи/обновления/удаления данных в регистрах сведений.
Раньше, когда нужно удалить или обновить записи в регистре сведений с разными наборами измерений, один отбор не покрывал все случаи. Приходилось обрабатывать записи в цикле – по одной или минимальными группами – каждый раз вызывая метод «Записать» у регистра. Даже если обернуть это в транзакцию на верхнем уровне, каждый вызов оставался ресурсоемкой операцией.
Теперь мы можем выполнить эту задачу за один вызов метода «Записать»:
-
Готовим набор записей;
-
Указываем, по каким измерениям нужно удалить данные;
-
Запрос отправляется в СУБД, и записи удаляются.
Аналогично работает и Слияние. Если запись уже есть в регистре, обновляются ее ресурсы и реквизиты. Если записи нет, она добавляется с указанными измерениями, ресурсами и реквизитами.
Обновление и его отличие от Слияния:
-
В режиме Слияния платформа проверяет наличие записей: обновляет существующие или добавляет новые;
-
В режиме Обновления мы гарантируем, что записи уже есть в регистре. Если их нет, возникнет исключение.
В 25-й версии новые режимы записи регистров работали только с независимыми регистрами сведений. В 26-й поддерживаются и регистры накопления, и подчиненные регистратору регистры сведений.
Для регистров накопления ключевыми полями становятся регистратор и номер строки, по которым сопоставляются записи. При этом не требуется устанавливать отбор по регистратору. Можно, например, взять 100 документов, сформировать их движения единым алгоритмом и записать одной операцией (если движения ранее не были созданы).
Новшества платформы 8.3.26: Прямое оповещение клиента, Пакетная обработка, Управление строкой поиска, Расширение режимов записи регистров
Прямое оповещение клиента. Ранее для оповещения клиента с сервера требовалась работающая «Система взаимодействия». В 8.3.26 появился простой программный интерфейс для прямого оповещения клиента в рамках сеанса.
Алгоритм действия:
-
На клиенте подключается обработчик оповещения;
-
На сервере вызывается метод отправки данных в сеанс;
-
Обработчик на клиенте получает данные.
Примеры использования:
-
Пришел новый лид и с сайта через HTTP-сервис необходимо срочно оповестить «Позвони менеджеру».
-
Поступил входящий звонок и нам необходимо автоматически открыть форму контакта/контрагента.
-
Разрабатываем собственный мессенджер/чат в 1С.
-
Необходимо быстро реагировать на изменение параметров работы оборудования/внешней системы.
-
Необходимо оповестить пользователя о срочной задаче.
-
Требуется отображать прогресс выполнения фонового задания (замена опросам состояния).
Пакетная обработка. Появилась возможность получать объекты (элементы справочников, документы) порционно при обработке большого объема. Ускоряет чтение (хотя основное время обычно занимает запись).
Управление строкой поиска. Появилась централизованная настройка (через настройки пользователя) для включения/отключения строки поиска во всех динамических списках. Решает проблему, когда поиск слишком ресурсоемок или не нужен в конкретных формах/для конкретных пользователей, а отключать его в каждой форме неудобно.
Взгляд в будущее. Платформа 8.3.27+
Планируемые возможности будущих версий:
-
Увеличение максимального числа строк в табличной части. Решение для тех, кто сталкивается с ограничениями.
-
Форматированная строка в макетах СКД. Возможность использовать форматированный текст не только в табличных документах, но и в отчетах, формируемых Системой компоновки данных (СКД). Гибкое оформление отчетов.
-
Поддержка протокола WebSocket со стороны клиента. Потенциал для интеграции с промышленными роботами и другими системами, требующими двусторонней связи в реальном времени (например, для роботизации).
Новшества БСП 3.1.8 - 3.1.10: Автокомпоновка печатных форм, Метки, Управление доступом
Автокомпоновка печатных форм. Эта функциональность появилась в версии 3.1.8. Она позволяет создавать простые печатные формы без программирования. Достаточно зайти в «Администрирование» ? «Печатные формы отчетов и обработок» ? «Макеты печатных форм», нажать кнопку «Добавить» и собрать форму в пользовательском режиме. Можно добавлять параметры, стандартные функции и другие элементы.
Конечно, это не дает такой гибкости, как встроенный язык программирования, где можно реализовать любую логику. Однако базовые поля доступны, а при необходимости их список можно расширить – для этого нужно подложить СКД-макет в конфигураторе соответствующему объекту. Если требуется распространить эту печатную форму на другие инсталляции, готовый макет можно перенести в конфигуратор и затем развернуть.
Таким образом, теперь есть два варианта создания печатных форм: алгоритмическое заполнение и автокомпоновка.
Метки. Это альтернативное представление дополнительных реквизитов – по сути, те же данные, но с другим способом вывода в интерфейсе (в списках и формах объектов).
Управление доступом с ограничением по времени. В подсистеме управления доступом появилась возможность задавать срок действия прав пользователя. Например, если сотрудник временно замещает руководителя отдела во время отпуска, можно сразу указать дату окончания доступа. Как только срок истечет, пользователь автоматически исключается из группы.
Раньше такие задачи приходилось решать через регламентные задания или ручное управление. Теперь это встроенная функциональность БСП.
Развитие сторонних компонентов: Система взаимодействия, 1С:Аналитика, 1С:Предприятие.Элемент
Система взаимодействия включает в себя:
-
Встраиваемые веб-чаты;
-
Удобное взаимодействие с командами ботов (например, кнопки в Telegram);
-
Аналог Telegram-каналов, где писать может только программа (администратор), а пользователи – только читать (например, канал важных новостей).
1С:Аналитика включает в себя:
-
Возможность использовать данные из нескольких информационных баз в одном дашборде;
-
Возможность настраивать объединение и соединение таблиц источников данных на уровне самой «Аналитики» (раньше это можно было делать только через кастомные источники данных, написанные разработчиком).
1С:Предприятие.Элемент. Это технология для разработки пользовательских приложений и сервисов без интерфейсов. Предоставляет привычную объектную модель. Оснащена современным встроенным языком.
*************
Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT.