Инструменты от 1С годами не развиваются. Картинка – это мои личные эмоции, как к этому можно относиться. Поэтому берем все в свои руки и делаем.
Что такое Infostart Toolkit? Завидую тем, кто об этом ничего не знает, вы будете приятно удивлены.
-
Infostart Toolkit – это набор инструментов, который предоставляется в виде расширения, которое предназначено для разработчиков, но будет полезно для админов и консультантов 1С. Инструменты не предназначены для конфигуратора или командной строки, они работают в режиме «1С:Предприятие»
-
Особенность инструментов – они работают только на управляемых формах. Про обычные формы забыли – инструменты предназначены для того, чтобы работать в последних версиях конфигураций и не создавать проблем по интерфейсу, запуску и так далее. Важный момент – расширение интегрируется с БСП, плюс почти все возможности, за исключением маленьких нюансов, работают в тонком клиенте.
-
Основной инструмент – это «Консоль разработчика», с нее это все началось. Наверное, вы знаете об «Управляемой консоли отчетов» – это полезная и хорошо скачиваемая на Инфостарте разработка, которой многие давно пользуются. На основе «Управляемой консоли отчетов» реализована консоль разработчика, которая входит в состав инструментов. Внутри консоли разработчика помимо консоли запросов и консоли СКД теперь есть также консоль кода.
Цель инструментов – решать задачи, упрощать жизнь разработчика. Мир 1С проще не становится: большие конфигурации, ERP, БСП. Часто встречаются сложные запросы, где в одном пакете легко может быть 50 запросов, со всем этим приходится разбираться – оптимизировать, понимать, как это работает. Для этого нужны инструменты.
Infostart Toolkit содержит множество обработок и полезных функций, но сейчас хочется сосредоточиться на общих, наиболее полезных функциях, которые были добавлены недавно и создают вау-эффект.
Редактор кода в Infostart Toolkit
Стандартный редактор кода, основанный на поле текстового документа, в управляемых формах выглядит совсем грустно – никаких особых возможностей у него нет, в обычных формах хотя бы была подсветка синтаксиса. Сейчас я говорю про режим «1С:Предприятие». В конфигураторе все есть, но в режиме «1С:Предприятие» все грустно.
В Infostart Toolkit используется редактор кода на основе Monaco Editor. Он работает в тонком клиенте, выглядит, как показано на слайде.
Когда я говорю о редакторе кода, встроенном в Toolkit, это как некий API, который размещается на форме и умеет понимать несколько языков – работает со встроенным языком, языком запросов, языком выражений СКД, xml.
Это все работает, начиная с платформы 8.3.14, потому что только на этой платформе 1С перевела поле HTML на движок WebKit. После этого стало возможно использовать фреймворк MS Monaco, на котором это построено.
Здесь реализована подсветка синтаксиса на лету и всякие мелкие полезности, вроде выделения текущего идентификатора и сворачивания блоков.
На слайде гифка, которая наглядно показывает, как можно редактировать или писать запрос в тонком клиенте с помощью Toolkit. Те, кто любит писать запросы вручную, оценят эту возможность. Есть контекстный помощник ввода, подсказка по параметрам, шаблоны кода (сниппеты из MS Monaco).
Я сам не так часто пишу запросы вручную и даже с появлением этой функции не стал писать чаще, но мне стало значительно удобнее оценивать текст запроса в конструкторе и писать выражения полей с помощью этого редактора. Очень приятно и здорово. Такого и в конфигураторе нет – разве что в EDT есть нечто подобное.
В этом редакторе есть сравнение текстов. Стандартная функция «Сравнить файлы» работает только в толстом клиенте, а в этом редакторе можно сравнивать и в тонком клиенте, и более наглядно.
Сравнивать можно в двух вариантах:
-
сопоставление двух окон как в 1С – в редакторе Монако это будет выглядеть еще более наглядно;
-
и есть вариант в GitLab и GitHub, когда новые строки отображаются плюсом, а удаленные – минусом. Этот вариант тоже по-своему удобен.
Подробная статья о возможностях редактора Monaco в IS Toolkit
Редактор на основе Monaco Editor базируется на открытой разработке Александра Шкураева. Спасибо ему – это очень полезная обработка, преодолела все детские болезни и уже является мастхэв к использованию.
Конструктор запросов тонкого клиента
Где-то в 2004 году в платформе 8.0 появился конструктор запросов на обычных формах. И только в 2014 году в платформе 8.3.5 вместе с появлением объектной модели схемы запроса появился конструктор для тонкого клиента. Он на 99% похож на старый конструктор, но в нем отличается настройка связей между таблицами, и это у многих вызывает неудобства.
Как оказалось, конструктор запроса – это внешняя обработка, встроенная внутрь платформы, ее можно извлечь. Ее особенность – она платформозависимая. С каждой версией платформы идет своя обработка конструктора. И разработчики платформы постоянно в ней что-то меняют, хотя бы по мелочи – не бывает такого, чтобы ничего не поменялось. И еще, как и все встроенные обработки, она написана на английском языке – залезть туда и переписать код для тех, кто разрабатывает на русском, проблематично. Мне удалось этот конструктор достать, доработать его функциональность и внедрить в свой продукт.
Что в нем есть в первую очередь?
-
Есть контекстная подсказка при редактировании выражений – это удобно, очень помогает.
-
Есть подсказка по функциям: например, функция в запросе РАЗНОСТЬДАТ(). Сколько работаю, так и не могу привыкнуть, где первый параметр, а где второй, куда и какую дату вставить. С подсказкой это легче проходит.
-
И всякие мелочи вроде шаблонов и сворачивания блоков.
Я не стал бы дорабатывать конструктор запроса, если бы в стандартном конструкторе «вылечили» связи. Непривычно работать со связями в виде дерева. Здесь это исправлено, связи работают как в классическом конструкторе. Чуть попроще, чем там, но неудобств не вызывают.
Тут можно помолчать о том, сколько разработчиков пострадало из-за особенностей работы закладки «Связи» в стандартном конструкторе. Здесь этот вопрос решен.
Еще одна из возможностей, ради которой этот конструктор появился, – это передача входных таблиц внутрь конструктора.
Когда я создал консоль запросов, я реализован в ней возможность самому интерактивно добавлять для запроса таблицы в менеджер временных таблиц и загружать в них данные. Сразу появилась мысль – было бы здорово, если нажимаешь на конструктор, и он понимает все эти описанные таблицы.
Допустим, мы вытащили запрос из ЗУПа, в котором в менеджере временных таблиц лежит пять таблиц. При открытии этого запроса в доработанный конструктор выгрузится описание этих таблиц, и они будут выглядеть как обычные таблицы – не нужно будет нажимать кнопочку, описывать временную таблицу и только потом работать. Здесь это уже удобно сделано.
На слайде показано, что в конструкторе реализована даже такая простая функция как порядок условий. Иногда бывает, что сначала добавил условие по контрагенту, а потом – по организации. А с целью оптимизации хочется, чтобы вначале было условие по организации, а потом по контрагенту. В стандартном конструкторе порядок условий менять нельзя, в классическом конструкторе этого тоже нет, фирма «1С» игнорирует все просьбы это сделать. А у меня внедрение этой функции это заняло меньше 10 минут. Я добавил кнопки, которые вызывают сдвиг строки, и все – это работает.
В этом конструкторе есть еще ряд других доработок – на слайде можно видеть, что в заголовке закладки «Условия» показано количество условий, выводятся картинки типов полей и т.д. Плюс я исправил около 10 багов в стандартном конструкторе. Есть статья на Инфостарте, где детально расписано, что улучшено.
Конструктор схемы компоновки данных
Конструктор схемы компоновки данных – это тоже «старичок». Он появился вместе с СКД, и какой был при рождении, такой до сих пор и остался. В тонком клиенте этот конструктор до сих пор не работает. Когда нужно что-то настроить, приходится запускаться в толстом клиенте. Это вызывает большое неудобство, потому что вызов конструктора СКД в тонком клиенте требуется чаще, чем конструктора запросов – допустим, для настройки источников данных для бюджетирования. Очень нужен конструктор, который будет запускаться в тонком клиенте.
Я начал работу над конструктором СКД на управляемых формах, но к конференции не успел его закончить и выкатить что-то стабильное. Там обнаружилось много сложных моментов – например, нет управляемых форм для редактирования многих элементов и есть особенности, которые не позволяют кое-какие моменты сделать быстро.
Пока что конструктор СКД для управляемых форм в разработке, но основную концепцию уже могу показать.
-
Он работает в тонком клиенте.
-
Его редактор запроса реализован на основе Monaco Editor и включает контекстную подсказку и доработанный конструктор запроса, о котором я рассказывал перед этим. Думаю, что если бы я использовал стандартный конструктор запроса для тонкого клиента, многим бы это тоже не понравилось, потому что в конструкторе СКД, который вызывается в конфигураторе и толстом клиенте, конструктор запроса классический, где закладка «Связи» нормально работает.
-
Обработка создана полностью с нуля – это даже лучше, потому что не нужно разбираться с уже имеющимся кодом на английском языке. Поэтому здесь будет больше улучшений для работы со схемой СКД.
Например, редактировать выражение в этом конструкторе схемы компоновки можно будет в отдельном окне – при этом можно будет посмотреть, какие функции и как вызываются, какие параметры. Здесь есть контекстная подсказка, которая знает источники данных, функции… На примере гифки видно, что не нужно мучиться с функцией ВычислитьВыражениеСГруппировкойВМассив(). Думаю, будет полезно для написания выражений для СКД.
Некоторые мелочи в новом конструкторе я сразу улучшил.
Например, в СКД в конструкторе странно устроена работа с наборами полей и группами. Нельзя сделать группу и поместить в нее поле интерактивно – только через путь к данным. Создаешь группу, потом у поля ты должен прописать путь к данным Группа1.<Имя поля>, и только тогда оно будет помещаться в эту группу. Причем, поля могут отображаться совершенно не по порядку – группа может быть десятым полем, а поле, которое входит в эту группу – третьим. Аналогично с наборами полей.
На слайде видно, что в новом конструкторе работа с группами и наборами данных уже происходит в виде дерева – поле можно таскать, помещать его внутрь группы и это будет работать более адекватно и понятно. Тем более, что в других механизмах платформы 1С нет ничего, что работало бы через путь к данным – поэтому я переделал принцип, чтобы не приходилось разбираться с непонятным новым механизмом.
Скрыта работа с источниками. Есть источники данных – это отдельный объект, который в конструкторе никак не используется, ни на что не влияет, но без него нельзя собрать схему. Я это все скрыл, чтобы схема, которую вы передали, не ломалась. Источники есть, но все скрыто.
Это будет более оптимизированный вариант конструктора с большим упором на удобство. Здесь можно сделать много полезных штучек. Если у кого-то есть идеи, что еще можно сделать, – открыт для всех предложений, мне важно не просто повторить функциональность, а привнести что-то новое.
Интеграция с БСП
БСП повсеместно используется во всех серьезных и тяжелых проектах – наносит :) большую пользу. Поэтому инструменты рекомендуется ставить на конфигурации, построенные на базе БСП.
На конфигурациях, которые не содержат БСП, инструменты тоже будут работать, но с БСП «в коробке» идет много полезных функций.
Например, добавление инструментов к подключаемым командам – команды Infostart Toolkit сразу же интегрируются в объект, можно открыть карточку контрагента и из него вызвать «Поиск ссылок на объект», «Редактор объекта», «Журнал регистрации» и т.д. Это достаточно удобно, потому что позволяет обращаться к инструментам для изучения того, что есть в системе – использовать для контекстного анализа данных.
Одна из важнейших функций БСП – там есть фоновое выполнение через «Длительные операции». Используется для фонового выполнения запросов, построения схемы, групповой обработки. Удобно, если мы выполняем запрос, который завис на три минуты, нажали отмену и запрос перестал выполняться, сеанс прерывать не нужно.
Учитывается внутреннее устройство БСП:
-
дополнительные свойства в редакторе объекта редактируются вместе с реквизитами;
-
при поиске ссылок исключаются те, для которых в коде объекта прописано, что их поиск при контроле ссылочной целостности не должен производиться;
-
доп.свойства регламентных заданий – поскольку регламентное задание в платформе не имеет возможности настройки через функциональные опции, разработчики БСП выкрутились в виде доп.свойств регламентных заданий – они в инструментах тоже учитываются.
Дополнительные инструменты – форма выбора типа и «Все функции»
В каждой более-менее нормальной консоли есть своя форма выбора типа, потому что стандартная форма, которую предоставляет нам 1С, ужасна – в ERP она просто выводит список из 10 тысяч строк для типов, из которых нужно выбрать.
В Infostart Toolkit тоже есть удобная форма выбора, которая используется в большинстве инструментов расширения. Она похожа на форму, которая есть в конфигураторе. В ней есть поиск по подстроке, группировка по метаданным. Она работает быстро за счет динамического считывания – мгновенно открывается в любой конфигурации и очень быстро работает.
Также в состав расширения входит инструмент «Все функции» – он похож на встроенный инструмент «Функции для технического специалиста», вызываемый через главное меню
-
В отличие от стандартного, инструмент «Все функции» можно вызвать комбинацией клавиш Alt+A.
-
Он быстро запускается, никаких неудобств не доставляет.
-
Работает поиск по подстроке – даже в версиях платформ меньше 8.3.15, где во встроенном инструменте возможности поиска нет. А здесь – нажал Alt+A, набрал «Конт» и открыл справочник «Контрагенты».
-
Из ветки «Стандартные» можно запускать свои инструменты. В стандартных «Функциях для технического специалиста» из ветки «Стандартные» открываются штатные обработки. А в Infostart Toolkit открываются свои обработки – они более функциональные и удобные.
Подписки на события
В платформе когда-то появилась такая замечательная вещь, как подписки на события, но в конфигураторе так и не появилось инструмента «Все подписки», аналогичного инструменту «Все роли», способного упростить работу с подписками.
Есть несколько обработок, которые написаны сообществом и решают эту проблему. В EDT тоже появилась работа с этими подписками – можно накладывать фильтры, находить, на какой объект какие подписки, в удобном виде.
Здесь тоже есть инструмент, который работает с подписками почти так же, как это реализовано в EDT, но только в тонком клиенте на управляемых формах.
Оптимизация
В Infostart Toolkit много различных оптимизаций. Сами понимаете, скорость нужна всем – нужно, чтобы все быстро формировалось. Проще всего доказать полезность инструментов тем, что стандартно что-то делается за 15 секунд, а инструменты делают то же самое за 1 секунду. Это прямая польза, экономия времени разработчика.
Есть несколько примеров.
Если сравнить скорость формирования табличного документа в стандартной консоли от 1С, которая лежит на ИТС, то с помощью Infostart Toolkit аналогичный результат в табличном документе выводится в 14 раз быстрее. Если в стандартной консоли мы ждем минуту, то в Toolkit тот же самый результат будет выведен за 4 секунды. Это позволяет работать с большим количеством данных, выполнять пакетные запросы с результатами всех временных таблиц и т.д.
Есть очень тяжелая функция – поиск GUIDа по всем объектам. Эта функциональность используется в редакторе объекта, в поиске ссылок, в консоли запросов – на закладке «Параметры». В поле выбора ссылки можно просто вставить GUID объекта, он поищет по всем метаданным, которые у нас есть (в ERP их около 10 тысяч), и выдаст те ссылки, которые под этот GUID подходят.
Для примера, в ERP первый поиск осуществляется 10 секунд, последующий – 1 секунду. В принципе, приемлемо.
Например, можно использовать при обменах – у нас есть регистр соответствия, где лежит GUID и тип, можно просто вставить этот GUID в редактор и увидеть, какой объект из него создался.
Эта простая функция заменяет обработки поиска по GUID, которые есть на Инфостарте.
Оптимизация редактора при работе с большими данными.
При расчете себестоимости в ERP у нас легко может сформироваться документ со 100 тыс. строк в движениях. Стандартный отчет по движениям такого документа будет долго формироваться. А к примеру, открытие редактора объекта, в котором документ содержит 200 реквизитов, 5 табличных частей по 10 тыс. строк и 50 тыс. строк в движении, занимает одну секунду. Вообще никакого дискомфорта не вызывает.
Это сложно достигается – все нужно распихать по временным хранилищам, не грузить данные в форму, много особенностей. Но редактор всегда запускается быстро, даже для документов с большим объемом данных.
Требования и ограничения
Как я уже сказал, Infostart Toolkit – это расширение, которое ставится на конфигурацию с БСП или без нее.
-
Если мы используем БСП, минимальная версия библиотеки подсистем должна быть 2.3 или даже выше, чтобы функции там лучше интегрировались, там есть некоторые особенности.
-
Режим запуска – только управляемое приложение, обычные формы не поддерживаются. Некоторые обработки даже выдают отказ при открытии, если вы попробуете их запустить на обычных формах.
-
Поддерживается платформа 8.3.10+, в том числе режим совместимости 8.3.10. Это значит, что платформу нужно ставить минимум 8.3.10 и режим совместимости тоже должен быть минимум 8.3.10.
-
Для работы редактора Monaco Editor необходима платформа 8.3.14.
Есть ряд ограничений, о которых я на слайде не упомянул:
-
Большинство возможностей будет работать в веб-клиенте, но пока на этом моменте не заморачиваемся – пока работу в веб-клиенте не поддерживаем.
-
Ну и Linux, в расширении используется ряд внешних компонент, поэтому пока в эту сторону вообще не смотрим и не думаем, чтобы запускать это и на Linux.
В обработке есть установщик, который устанавливает расширение «в один клик», потому что когда устанавливаешь расширение:
-
нужно определить, есть или нет БСП в конфигурации;
-
нужно убрать галочку «безопасный режим»;
-
расширение может быть вообще неприменимо для этой конфигурации – может, ваша платформа не поддерживает требования, и вам вообще невозможно установить.
Поэтому есть установщик, который сразу все показывает и устанавливает расширение в один клик и выдает важные оповещения.
Важно, что при установке не меняется структура данных – не надо выгонять пользователей, спокойно устанавливаете или обновляете.
Поддержка и развитие проекта
Несколько слов про развитие проекта:
-
Проект начался с «Управляемой консоли» и стабильно развивается более 3 лет. Это уже серьезное решение с «тяжелыми» функциями.
-
Проект опубликован на публичном сервере статического анализа кода SonarQube, развернутом на мощностях Инфостарта – просмотр показателей качества проекта доступен любому пользователю при входе по учетной записи GitHub. Там неплохие показатели, хотя в проекте уже достаточно много кода, он становится сложным. Работаем над тем, чтобы код был в порядке.
-
Хорошая поддержка: на GitHub есть задачи, видно, как они двигаются, адекватная реакция на запросы пользователей.
*************
Данная статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART EVENT POST-APOCALYPSE 2021.
Приглашаем на конференции Инфостарта 2025 годаINFOSTART TEAMLEAD EVENT
Не только для разработчиков, но и для руководителей отделов разработки, тимлидов и ИТ-директоров. INFOSTART A&PM EVENT (Анализ & Управление проектами)
Практическая конференция для аналитиков и руководителей проектов 1С. |