Ещё два приложения на том же ядре: салон красоты и страховая компанияСалон работает с календаря дня по мастерам: записи переносятся мышью, клик по свободному часу открывает карточку с уже подставленными мастером, датой и временем, а часы можно перекрыть под обед, уборку или выходной — в закрытое время база не даст записать клиента, кто бы ни писал. Страховое приложение закрывает жизнь, автомобиль и имущество: расчёт премии показывает каждый применённый коэффициент, правила андеррайтинга отказывают или отправляют риск человеку, полис получает график взносов, убыток урегулируется в пределах лимита по риску и франшизы, агенту начисляется комиссия. Ни там, ни там не понадобилось ни строки C++: оба приложения — метаданные в своей схеме базы, а сетка расписания стала виджетом ядра.
Бюджеты: обязательные счета, суммы со знаком, окно платежа, overhead, режимы коррекции, журнал и прогноз счётаСуммы плана и факта теперь несут знак (+ приход, − расход) и символ валюты везде, поэтому в одном бюджете уживаются и доходы, и траты — например, кредит. У каждого фактического платежа обязателен счёт: кнопка ₊ в дереве открывает окно платежа, где уже подставлены остаток строки, дата повторения и счёт статьи. У каждого узла видны приход, расход и overhead (факт − план); план корректируется вручную, автоматически при перерасходе или запрещён к правке. Каждое изменение пишется в журнал с автором, а карточка счёта рисует фактический баланс и пунктирный прогноз по непроведённым платежам и неоплаченному плану.
Бюджеты: повторяющиеся платежи отдельными строками, факт в один клик и календари датПовторяющаяся статья бюджета теперь разворачивается в дереве в отдельные строки по датам — каждая со своим фактом и статусом, родительская строка остаётся итогом. Кнопка ₊ в строках-листьях создаёт фактический платёж на сумму плана с текущей датой, а все редактируемые поля дат в продукте получили нативный календарь в локали пользователя.
Повторяющиеся плановые платежи в бюджетах — с живым периодом отчётаСтатья бюджета теперь может повторяться еженедельно, ежемесячно, ежеквартально или ежегодно — с первой даты и необязательной датой окончания. Её план равен сумме, умноженной на число повторений в периоде, в дереве — метка ⟳. На карточке бюджета появились поля периода «с/по», мгновенно пересчитывающие план, факт и график — без перезагрузки и кнопки «применить». Статьи без даты окончания показываются за выбранный период (по умолчанию — текущий год), а поля повторения доступны и в REST API.
Безопасное удаление в бюджетах — с подтверждением и защитой зависимостейБюджеты, узлы плана и платежи теперь удаляются прямо из своих форм. Каждое удаление сначала спрашивает подтверждение, а движок отказывается удалять то, у чего остались зависимые записи: узел с подузлами или привязанными платежами, бюджет с непустым деревом. Запреты продублированы на уровне базы данных, поэтому REST API и прямой SQL подчиняются тому же правилу — а новый атрибут confirm доступен любой кнопке в дизайнере.
Портировано из унаследованной CRM: работы и услуги, гаражи автомобилей, права уровня контролов, картинки товараЧетыре модуля перенесены из унаследованной настольной CRM. Справочник работ и услуг: услуги продаются строками документа продажи, но склад не двигают. Гаражи автомобилей клиентов с подбором запчастей — подобранное в один клик превращается в черновик продажи. Права ролей теперь достают до отдельного контрола формы и колонки грида (скрыть или только чтение) и действуют на сервере. А карточка товара получила галерею картинок с загрузкой, порядком и главным фото.
Formata Bank: полноценное банковское АРМ на платформеНовое приложение-витрина доказывает, что движок — это не только CRM: рабочее место сотрудника банка с клиентами и KYC, счетами, картами, кассой и переводами (внутрибанковские, СБП, SWIFT), вкладами с ежедневным начислением процентов и полным кредитным конвейером — заявка, скоринг БКИ, одобрение и аннуитетный график. Каждая операция проходит антифрод-движок из 11 правил прямо в базе данных: рискованные транзакции замораживаются, карты блокируются, аналитики разбирают алерты в собственном мониторе, а комплаенс получает скрининг по санкционным спискам и журнал аудита. Виртуальные шлюзы — процессинг карт, курсы валют, кредитное бюро и платёжная сеть — наполняют демо живыми данными. Работает отдельным инстансом общего ядра, данные изолированы собственной схемой БД.
Новые значки во всём интерфейсеЗначки меню и форм полностью перерисованы: 89 фирменных duotone-иконок, а движок теперь сам подбирает осмысленный значок каждой форме — лиды, сделки, склад, бюджеты, процессы и админ-инструменты получили собственный визуальный язык. Эвристика работает по идентификатору формы, поэтому не зависит от языка интерфейса и покрывает все 14 локалей, а в дизайнере значок по-прежнему можно выбрать вручную.
Интерфейс теперь говорит на 14 языкахИнтерфейс продукта полностью локализован: английский, русский, немецкий, испанский, французский, итальянский, польский, португальский, турецкий, японский, корейский, китайский, арабский и фарси — те же 14 языков, что и у этого сайта. Переведены все строки форм и больше тысячи строк оболочки, арабский и фарси отображаются справа налево, а ядро C++ разрешает каждую надпись на сервере на языке конкретного запроса с откатом на английский там, где перевода нет.
Полностью двуязычный интерфейс: каждая форма на английском и русскомПродукт теперь говорит на двух языках от края до края. Все 154 формы — каждый заголовок, подпись, подсказка, колонка грида, опция списка и пункт меню, всего 867 ключей словаря — отображаются на языке пользователя через серверный словарь контента, а дизайнер, мониторинг и оболочка приложения добавляют ещё 580 локализованных строк. Переключите язык в сайдбаре — и всё, от оргструктуры до прайс-листов и раздела печатных форм, мгновенно меняется; редактор словаря позволяет уточнить любой перевод или добавить новые языки.
Инструменты строителя — в дизайнере, перенос настроек между средамиСервисные инструменты — тест-кейсы UI, наблюдение за медленными запросами, очередь фоновых задач, профиль скриптов и консоль интеграционного API — теперь живут там, где им место: в редакторе форм, а не в меню пользователей. А перенос настроек получил полноценный интерфейс: выберите формы, запросы и скрипты, скачайте их JSON-набором, примените на другой среде с предпросмотром отличий по полям — и откатите любой применённый набор одним нажатием.
BPM-дизайнер: пикеры полей, живая смена сущности, аналитикаПолный аудит модуля BPM вернул всё, что незаметно потерялось: сущность процесса снова попадает в дизайнер, поэтому пикеры полей, ролей и скриптов (включая шаг «Задать поле») наполняются сразу при выборе сущности — без сохранения и переоткрытия; список сущностей берётся из расширяемого реестра (включая задачи и таблицы, подключённые с ER-диаграммы). Снова работают синхронизация триггера со старт-узла, запуск процессов «при изменении» и аналитика с тепловой картой токенов, а весь BPM-контент включён в воспроизводимую цепочку установки и проверен девятью наборами тестов.
Прайс-листы: наценки по группам, периоды действия, смена ценниковПрайс-листы получили полную модель: группа «розничный/оптовый», период действия (бессрочный прайс по умолчанию и перекрывающие его датированные — ночной или на выходные) и наценки по группам товаров с наследованием по дереву групп. Генерация цен заполняет каждую карточку товара; пользователь с правом может править любую цену вручную, колонка Δ% показывает отклонение от расчётной цены по группе — ручные правки переживают пересчёт. Прайс копируется в один клик. При смене действующего прайса создаётся задача ответственному и печатаются именно изменившиеся ценники.
Отмена, клавиатура, читалки экранаУ добавления позиций появилась кнопка «Отменить»: одно нажатие убирает ровно те строки, что только что добавились, — по одноразовому серверному токену, действующему только для вас, поэтому клиент в принципе не может запускать произвольные скрипты. Гриды полностью управляются с клавиатуры (стрелки, пробел — отметка, Enter — действие), Esc закрывает только верхнее окно, фокус не покидает модальное окно и возвращается на место, а таблицы, окна и сообщения размечены для читалок экрана.
Поделиться одной записью, а не целой рольюВидимость строится по должностной иерархии — свои записи, свой отдел, своя организация, — а работа в неё не укладывается. Сделку ведёт один менеджер, а подключить к ней нужно юриста из другого отдела. Раньше выход был один: расширить роль, и человек начинал видеть лишнее навсегда. Теперь доступ выдаётся на конкретную запись, конкретному человеку или роли, на чтение или запись, при желании на срок. Выдача только добавляет доступ и никогда не отнимает — отнимает по-прежнему роль, чтобы вопрос «почему он это видел» разбирался в одном месте. Срок гасит доступ сам: временный доступ, который надо не забыть отозвать, не отзывается никогда. Пояснение, автор и время сохраняются — через полгода этот вопрос встаёт неизбежно.
Права по полям, которые администратор может задать самОклад видит только кадровик, себестоимость — только закупщик: правило задаётся один раз на колонку таблицы и действует всюду, где поле показывается или записывается — без скрипта на каждое поле и без забытой формы. Скрытое поле нельзя и записать: показ и запись закрыты одним правилом. Нет правила — поле доступно: правило описывает ограничение, а не разрешение, поэтому включение прав не закрывает систему разом. При нескольких ролях берётся самое широкое право — запрет должен быть решением, а не следствием случайного пересечения ролей.
Перенос настроек между средами — и обратноФормы, запросы, скрипты и расписание — это данные, поэтому отлаженное на стенде уезжает в рабочую систему одним набором: до применения видно, что появится и что изменится вплоть до поля, применяется всё одной транзакцией, а прежнее состояние сохраняется — вернуться можно точечно, не поднимая копию всей базы. Рабочие данные не переносятся никогда: у сред разная жизнь.
Номер обращения, который можно назватьКаждый запрос получает короткий код — без похожих друг на друга знаков, чтобы его можно было продиктовать по телефону. Он виден в сообщении об ошибке и в журнале службы, поэтому разговор с поддержкой начинается с «кода 7KMQ2XPD», а не с «вчера днём не сохранилось». Запросы к базе дольше порога складываются с текстом, длительностью и номером обращения — включая запросы из скриптов, где тяжёлое прячется чаще всего: выборка в цикле, запрос без индекса. По каждому скрипту видны вызовы, суммарное и худшее время, доля ошибок.
Очередь фоновых задачДолгая работа больше не держит окно. Рассылки, выгрузки в обмен, пересчёты отчётов уходят в очередь: ответ приходит сразу, а работа идёт своим ходом и переживает перезапуск службы. Сбой не теряется — задача повторяется с растущей паузой, поэтому недоступность внешней системы на три минуты не сжигает все попытки за три секунды. Исчерпав попытки, задача остаётся на виду с последней ошибкой, входными данными и временем каждой попытки; устранили причину — кнопка возвращает её в очередь. Если погиб сам исполнитель, задача вернётся в очередь, а не зависнет в состоянии «выполняется».
Первичные документы по странамОтгрузочные документы оформляются по правилам той страны, из которой идёт продажа: для России — ТОРГ-12, счёт-фактура и УПД, для США — коммерческий инвойс и упаковочный лист по таможенным требованиям, для Евросоюза — инвойс со всеми обязательными реквизитами директивы по НДС и товаросопроводительная накладная. Система предлагает только формы, применимые в стране документа, подставляет налоговые идентификаторы сторон, считает налог по строкам и по ставкам и печатает сумму прописью там, где это требуется.
Конструктор печатных формПользователь сам собирает печатные документы — накладные, ведомости, договоры — из полос и полей, без участия разработчика. Данные берутся только через ORM, необязательный Python-скрипт досчитывает то, чего нет в запросе, а предпросмотр показывает ровно то, что попадёт в PDF. Многостраничная печать умеет повтор шапки таблицы, подытоги по группам, нумерацию страниц, смену ориентации, QR-коды и штрихкоды; доступен архивный PDF/A.
Складской учёт: остатки, резерв, проведениеПолноценный складской модуль, перенесённый из унаследованной системы на C++Builder: склады, приход, перемещение между складами, списание, возврат и переоценка. Остаток ведётся в разрезе склада, ячейки, партии, состояния и закупочной цены и живёт в двух слоях — фактический остаток и резерв, поэтому доступное количество всегда равно остатку за вычетом уже отложенного. Проведение сверх доступного отклоняется с точными цифрами. Цены хранятся историей, с прайс-листами и наценками; отчёты — оборотная ведомость, резервы, позиции ниже минимума и журнал движений.
TinyORM — единственный путь к базе из скриптовPython-скрипты работают с данными через текучий конструктор запросов: значения передаются параметрами, имена таблиц и полей сверяются со схемой, изменение и удаление без условия запрещены, а чистый SQL можно отключить совсем. В дизайнере — подсветка синтаксиса и подсказки на лету по таблицам и их полям, прямо из схемы базы.
Начальные события BPM: все четыре типаПроцесс запускается по сигналу (создание, изменение — вплоть до конкретного поля и условия — или удаление записи), по таймеру (однократно на дату и время, периодически или по cron), вручную (общей кнопкой или из карточки записи, подхватывая её идентификатор) и по сообщению от другого процесса.
Уведомления в реальном времениИзменения долетают до открытых экранов сразу: сервер шлёт события, опираясь на уведомления от базы, поэтому запись, сохранённая коллегой, появляется без обновления страницы.
Enterprise-оргструктура в ядреВерсионная организационная модель на любую дату — прошлую или будущую: юрлица, дерево подразделений, штатные должности с планом FTE, грейдами и линиями подчинения, локации и ЦФО, назначения (основные и совмещения с долей FTE, административный и функциональный руководитель) и замещения. Считает штат план/факт/вакансии, цепочки руководителей и фактического адресата с учётом замещения, а реорганизацию можно запланировать будущей датой без потери истории. В дизайнере — вкладка «Оргструктура» с выбором даты.
Пермишены запросов и пользователи в ядреЗапросный SQL-слой теперь под пермишенами: у каждого именованного запроса — список ролей, который C++ ядро проверяет при каждом исполнении (пусто — всем, admin — всегда; fail-closed). В дизайнере появилась вкладка «Пользователи и роли»: создание, роли, деактивация, смена пароля — во всех продуктах. Пароли хранятся как bcrypt-хэши, легаси-учётки прозрачно перехэшируются при первом входе. Группы пользователей — статические или вычисляемые вашим SQL-запросом — тоже в ядре и управляются из дизайнера.
BPM и ER-диаграмма — в ядре платформыДвижок бизнес-процессов (визуальный дизайнер, согласования, таймеры, скрипты, триггеры на любые таблицы) и интерактивная ER-диаграмма модели данных теперь в ядре платформы: один идемпотентный пак ставит их в любую продуктовую БД, а в дизайнере форм появились встроенные вкладки «Процессы (BPM)» и «ER-диаграмма» — доступно в каждом продукте, от CRM до IDM.
Enterprise IAM: жизненный цикл от кадров и управление ADFormata IDM закрывает промышленное ТЗ по управлению доступом: 11 предустановленных отчётов ИБ с подпиской, пролонгация ролей при переводе с авто-отзывом, двухступенчатое согласование приёма внешних/ГПХ, пять стандартных ролей с разграничением интерфейса, полный маппинг атрибутов AD с распределением по OU и форматом Description, шаблоны писем жизненного цикла.
Коннектор Active DirectoryПодключение Formata IDM к Microsoft Active Directory по LDAP: синхронизация учётных записей в реестр, связывание с сотрудниками по email/UPN, чтение статуса (включён/отключён). Полный жизненный цикл — создание, включение/отключение, членство в группах и сброс пароля — по LDAPS.
Коннектор Microsoft ExchangeFormata IDM теперь заводит реальные почтовые ящики Exchange 2019 через remote PowerShell (pypsrp + Kerberos): при приёме ящик включается (основной SMTP, виден в адресной книге), при увольнении — скрывается из глобального списка адресов, снимается пересылка и очищаются правила входящих. Встроено в бизнес-процессы приёма/увольнения и проверено сквозным тестом на живом домене.
Интерактивная ER-диаграмма схемы данныхСхема базы в виде интерактивной ER-диаграммы: таблицы с ключами, связи по внешним ключам стрелками, поиск, перетаскивание и авто-раскладка. Правый клик по таблице — повесить BPM-триггер (с детекцией изменения поля); таблицы с триггерами помечены ⚡.
Управление доступом уровня IGAВ модуле управления идентичностью — риск-скоринг, компенсирующие меры к конфликтам полномочий (SoD), бизнес-роли с динамическим членством, IT Shop с доступом на срок и коннекторы к Microsoft Entra ID и Google Workspace. Теперь со взвешенным индексом риска и коннектором SAP SuccessFactors. Настраиваемые веса риска, согласование SoD-мер, коннекторы Google service-account и SCIM.
Полноценная почтаПодключите несколько ящиков (Gmail, Outlook, Яндекс, Mail.ru или любой IMAP/SMTP): приём, чтение, ответ, пересылка и отправка с вложениями — прямо в CRM, с привязкой к контактам.
Ссылки-якори на записиСкопируйте ссылку на задачу, документ или запись и вставьте в чат — коллеги откроют её в один клик, если у них есть доступ.
Встроенный мессенджерПрямые и групповые переписки сотрудников: доставка в реальном времени, статусы онлайн, непрочитанные и уведомления о пропущенных. Звонки — на подходе. Теперь с отметками о прочтении (✓✓). Сообщения можно редактировать (пометка «изменено»). Пересылка сообщений и вложения (файлы и картинки).
BPM-маршрутизация задач по командамПри смене статуса BPM назначает задачу на нужную группу и выбирает случайного участника — например, новая→менеджеры, к оплате→бухгалтерия, оплачено→руководитель.
Графики баланса счетов и читаемые таблицыУ каждого счёта — график баланса по датам и журнал движений, а деревья бюджета получили заголовки столбцов, выровненные суммы и чередование строк. Денежные потоки показываются со знаком +/− и цветом.
Бюджет: переводы, переоценка и авто-распределениеПереводы между счетами (с конвертацией по курсу), история курсов с переоценкой, авто-распределение одного платежа по узлам плана и экспорт бюджета в CSV.
Бюджеты план/фактДревовидные бюджеты: роллап план/факт, статус платежей, авто-коррекция и учёт по клиентам.
Проваливание между формамиПередавайте выбранное значение в другую форму и открывайте её окном — настраивается визуально в редакторе.
Встроенное UI-тестированиеЗаводите или записывайте тест-кейсы, прогоняйте их и проверяйте значения полей — без внешних инструментов.
Глубокая видимость строкОргструктура, иерархии позиций и доступ по каталогам — не только владелец и manager.
Умный Assignment ManagerМаршрутизация работы по навыкам, территориям, доступности и ёмкости со взвешенной балансировкой.
Интеграционный REST API v1Скоуп-ключи API, авто-OpenAPI и готовая поверхность для интеграций.
Предохранитель скриптовСбойные автоматизации авто-отключаются и показываются с полной диагностикой для восстановления в один клик.
Массовый импорт (EIM)Загрузка миллионов строк на ~50 тыс. строк/сек с резолвингом внешних ключей.
Апгрейд визуального BPMДорожки, live-heatmap, версионирование, параллельные ветки и эскалация.
Фильтрация таблицПофакторные фильтры с операторами во всех гридах.