LINUX.ORG.RU

lsFusion 6.0 — открытая и бесплатная платформа для разработки бизнес-приложений

 ,


3

1

Вышла новая версия lsFusion 6.0 — открытой и бесплатной платформы для разработки бизнес-приложений. В ней сделан упор на Web UX и расширение возможностей для создания современных веб-приложений.

  • Интеграция с Bootstrap

    Возможность применять bootstrap-классы ко всем элементам интерфейса через атрибут class, предустановленные светлая/тёмная темы и набор дополнительных bootstrap-тем «из коробки».

  • Поддержка иконок

    Подключены Bootstrap Icons и FontAwesome, есть автоматический подбор иконок по ключевым словам, возможность вставлять их в строки через $M{…}.

  • Новые компоненты выбора свойств

    Поддержка списков, чекбоксов (в том числе групп) и радиокнопок.

  • Явное задание тегов и типов <input>

    Полная поддержка HTML-атрибутов tag='input' и inputType (date, datetime-local, time, month, color, range и др.), включая нестандартный year через подключаемый yearpicker.

  • Расширенные атрибуты свойств

    placeholder, pattern/regexp и сообщения об ошибке, tooltip, wrap/wrapWordBreak/collapse, гибкая настройка расположения и выравнивания заголовков и комментариев, произвольные CSS-классы и атрибуты.

  • Popup-контейнеры

    Контейнеры с popup=TRUE, загружающие содержимое по нажатию кнопки, плюс предопределённый блок POPUP в дизайне форм (иконка «гамбургер»).

  • Неактивные свойства и действия

    DISABLE/DISABLEIF для статической и динамической блокировки элементов с нативным использованием Bootstrap-классов.

  • Интерактивные действия через интеграционное API

    Эндпоинты exec/eval могут открывать формы и выполнять действия в уже загруженных вкладках или PWA-клиенте.

  • Браузерные API: Share, Notification, Push

    • Share API: автоматическое добавление «поделиться формой», генерация ссылок через EXTERNAL LSF/HTTP и вызов стандартного диалога шаринга.
    • Notification API: показ контекстных уведомлений с картинкой, кнопками и callback-действиями.
    • Push API: серверные push-уведомления, инициирующие действия или выводящие уведомления даже при неактивном клиенте.
  • Поддержка PWA

    Установка в систему, push-уведомления вне браузера, доступ к аппаратному API устройства.

  • Уровни сообщений (MESSAGE)

    Шесть уровней — LOG, INFO, WARN, DEFAULT, SUCCESS, ERROR — с записью в лог, выводом нотификаций и/или диалоговых окон в зависимости от уровня.

  • Улучшенный навигатор и компактный UI

    • Выплывающая верхняя панель навигатора (вертикальная или горизонтальная)
    • Tiny и Mini CSS-стили для максимально компактного отображения
    • Направленные («arrow») кнопки для визуализации процессов
  • WebSocket-модуль

    Создание/удаление сокетов, обработка событий открытия/закрытия, приёма текстовых и бинарных сообщений, форма для управления соединениями.

  • Расширения языка платформы

    • Табличные значения в FORMULA (unnest, JSON-функции, подключение внешних таблиц)
    • Оператор VALUE для доступа к текущему значению объекта формы вне формы
    • Новые события на форме: CHANGE BEFORE/CHANGE AFTER, ON COLLAPSE/ON EXPAND
    • Явное задание имён таблиц, индексов и материализованных свойств в БД
    • Динамическое определение причины события через eventSource()
    • Кастомные агрегации в GROUP/PARTITION (mode, percentile_cont, lag, rank и др.)
    • Действия в блоке LIST оператора INPUT (список может заполняться результатами действий)
    • Управление порядками и фильтрами (чтение/запись текущих ORDER/FILTERGROUP/FILTER)
    • Raw-литералы (префикс r/R) для путей, регулярных выражений и других «сырых» строк
    • Опции TOP/OFFSET во многих операторах (GROUP, PARTITION, FOR, EXPORT, JSON, PRINT)

>>> Подробности



Проверено: hobbit ()
Последнее исправление: ilinsky (всего исправлений: 4)
Ответ на: комментарий от CrushBy

1С, вообще-то, давным-давно работает под линуксом, так что про линукс – не аргумент.

Вот насчёт коммерческих продуктов вопрос интересный. Готовое решение — это почти всегда коммерческий продукт (за исключением чего-то ну совсем-совсем наистандартнейшего), поэтому вопрос «Смогут ли поставщики готовых решений эту свободную платформу как-то монетизировать» крайне актуален.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Вот насчёт коммерческих продуктов вопрос интересный. Готовое решение — это почти всегда коммерческий продукт (за исключением чего-то ну совсем-совсем наистандартнейшего), поэтому вопрос «Смогут ли поставщики готовых решений эту свободную платформу как-то монетизировать» крайне актуален.

На их ERP работает куча торговых сетей в РБ, так что вопрос монетизации там определенно решен.

AleksK ★★★
()
Ответ на: комментарий от Desmond_Hume

Давно удивляло, почему у 1С нет конкурентов, особенно тех, которые будут ориентированы не только на шиндошс

С разморозкой. У 1С теперь уже даже учебную версию можно под линукс скачать, это чуть ли не последний бастион был. А так-то под линуксом они уже много лет работают.

Вот то, что они проприетарные, а сабж свободный и открытый – это действительно ключевое отличие.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Тут ещё одна плохая новость для всех любителей подшабашить, вроде меня.

https://wonderland.v8.1c.ru/blog/izmeneniya-v-mekhanizme-litsenzirovaniya-monitoring-litsenziy/

Всё, кончились хиханьки-хаханьки, гаечки затягивают. 8.5 конечно пока ещё бетка, но как только БСП переведут на новый интерфейс то все типовые конфы резко перепрыгнут на 8.5

AleksK ★★★
()
Ответ на: комментарий от AleksK

Появились новые конструкции для обработки исключений (Исключение, Попробовать). Это позволило сделать обработку ошибок более структурированной и удобной.

Попытка/Исключение была ещё в 7.7. «Попробовать» в 1С не существует.

Версия 8.3.3 (весна 2013):

Июнь это весна?

Начали активно развиваться механизмы многопоточности и асинхронного исполнения операций («фоновые задания», «асинхронные запросы»).

В 8.3.3 без изменений. Фоновые задания были намного раньше (вроде с 8.1), асинхронные запросы позже (в 8.3.18).

Были введены новые типы объектов для реализации межсерверного взаимодействия и передачи данных по сетям.

Это вообще про что? Появился SSL в почтовых протоколах. Но это не новый тип объекта. Вот что на самом деле: https://downloads.v8.1c.ru/content/Platform/8_3_3_641/1cv8upd.htm#4288e499-1835-11e2-b237-e61f135f174b или вкратце https://programmist1s.ru/novoe-v-platforme-1s-8-3-3/

И так почти по всем строкам этого наркомана.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от AleksK

В смысле? Вот есть документ Табель. В интерфейсе подсистемы Кадры и Зарплата. Табель в подсистеме Зарплата. Клиент говорит, что у них табель заполняет кадровый отдел и просит перенести. Мне надо удалить Табель из подсистемы Зарплата и добавить в Кадры.

Даст расширение удалить из состава?

monk ★★★★★
()
Ответ на: комментарий от AleksK

Это не гаечки, HASP умер ещё в 2022 (видимо импортировался). А это они на существующих программных лицензиях возвращают возможность использовать одну лицензию с сервера лицензий на пользователя, а не одну на каждое соединение с базой как сейчас.

monk ★★★★★
()
Ответ на: комментарий от monk

Я же в примере указал какой создаваемый класс от какого наследуется. Можно делать реквизит с типом ДокументСсылка и работать с любыми документами в этом реквизите.

Да, я ошибся не уточнил, что наследование есть, но наследовать можно ровно 5 или сколько там классов (Документ, Справочник и т.п.)

Что касается всего остального. Я знаю как это делается в 1С. Собственно точно также как и в других языках в которых нет наследования (условном JavaScript прости господи, но благо это язык прикладного фронта в основном, и там ООП не так критичен).

NitroJunkie
() автор топика
Ответ на: комментарий от monk

Вот тут да, есть нюанс, что в PostgreSQL это очень плохо поддерживается и поэтому на практике конечно делают просто STRING, а потом в конкретной логике приводят просто x(a) = NUMERIC(value(a)) * 10.

Но смысла лезть в бухгалтерию особого нет. Это фискальный учет, где по определению все должно быть плюс минус все одинаково (а сила lsFusion как раз в кастомизации). Плюс даже это очень консервативная область, даже если сделать супер-пупер-решение переубедить бухгалтеров задача с большим количеством звездочек. Туда даже SAP не пытается лезть с огромными ресурсами.

NitroJunkie
() автор топика
Ответ на: комментарий от monk

Попытка/Исключение была ещё в 7.7. «Попробовать» в 1С не существует.

Механизма исключений в 7.7 точно не было. Так что Попытка в 7.7 и 8.3 это немного разные Попытки

Июнь это весна?

Если на улице +10, то да )

Фоновые задания были намного раньше (вроде с 8.1), асинхронные запросы позже (в 8.3.18).

Не путай фоновые и регламентные задания. Это немного разные вещи.

Он выдал конечно сумбурно, в чем-то набуровил, но в целом хорошо показал что в рамках одной платформы количество изменений на несколько мажорных версий.

AleksK ★★★
()
Ответ на: комментарий от monk

Это не гаечки, HASP умер ещё в 2022 (видимо импортировался).

А через что сейчас по твоему работает основной рабочий метод взлома лицензий? Его и убирают, чтобы отрезать всех пользователей старых методов взлома.

AleksK ★★★
()
Ответ на: комментарий от monk

Кстати, в lsFusion вообще субконто сделать можно?

Да, собственно, например, именно для этого и используется наследование (и ООП). Выглядеть в lsFusion это будет приблизительно так :

CLASS SubAccount 'Субконто';
id 'Код' = ABSTRACT STRING (SubAccount);
name 'Название' = ABSTRACT STRING (SubAccount);

Объявляется абстрактный класс, и везде ставятся ссылки именно на него (и используются его поля / свойства). Например, объявить субконто дебета и кредита :

debitSubAccount = DATA SubAccount (Ledger);
creditSubAccount = DATA SubAccount (Ledger);

А затем можно любой класс «донаследовать» (да в lsFusion можно наследование добавлять «по ходу», а не только при объявлении от Субконто, и его можно будет использовать в качестве субконто. Например :

EXTEND CLASS Supplier : SubAccount;
id (Supplier s) += 'SP' + id(s); // типа override
name (Supplier s) += 'Поставщик ' + id(s); // типа override
CrushBy
()
Ответ на: комментарий от hobbit

Смогут ли поставщики готовых решений эту свободную платформу как-то монетизировать

Так лицензия платформы - LGPL. Любой поставщик готовых решений может их продавать (LGPL разрешает). И да, разработка самой платформы финансируется за счет коммерческих готовых решений на ее основе (а также на разработке под заказ с нуля).

И есть другие сторонние компании/люди, которые разрабатывают на ее основе свои решения и продают.

CrushBy
()
Ответ на: комментарий от CrushBy

Выглядит круто, но язык необычный и сложен в понимании, не сравнить с топорным 1С. Советую потратить деньги на документацию, сейчас там мало что можно понять. Ну и больше примеров для самых маленьких, а также объяснения для опытных программистов, чтобы можно было разобраться как оно работает внутри (какие таблицы создаёт, как это памится на SQL). Язык уникальный конечно, даже не знаю с чем сравнить.

Nohack
()
Ответ на: комментарий от Nohack

Язык уникальный конечно, даже не знаю с чем сравнить.

Для меня на первый взгляд, это выглядит как смесь FoxPro, COBOL, Prolog. Смотрится очень архаично, но декларативные возможности исправляют ситуацию, но для меня работа с такими невыразительными конструкциями для общего программирования это кошмар.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от NitroJunkie

Вот тут да, есть нюанс, что в PostgreSQL это очень плохо поддерживается и поэтому на практике конечно делают просто STRING, а потом в конкретной логике приводят просто x(a) = NUMERIC(value(a)) * 10.

Ни в коем случае. А объединять потом как? В PostgreSQL это делается колонками «тип»+«ссылка». Если кроме ссылок на объекты могут быть числа и строки, то ещё пара колонок.

Это фискальный учет, где по определению все должно быть плюс минус все одинаково (а сила lsFusion как раз в кастомизации).

Хорошо. А как сделать аналог

ВЫБРАТЬ СУММА(Регистр.Сумма), Номенклатура
ИЗ Регистр
ГДЕ Номенклатура.Производитель.Страна = &КНР
СГРУППИРОВАТЬ ПО Номенклатура

?

В смысле, запрос с отбором по свойству свойства реквизита.

monk ★★★★★
()
Ответ на: комментарий от AleksK

Механизма исключений в 7.7 точно не было. Так что Попытка в 7.7 и 8.3 это немного разные Попытки

В смысле? Работало абсолютно также. https://www.about1c.ru/v77/language-reference/operators/try

Не путай фоновые и регламентные задания. Это немного разные вещи.

https://infostart.ru/1c/tools/70415/

И регламентные задания в 8.1 тоже были.

monk ★★★★★
()
Ответ на: комментарий от CrushBy

в lsFusion можно наследование добавлять «по ходу»

EXTEND CLASS Supplier : SubAccount;

Благодарю! Тогда очень хорошо.

monk ★★★★★
()
Ответ на: комментарий от AleksK

А через что сейчас по твоему работает основной рабочий метод взлома лицензий? Его и убирают, чтобы отрезать всех пользователей старых методов взлома.

dll патчат. Старые методы взлома вроде не работают с тех пор, как платформа начала искать их наличие в системе: https://dzen.ru/a/XirCfkM-zACySL84

monk ★★★★★
()
Ответ на: комментарий от monk

А объединять потом как

Не совсем понял. Объединять что? Строки то как раз везде работают как строки. Ну а cast’ы можно CASE’ами делать например

CASE 
    WHEN a IS Car THEN NUMERIC(x(a))
    WHEN a IS Truch THEN DATE(x(a))
...

Хорошо. А как сделать аналог

ВЫБРАТЬ СУММА(Регистр.Сумма), Номенклатура ИЗ Регистр ГДЕ Номенклатура.Производитель.Страна = &КНР СГРУППИРОВАТЬ ПО Номенклатура ?

В функциональном стиле:

Сумма(Номенклатура н, Страна с) = GROUP SUM Сумма(Регистр р) IF Страна(Производитель(н)) = с AND Номенклатура(р) = н;

Или в SQL стиле:

Сумма = GROUP SUM Сумма(Регистр р) BY Номенклатура(р), Страна(Производитель(Номенклатура(p)));

Хотя тут у вас пример странный, вы фильтруете по группировке. Или я что-то не так понял? То есть логичнее просто сделать:

Сумма = GROUP SUM Сумма(Регистр р) BY Номенклатура(р);

А потом где надо обращаться

Сумма(ном) IF Страна(Производитель(ном)) = стр

lsFusion умеет сам в предикейт push down и везде где надо все сам протолкнет.

NitroJunkie
() автор топика
Последнее исправление: NitroJunkie (всего исправлений: 2)
Ответ на: комментарий от MOPKOBKA

Вообще странно, что в ассоциации SQL на ум не приходит. Вроде самая очевидная аналогия. Ну или может ABAP в SAP.

Хотя да, у всех этих языков есть ареал архаичности, на самом деле прежде всего из-за больших букв, но тут просто беда что очень много ключевых слов типа sum, и пришлось бы либо дико выворачивать лексер, либо запрещать много базовых слов в идентификаторах :(

NitroJunkie
() автор топика
Ответ на: комментарий от Nohack

Советую потратить деньги на документацию, сейчас там мало что можно понять.

Сейчас да, документация больше похожа на спецификацию, чем обучающий материал.

Ну и больше примеров для самых маленьких

Да, примеров немного, но все-таки там они есть и разбиты даже по категориям : https://docs.lsfusion.org/ru/How-to/

В целом, сейчас, наверное, уже все-таки перспективнее не документацию делать, а AI бот (как выше писалось), который просто будет отвечать как делается то/это. В этом направлении и двигаемся в первую очередь.

разобраться как оно работает внутри (какие таблицы создаёт, как это памится на SQL)

Да, алгоритм формирования SQL сложный и описать его не так просто. Да и непонятно зачем. Совсем опытные классические программисты писать на нем все равно не будут (это фактически low-code и другой уровень). А большинству пофиг, что там под капотом.

В целом общее описание того, как это работает вот тут : https://habr.com/ru/companies/lsfusion/articles/707286/

CrushBy
()
Ответ на: комментарий от NitroJunkie

Не совсем понял. Объединять что?

SELECT 
  ...
  FROM Registry
  LEFT JOIN Product ON Registry.Subcount1Type = &ProductType
    AND Registry.Subcount1Value = Product.Id
  LEFT JOIN Clients ON Registry.Subcount1Type = &ClientsType
    AND Registry.Subcount1Value = Clients.Id
  ...

lsFusion умеет сам в предикейт push down и везде где надо все сам протолкнет.

Круто. Надо найти время сварганить нагрузочный тест…

В 1С традиционно делается вручную деление на стадии: вытащить все нужные данные из БД, обработать в памяти сервера 1С, записать новые данные в БД.

Причём почти всегда надо получить данные из БД, обработать, на основе обработанного получить ещё часть данных из БД.

А тут какая-то магия.

monk ★★★★★
()
Ответ на: комментарий от monk

Раньше backbas, сейчас techsys и inet.

Только если ты не в курсе, там ещё создается программная лицензия которая и дает запускать платформу. А backbas уже давно на винде зашифрован и расшифровывается в память при запуске 1С, на линуксе он открыто лежит в папке, что дает возможность применять на него старый unipatch. Но с удалением из платформы старого менеджера лицензий все эти способы оказываются в пролете. А будут ли новые это большой вопрос.

AleksK ★★★
()
Ответ на: комментарий от monk
SELECT 
  ...
  FROM Registry
  LEFT JOIN Product ON Registry.Subcount1Type = &ProductType
    AND Registry.Subcount1Value = Product.Id
  LEFT JOIN Clients ON Registry.Subcount1Type = &ClientsType
    AND Registry.Subcount1Value = Clients.Id
  ...

Ну это как раз странный пример. Потому в PostgreSQL (и lsFusion) проблема не в классах, а в типах, то есть когда у вас одно поле скажем строка, дата или объект.

В данном случае, можно просто поле Subcount1Value абстрактного класса Object сделать. И в lsFusion тогда будут просто разные свойства.

// тут возможно для resolving'а надо будет или cast (то есть Subcount1Value(r) AS Client) или явный класс указать (то есть phone[Client](Subcount1Value(r))), если у вас много свойств phone в данном namespace

clientPhone(r) = IF Subcount1Type(r) = Type.Client THEN phone(Subcount1Value(r)) 

productBarcode(r) = IF Subcount1Type(r) = Type.Product THEN barcode(Subcount1Value(r)) // аналогично верхнему

А дальше если вы их используете вместе платформа сама скомпилирует их в что-то типа как у вас, скажем если будет так на lsFusion:

EXPORT FROM clientPhone(Registry r), productBarcode(Registry r);
NitroJunkie
() автор топика
Последнее исправление: NitroJunkie (всего исправлений: 3)
Ответ на: комментарий от NitroJunkie

Ну просто чаще всего опенсорс это просто повторение коммерческого продукта

Нет. Дальше даже не читал.

Gonzo ★★★★★
()
Ответ на: комментарий от monk

Ещё вопрос. Как из IsFusion вызвать что-то на другом языке? Только через EXTERNAL HTTP?

Java-классы можно свои подключать и «нативно» использовать. Соответственно, дальше из Java уже можно и другое пробовать (правда непонятно зачем) : https://docs.lsfusion.org/ru/How-to_INTERNAL/

CrushBy
()
Ответ на: комментарий от monk

Ещё вопрос. Как из lsFusion вызвать что-то на другом языке? Только через EXTERNAL HTTP?

Есть три варианта.

  • Для Java - INTERNAL JAVA.

https://docs.lsfusion.org/ru/How-to_INTERNAL/

  • Для SQL - FORMULA + INTERNAL DB + CUSTOM в операторах GROUP / PARTITION

https://docs.lsfusion.org/ru/How-to_FORMULA/

https://habr.com/ru/companies/lsfusion/articles/903532/#tables

https://habr.com/ru/companies/lsfusion/articles/862418/#components_customization

https://github.com/lsfusion/platform/issues/1182

  • Для JavaScript - INTERNAL CLIENT + CUSTOM в представлениях на форме

https://habr.com/ru/companies/lsfusion/articles/862418/#components_customization

NitroJunkie
() автор топика
Последнее исправление: NitroJunkie (всего исправлений: 5)
Ответ на: комментарий от AleksK

Он выдал конечно сумбурно, в чем-то набуровил, но в целом хорошо показал что в рамках одной платформы количество изменений на несколько мажорных версий.

Главное, чтоб зарплату не начисляли по принципу «рассчитали сумбурно, где-то что-то напутали, но в целом какие-то деньги кому-то выплатили». А то у меня с этими современными тенденциями в ИТ есть по этому поводу опасения.

ugoday ★★★★★
()
Ответ на: комментарий от monk

Почти во всех программах на Qt форму описывают программно.

Они всегда описываются программно. Но это не значит что ты код в ручную набираешь. Сначала создают в дизайнере ui файл, а потом транслируют его через утилиту uic в cpp.

сложный интерфейс даже в 1С делают полностью программно через Элементы.Добавить. Часто ещё и через яваскрипт и холст в ПолеHTMLДокумента.

Это из за неоптимизируемости редактора форм, но он там хотя бы есть в отличие от сабжа.

Rodegast ★★★★★
()
Ответ на: комментарий от NitroJunkie

В данном случае, можно просто поле Subcount1Value абстрактного класса Object сделать. И в lsFusion тогда будут просто разные свойства.

Совсем любой плохо. Но выше я ответ получил, что в IsFusion можно от нового класса отнаследовать пачку существующих. Так что идеальное решение есть.

Я писал, что если пытаться Object представить строкой, то будет не очень хорошо.

monk ★★★★★
()
Ответ на: комментарий от NitroJunkie

Для Java - INTERNAL JAVA.

Благодарю! Именно это искал. Тогда действительно система общего назначения.

monk ★★★★★
()
Ответ на: комментарий от monk

ДокументОбъект.ПриходныйОрдер наследуется от ДокументОбъект

Это не полноценное наследование. Я не могу наследовать один документ от другого, по этому документ нельзя считать классом.

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Они всегда описываются программно. Но это не значит что ты код в ручную набираешь. Сначала создают в дизайнере ui файл, а потом транслируют его через утилиту uic в cpp.

Такое можно для любого языка сделать. Но не факт, что надо.

Это из за неоптимизируемости редактора форм, но он там хотя бы есть в отличие от сабжа.

Нет. Это из-за того, что если тебе надо сделать дюжину документов с общей функциональностью, то через редактор заколебёшься копипастить нужные элементы (печать, ЭДО, подписи, статусы, ответственных, …). Причём копипастить придётся каждый раз, как одна из этих подсистем поменяется (добавили действие в ЭДО, пошёл 100500 документов дорисовывать). А программно один раз написал и вызываешь процедуру с параметрами. Если поменялось, то эту одну процедуру дописал.

monk ★★★★★
()
Ответ на: комментарий от Rodegast

Это не полноценное наследование.

А больше обычно и не надо.

monk ★★★★★
()
Ответ на: комментарий от AleksK

1С в большей мере объектная система, но понятие класса в ней существует и используется: https://курсы-по-1с.рф/articles...

Класс в этой статье скорее используется как метафора. Ты дай ссылку на официальную документацию в которой на уровне языка описаны классы, тогда это будет серьёзно.

А если почитать изменения в самой платформе. То там её уже не один раз по новой переписали за время существования.

Платформа меняется, но в этих изменениях ничего революционного нету.

Rodegast ★★★★★
()
Ответ на: комментарий от monk

Такое можно для любого языка сделать. Но не факт, что надо.

Для других языков тоже есть например для python-а есть утилиты py-uic / pyside6-uic

через редактор заколебёшься копипастить нужные элементы (печать, ЭДО, подписи, статусы, ответственных, …). Причём копипастить придётся каждый раз, как одна из этих подсистем поменяется (добавили действие в ЭДО, пошёл 100500 документов дорисовывать).

А вот это как раз следствие отсутствия ООП :)

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Для других языков тоже есть например для python-а есть утилиты py-uic / pyside6-uic

Это опять Qt. Покажи мне uic для Tk или Nuklear, например.

А вот это как раз следствие отсутствия ООП :)

Как наличие ООП в Qt спасёт тебя в такой ситуации? Вид форм научились наследовать?

monk ★★★★★
()
Ответ на: комментарий от monk

Тот же Glade давно был, но практически не использовался.

monk ★★★★★
()
Ответ на: комментарий от Rodegast

Платформа меняется, но в этих изменениях ничего революционного нету.

Революционность субъективна. Так в любом языке можно считать, что ничего революционного нету за время его развития. Хоть лисп взять с 1956 по 2025, хоть Си++ с 1998 по 2025.

monk ★★★★★
()
Ответ на: комментарий от monk

Это опять Qt. Покажи мне uic для Tk или Nuklear, например.

Ты же хотел языки, а не тулкиты :)

Как наличие ООП в Qt спасёт тебя в такой ситуации? Вид форм научились наследовать?

Не забывай что форма преобразуется в обычный код. По этому в место копипасты одной большой формы я могу сделать несколько маленьких и потом компоновать их них большие формы.

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Класс в этой статье скорее используется как метафора. Ты дай ссылку на официальную документацию в которой на уровне языка описаны классы, тогда это будет серьёзно.

Это уже демагогия.

Платформа меняется, но в этих изменениях ничего революционного нету.

Революционные изменения в рамках одной версии? И что по твоему революционные изменения?

AleksK ★★★
()
Ответ на: комментарий от monk

Революционность субъективна.

Субъективна эвалюционность, а революционность всегда объективна. Например она ведёт к смене мажорной версии. Например смена 8.1 на 8.2 была обусловлена появлением управляемых форм. Это и есть пример революционных изменений.

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Имхо, вы обсуждаете вообще не то. Не вы конкретно, а вы - в смысле коллективно.

Чтобы стать конкурентом 1С нужно иметь как минимум две вещи и ООП в них не входит:

  1. Развитый и быстрый поиск объектов в списках как в 1С. Это краеугольный камень автоматизации работы.

  2. Наличие готовых и поддерживаемых конфигураций для реальных задач бизнеса. Голая платформа никому не нужна.

Все остальное, буквально, детали реализации не играющие существенной роли.

Obezyan
()
Ответ на: комментарий от AleksK

Это уже демагогия.

Статья с ХЗ каких курсов не может являться достоверным источником информации. Для меня это очевидно.

И что по твоему революционные изменения?

См. моё сообщение выше.

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Например она ведёт к смене мажорной версии. Например смена 8.1 на 8.2 была обусловлена появлением управляемых форм. Это и есть пример революционных изменений.

А смена 8.2 на 8.3? Что там революционного?

monk ★★★★★
()
Ответ на: комментарий от Rodegast

Не забывай что форма преобразуется в обычный код. По этому в место копипасты одной большой формы я могу сделать несколько маленьких и потом компоновать их них большие формы.

То есть, если для языка форм lsFusion сделать графический интерфейс, то будет лучше, чем в 1С? Можешь помощь сообществу.

monk ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.