Но при этом на хабре куча статей, где на 1С делали именно с нуля кастомизированное решение собственными силами. Даже в этой статье автор указывает, что многие решения у них - это фактически custom made, а не коробочный 1С ERP. И для таких решений гораздо лучше подходит lsFusion. И поддержка платформы гораздо лучше, чем у 1С. Попробуйте достучаться до разработчиков 1С. А у нас просят что-то доработать в открытом slack-канале, или telegram-канале - мы бывает в тот же день добавляем (в master-ветку конечно же).
В той статье, на которую я дал ссылку, именно архитектурные проблемы в платформе 1С. Вопрос же не в багах, а в неправильно заложенном фундаменте, а точнее большой накопленный технический долг. Баги то понятно, что везде есть. А вот архитектурные проблемы можно решить только полностью снеся все заново и построив с нуля. Что и сделано в lsFusion.
Ну разработчики 1С должны же знать, что есть гораздо лучше альтернатива, которая при этом открытая и бесплатная. А то не все еще знают и думают, что нужно мириться со всеми косяками 1С.
Так вот сейчас есть ЕДТ на базе эклипса, которым, правда, ограниченно можно пользоваться - он тормозит просто пипец как. У меня разработка идет в гите, кстати. ЕДТ просто юзаю. для коммитов, разрабатываю в конфигураторе. С постгресом стало все достаточно неплохо.
Ну я же говорил. Не скучно ведь. Работать сразу в двух IDE, разбираться с косяками PostgreSQL и много чего веселого.
А коммитете в гит, как я понимаю, xml-файлы ? А как вы их потом мерджите и конфликты решаете ? Вот так вручную читаете и сливаете xml-файлы ? Удобно ?
И, честно говоря, в последнее время встречаюсь с низким уровнем разработчиков на других языках в компаниях-партнерах.
Но это явно не из-за того, что 1С как платформа сильно выросла. Это возможно потому, что много разработчиков с высоким уровнем куда-то по какой-то непонятной причине уехали... А вот 1Совцам особо некуда уезжать. Поэтому и изменился средний уровень.
Да, бывают и сложные случаи. Но тем не менее, очень много случаев, когда и не надо создавать. Например, просто импорт заказа покупателя, где есть колонки код и количество. Или тех же прайс-листов поставщика, где есть уже штрих-коды и цены, и цель загрузить только те товары, что уже есть.
А в 1С разве нельзя CTRL+C / CTRL+V из Excel (то есть из clipboard) прямо в любую табличную часть, как в lsFusion ? Тогда пользователь, при желании, сможет сам подгонять любой excel-файл под колонки в таблице и загружать без помощи программиста 1С.
А если пользователь захочет использовать эти данные в ходе оперативной работы ? Например, во время заказа при подборе товаров видеть, сколько заказывалось и продавалось в тот же период прошлого года ? Или просто посмотреть динамику изменения цен по товару за год ? Ему постоянно переключаться между BI и оперативным контуром ?
Судя по тому (статьи, комментарии от представителей), что читал на Хабре, isFusion очень токсичная компания. Всё что читал, выглядит голословным, без конкретики.
Во-первых lsFusion - это не компания, а просто open-source продукт. Open-source продукт - токсичный, а 1С со своим запретом на обращение извне к БД - нет. Ну ок. Примеров там масса и в каждой статье есть.
"Ааа как такое можно писать", приводится запрос в 1С, "да если бы я сказал своим так писать, то мне покрутили бы пальцем у виска".
Это стандартная реакция современного программиста с современным стэком разработки, который увидел 1С.
Было бы интересно посмотреть на "to-do" (1С vs isFusion), например программа для библиотеки. С видео, скоростью разработки и пр..
В документации есть много how-to, а также два простых законченных приложения. Плюс есть даже видео с тем, как идет процесс разработки.
Но как бы она мне не нравилась, по скорости разработки бизнес приложений, ничего лучше не видел (с некоторыми оговорками). Считаю, что она хороша для мелкого, в лучшем случае для среднего бизнеса и желательно не типовые конфигурации.
Да, на 1С писать значительно быстрее, чем на классических средствах разработки. Но lsFusion значительно более высокоуровневая платформа и на ней писать еще быстрее именно сложные приложения. А для простых CRUD большинство современенных nocode/lowcode платформ подходят лучше, чем на 1С.
Каким образом вы ограничите адекватно запросы в сервер БД только чтением?
Средствами СУБД создать пользователя, которому дать права только на чтение. Мы так миллион раз делали.
Учтём что у пользователя, под которым работает исходное приложение есть полный доступ и данные этого пользователя есть у разработчика.
Не путайте разработчика приложения и разработчика внешнего (BI системы, например). Разработчик приложения и без доступа к БД сможет все поломать. А разработчик BI со своими правами ничего не сделает.
Да, гнать через сервер приложений. Потому что логика система далеко не такая, как она лежит в таблицах БД. И какие-то данные можно отдать только после преобразования сервером БД.
Ну только это создаст охрененный оверхед как по памяти, так и по CPU. И с большой вероятностью еще может и не пролезть, если будет большой блок. За этим придется постоянно следить.
Разработчику 1С в общем случае НЕНУЖНО читать запрос сервера БД.
Может разработчик 1С сам будет определять, что ему нужно или нет ? Вот, например, автор читает запрос 1С, а Вы говорите, что ему это не нужно.
Приведите конкретные примеры, когда эта функциональность нужна при автоматизации бизнес-приложения.
Вы спрашиваете зачем нужен полиморфизм в бизнес-приложениях ? Да миллион случаев на практике бывает у нас. Например, вы определяете в базовой логике свойство (или функцию, чтобы было понятнее) "цена" (пусть будет управленческая) по sku, складу и дате. Условно, price (Sku, Stock, DATE). Затем используете ее везде в логике (например, при печати ценников, формировании отчетов, подставляете в документы и т.д.). Но вам без разницы, как она рассчитывается.
При этом можно в lsFusion способ ее расчета можно подменить в конкретной логике как угодно (например, брать последнюю из какого-то документа или с учетом акций, ввести дополнительные условия или еще как угодно). Но ничего, что ее использует изменять не придется, а платформа сама перестроит все запросы под новую логику. В этом и есть суть полиморфизма - меняется реализация, но не меняется использование. И так везде.
И тут вы, со своей не известной системой, которую пытаетесь продавать вместо 1С
Никто ничего не продает. lsFusion - бесплатная платформа. Мы зарабатываем деньги на решениях на ее основе, и даем всем остальным желающим делать тоже самое.
Позволив кому-то стороннему напрямую трогать данные в БД - потерять гарантию в целостности.
Речь не о записи, а о чтении. Например, надо выгрузить в BI большие объемы данных. Проще всего это сделать прямым SQL запросом к БД. Там уже все оптимизировано под это. Или надо гнать все через сервер приложений ? А если там миллионы записей, как обычно бывает в случае с BI ?
Потому что в лицензионной политике 1С прямо запрещено лезть в таблицы в базе данных. Вся работа только средствами платформы.
Мое удивление было в том, почему 1С не сделает нормально. Отвечать на это, что у них такая лицензионная политика - это тоже самое, что "Жрите, что дают". Никаких недостатков подхода как в lsFusion я не вижу. А вот недостатки подхода в 1С - нечитабельный запрос. Зачем делать хуже, если можно сделать лучше. Впрочем у 1С других проблем выше крыши, так что это - это просто одна маленькая из них.
Я, как бы, понимаю, вы тут представитель упомянутого решения, усиленно топите за свой продукт. И пытаетесь выйти на рынок РФ, но не очень-то удается...
По моему профилю это нетрудно догадаться. Не пытаемся выйти, а уже давно вышли. Насчет удается или нет - не жалуемся. Уже любое упоминание о lsFusion тут же удаляется на том же infostart'е. Боятся... :)
В 1С есть понимание, какой запрос будет исполняться, более того, есть достаточно широкий опыт и рекомендации сообщества и вендора как строить эффективные запросы.
Что значит понимание ? Понимание как будет формироваться запрос есть везде и в 1С и в Hibernate, и в lsFusion. Но это не отменяет того факта, что СУБД может легко ошибиться с планом, и надо найти где, и потом как-то переделать логику или запрос, чтобы СУБД больше не ошибалось.
Мы всегда можем оптимизировать сам запрос, т.к. он прописан явно и продвинутый программист всегда знает, какие места могут вызвать тормоза при выполнении.
Ну так для того, чтобы оптимизировать запрос, то нужно определить где именно ошибка в плане. Для этого нужно читать план, а когда у вас там будет Fld526, то каждый раз смотреть, а что это именно было в исходном запросе (если запрос большой) скажем прямо не очень удобно.
Опять же, сам текст запроса прозрачен и читается разработчиком, т.к. он ТРАНСЛИРУЕТСЯ а не ГЕНЕРИРУЕТСЯ.
Кстати, это показывает качество платформы 1С, что там приходится фактически самому вручную писать запросы SQL. lsFusion значительно более высокоуровневая платформа, так как там запросы именно генерируются, и разработчику не надо этим заниматься.
В отношении же самой статьи - рекламная статья решения, которое неявно нарушает лицензионную политику 1С.
Вот это моя любимая часть 1С. А еще по лицензии, насколько я помню, запрещено напрямую обращаться с запросами к БД. Я б уже не стал использовать 1С с такими условиями лицензирования, так как это просто неуважение к разработчикам.
Ну вы же не вручную ее трогаете. Какая разница, что сама платформа просто переименует в какой-то момент поле. Никаких дополнительных действий это не потребует, зато будет гораздо проще при анализе запросов, так и при внешних запросах к БД вне платформы.
Что значит в некоторых случай посмотреть ? Вообще всегда надо смотреть, что это за объекты. Иначе в чем смысл оптимизации ? И смотреть надо не только таблицы, но и поля. Как по Fld384 понять, что это за поле ? Зачем все было так усложнять в 1С, мне не очень понятно. Что мешало сделать нормальные читабельные поля, как во всех в нормальных системах (про SAP промолчу - это тоже то еще ... мамонта).
Вот именно, что приходится постоянно изучать планы. У нас на lsFusion есть клиенты, в которых одновременно работают 2.500 тысяч пользователей, таблицы с миллиардами записей и базой в несколько террабайт. И все это на одном обычно двух-процессорном сервере. Там без оптимизации логики запросов не обойтись.
А зачем менять имена метаданных ? Можно какой-нибудь практический кейс ? То есть, например в lsFusion, изменилось у вас имя таблицы или "поля" - просто делается ALTER ... RENAME
Насколько вижу, lsFusion, это браузерное решение на js, что влечет за собой прямую работу с SQL, поэтому разработчикам и необходимо смотреть как реагирует SQL на их действия.
Принцип работы lsFusion особо не отличается от принципа 1С. Также автоматически генерируются запросы на основе логики, написанной на внутреннем языке. Основная разница в том, что в 1С как раз есть "псевдо-SQL", который транслируется в SQL очень близко, а в lsFusion все запросы генерируются автоматически.
Потому что нет прямой необходимости анализировать планы запросов. Это тонкий тюнинг конкретного запроса, в котором понятно, какие объекты запрашиваются.
А если у вас запрос на 4МБ ? Да и у автора на скрине как раз и есть лог длинных запросов. Как там сходу определить для чего эти запросы, и где они вообще вызываются, если все имена там Fld2983482 ?
Кроме того, вот допустим у вас сформировался запрос с неправильным планом ? Вот что Вы планируете делать в таком случае ? Единственный вариант, как и в lsFusion - это найти конкретное место и что-то поменять. В lsFusion для этого хотя бы есть механизм, который позволяет менять физическую структуру хранения, вообще без изменения логики. Но иногда приходится и логику менять. И все это требует понимания, где именно ошибся планировщик запроса.
Так в этом же и вопрос. То есть, вот вы видите запрос и читаете его EXPLAIN. И как там понимать, что такое _InfoRg50689X1 ? Это товары, контрагенты, документы или что ? Я должен каждый раз лазить куда-то в сторону, чтобы посмотреть, что это за таблица, и что в ней лежит. И также по каждому полю ? Вы это находите удобным ?
Но при этом на хабре куча статей, где на 1С делали именно с нуля кастомизированное решение собственными силами. Даже в этой статье автор указывает, что многие решения у них - это фактически custom made, а не коробочный 1С ERP. И для таких решений гораздо лучше подходит lsFusion. И поддержка платформы гораздо лучше, чем у 1С. Попробуйте достучаться до разработчиков 1С. А у нас просят что-то доработать в открытом slack-канале, или telegram-канале - мы бывает в тот же день добавляем (в master-ветку конечно же).
В той статье, на которую я дал ссылку, именно архитектурные проблемы в платформе 1С. Вопрос же не в багах, а в неправильно заложенном фундаменте, а точнее большой накопленный технический долг. Баги то понятно, что везде есть. А вот архитектурные проблемы можно решить только полностью снеся все заново и построив с нуля. Что и сделано в lsFusion.
Ну разработчики 1С должны же знать, что есть гораздо лучше альтернатива, которая при этом открытая и бесплатная. А то не все еще знают и думают, что нужно мириться со всеми косяками 1С.
Ну я же говорил. Не скучно ведь. Работать сразу в двух IDE, разбираться с косяками PostgreSQL и много чего веселого.
А коммитете в гит, как я понимаю, xml-файлы ? А как вы их потом мерджите и конфликты решаете ? Вот так вручную читаете и сливаете xml-файлы ? Удобно ?
Но это явно не из-за того, что 1С как платформа сильно выросла. Это возможно потому, что много разработчиков с высоким уровнем куда-то по какой-то непонятной причине уехали... А вот 1Совцам особо некуда уезжать. Поэтому и изменился средний уровень.
В 1С разработке не может быть скучно. Каждый день же нужно на столько граблей, заложенных в платформу 1С наступать. Вот в Java все скучно как-то...
Да, бывают и сложные случаи. Но тем не менее, очень много случаев, когда и не надо создавать. Например, просто импорт заказа покупателя, где есть колонки код и количество. Или тех же прайс-листов поставщика, где есть уже штрих-коды и цены, и цель загрузить только те товары, что уже есть.
А в 1С разве нельзя CTRL+C / CTRL+V из Excel (то есть из clipboard) прямо в любую табличную часть, как в lsFusion ? Тогда пользователь, при желании, сможет сам подгонять любой excel-файл под колонки в таблице и загружать без помощи программиста 1С.
А если пользователь захочет использовать эти данные в ходе оперативной работы ? Например, во время заказа при подборе товаров видеть, сколько заказывалось и продавалось в тот же период прошлого года ? Или просто посмотреть динамику изменения цен по товару за год ? Ему постоянно переключаться между BI и оперативным контуром ?
Во-первых lsFusion - это не компания, а просто open-source продукт. Open-source продукт - токсичный, а 1С со своим запретом на обращение извне к БД - нет. Ну ок. Примеров там масса и в каждой статье есть.
Это стандартная реакция современного программиста с современным стэком разработки, который увидел 1С.
В документации есть много how-to, а также два простых законченных приложения. Плюс есть даже видео с тем, как идет процесс разработки.
Да, на 1С писать значительно быстрее, чем на классических средствах разработки. Но lsFusion значительно более высокоуровневая платформа и на ней писать еще быстрее именно сложные приложения. А для простых CRUD большинство современенных nocode/lowcode платформ подходят лучше, чем на 1С.
Средствами СУБД создать пользователя, которому дать права только на чтение. Мы так миллион раз делали.
Не путайте разработчика приложения и разработчика внешнего (BI системы, например). Разработчик приложения и без доступа к БД сможет все поломать. А разработчик BI со своими правами ничего не сделает.
Ну только это создаст охрененный оверхед как по памяти, так и по CPU. И с большой вероятностью еще может и не пролезть, если будет большой блок. За этим придется постоянно следить.
Может разработчик 1С сам будет определять, что ему нужно или нет ? Вот, например, автор читает запрос 1С, а Вы говорите, что ему это не нужно.
Вы спрашиваете зачем нужен полиморфизм в бизнес-приложениях ? Да миллион случаев на практике бывает у нас. Например, вы определяете в базовой логике свойство (или функцию, чтобы было понятнее) "цена" (пусть будет управленческая) по sku, складу и дате. Условно, price (Sku, Stock, DATE). Затем используете ее везде в логике (например, при печати ценников, формировании отчетов, подставляете в документы и т.д.). Но вам без разницы, как она рассчитывается.
При этом можно в lsFusion способ ее расчета можно подменить в конкретной логике как угодно (например, брать последнюю из какого-то документа или с учетом акций, ввести дополнительные условия или еще как угодно). Но ничего, что ее использует изменять не придется, а платформа сама перестроит все запросы под новую логику. В этом и есть суть полиморфизма - меняется реализация, но не меняется использование. И так везде.
Никто ничего не продает. lsFusion - бесплатная платформа. Мы зарабатываем деньги на решениях на ее основе, и даем всем остальным желающим делать тоже самое.
Речь не о записи, а о чтении. Например, надо выгрузить в BI большие объемы данных. Проще всего это сделать прямым SQL запросом к БД. Там уже все оптимизировано под это. Или надо гнать все через сервер приложений ? А если там миллионы записей, как обычно бывает в случае с BI ?
Мое удивление было в том, почему 1С не сделает нормально. Отвечать на это, что у них такая лицензионная политика - это тоже самое, что "Жрите, что дают". Никаких недостатков подхода как в lsFusion я не вижу. А вот недостатки подхода в 1С - нечитабельный запрос. Зачем делать хуже, если можно сделать лучше. Впрочем у 1С других проблем выше крыши, так что это - это просто одна маленькая из них.
По моему профилю это нетрудно догадаться. Не пытаемся выйти, а уже давно вышли. Насчет удается или нет - не жалуемся. Уже любое упоминание о lsFusion тут же удаляется на том же infostart'е. Боятся... :)
Что значит понимание ? Понимание как будет формироваться запрос есть везде и в 1С и в Hibernate, и в lsFusion. Но это не отменяет того факта, что СУБД может легко ошибиться с планом, и надо найти где, и потом как-то переделать логику или запрос, чтобы СУБД больше не ошибалось.
Ну так для того, чтобы оптимизировать запрос, то нужно определить где именно ошибка в плане. Для этого нужно читать план, а когда у вас там будет Fld526, то каждый раз смотреть, а что это именно было в исходном запросе (если запрос большой) скажем прямо не очень удобно.
Кстати, это показывает качество платформы 1С, что там приходится фактически самому вручную писать запросы SQL. lsFusion значительно более высокоуровневая платформа, так как там запросы именно генерируются, и разработчику не надо этим заниматься.
Вот это моя любимая часть 1С. А еще по лицензии, насколько я помню, запрещено напрямую обращаться с запросами к БД. Я б уже не стал использовать 1С с такими условиями лицензирования, так как это просто неуважение к разработчикам.
Ну вы же не вручную ее трогаете. Какая разница, что сама платформа просто переименует в какой-то момент поле. Никаких дополнительных действий это не потребует, зато будет гораздо проще при анализе запросов, так и при внешних запросах к БД вне платформы.
Что значит в некоторых случай посмотреть ? Вообще всегда надо смотреть, что это за объекты. Иначе в чем смысл оптимизации ? И смотреть надо не только таблицы, но и поля. Как по Fld384 понять, что это за поле ? Зачем все было так усложнять в 1С, мне не очень понятно. Что мешало сделать нормальные читабельные поля, как во всех в нормальных системах (про SAP промолчу - это тоже то еще ... мамонта).
Вот именно, что приходится постоянно изучать планы. У нас на lsFusion есть клиенты, в которых одновременно работают 2.500 тысяч пользователей, таблицы с миллиардами записей и базой в несколько террабайт. И все это на одном обычно двух-процессорном сервере. Там без оптимизации логики запросов не обойтись.
А зачем менять имена метаданных ? Можно какой-нибудь практический кейс ? То есть, например в lsFusion, изменилось у вас имя таблицы или "поля" - просто делается ALTER ... RENAME
Принцип работы lsFusion особо не отличается от принципа 1С. Также автоматически генерируются запросы на основе логики, написанной на внутреннем языке. Основная разница в том, что в 1С как раз есть "псевдо-SQL", который транслируется в SQL очень близко, а в lsFusion все запросы генерируются автоматически.
А если у вас запрос на 4МБ ? Да и у автора на скрине как раз и есть лог длинных запросов. Как там сходу определить для чего эти запросы, и где они вообще вызываются, если все имена там Fld2983482 ?
Кроме того, вот допустим у вас сформировался запрос с неправильным планом ? Вот что Вы планируете делать в таком случае ? Единственный вариант, как и в lsFusion - это найти конкретное место и что-то поменять. В lsFusion для этого хотя бы есть механизм, который позволяет менять физическую структуру хранения, вообще без изменения логики. Но иногда приходится и логику менять. И все это требует понимания, где именно ошибся планировщик запроса.
Так в этом же и вопрос. То есть, вот вы видите запрос и читаете его EXPLAIN. И как там понимать, что такое _InfoRg50689X1 ? Это товары, контрагенты, документы или что ? Я должен каждый раз лазить куда-то в сторону, чтобы посмотреть, что это за таблица, и что в ней лежит. И также по каждому полю ? Вы это находите удобным ?