Как стать автором
Обновить

Комментарии 52

Так и не понятно из статьи в чем альтернативность 1с...

Так это статья про то, что есть в новом релизе. Про то, чем lsFusion лучше 1С (помимо открытости и бесплатности) была уже другая статья.

потому что безальтернативность

Ну не могут они не зацепить 1с) в заголовке 1с для кликабельности)

Учитывая, что программистам 1С проще всего сразу начать писать на lsFusion, то разве плохо "зацепить" 1С-программистов, чтобы они знали, что есть бесплатная альтернатива ?

А то часто в разных обсуждениях 1С очень жалуются на поведение монополиста разработчика платформы. Ведь хорошо, когда есть конкурент, так же ? Это подталкивает монополиста шевелиться...

Сколько ни попадается на глаза про lsFusion, нигде не увидел про штатный механизм обновления платформы и конфигураций. Да и не штатный тоже.

Дело в том, что в отличие от 1С он слишком простой, чтобы писать под него целые статьи или даже страницы. Но во многих статьях это также описывается. Например, в статье по MyCompany.

Платформа ставится одним скриптом :

source <(curl -s https://download.lsfusion.org/apt/install-lsfusion6)  

Обновляется тоже.

apt-get update lsfusion6*

Либо для snapshot-версий :

source <(curl -s https://download.lsfusion.org/apt/update-lsfusion6) 6.0-SNAPSHOT  

Сама же конфигурация - это чаще всего один jar-файл (собираемый либо на jenkins, либо через Artifact в IntelliJ IDEA), который лежит в папке /var/lib/lsfusion. Он просто замещается новым и перезапускается служба. Иногда, если нет Java кода, то вообще можно делать в папку /var/lib/lsfusion - git clone / git pull и так и работать.

В целом, lsFusion полностью построен на Java-инфраструктуре, поэтому процессы и обновлений, сборки, установки, запусков не специфичны для платформы, а такие же, как и для любых других Java-приложений. Информации же по работе Java-приложениям в интернете очень много. Тут нет своего велосипеда, как у 1С.

(не читал, не смотрел, просто спрашиваю)

а что делать если в процессе обновлений миграция данных отвалится, есть механизм откатов? что делать если миграция застрянет?

сложность обновления конфигураций 1С не в том что "они дибилы мерджат код построчно", а в том что они не хотят потерять сторонние доработки и чтобы миграции данных выполнялись полностью автоматически без приседаний и написания кусков на raw-sql ручками под каждый кейс (в 1С такое есть, но кодом 1С)

просто обновление конфигураций 1С это тоже далее-далее-ок, вопрос то в нетиповых историях

а что делать если в процессе обновлений миграция данных отвалится, есть механизм откатов? что делать если миграция застрянет?

Принцип обновления простой.

В самой же базе данных хранится старая структура БД. На запуске сервера приложений идет сравнение новой (исходя из кода) и старой структуры. Стартует транзакция и запускаются запросы в DDL.

И тут важную роль играет то, что DDL в PostgreSQL полностью транзакционен. Если что-то упадёт, то сервер не стартует и транзакция не применяется, то есть все возвращается в старое состояние.

Мы когда тестировали на Oracle, тогда выяснилось, что DDL у него как раз нифига не транзакционен. Если честно, то не знаю, как там в MS SQL. Но в PostgreSQL у нас сотни клиентов, обновления у которых очень часто и ни разу не имели никаких проблем.

То есть обычно подкидывается новый jar - запускается сервер. Упал, вернули старый jar. Запустился - значит все мигрировалось.

Вы не понимаете что значит миграция?

Добавили новую колонку, поставили кучу связей, поменяли тип значения поля..и т.п.

Причем тут транзакции вообще?

Миграции могут быть очень объемные, когда половина базы конвертится в другой тип данных, например раньше все хранили грубо говоря в json поле, а теперь нормализовали...

Вы предлагаете инструмент для разрабов, а 1с это инструмент для пользователей, разрабов и админов сразу. Вашу систему непрофессионал не сможет поддерживать, 1с сможет

Так я вам про это и написал. Вся миграция в lsFusion идёт одной транзакцией. Добавление полей, индексов, изменение структуры и т.д. И либо проходит, либо нет. Как раз для непрофессионала это очень просто. В отличие от 1С, где куча проблем, как Вы сами написали выше, в lsFusion не нужны никакие скрипты, ни разбираться с наполовину обновлённой базой.

В MS SQL DDL-запросы , естественно, полностью транзакционны

Кстати в последних версиях lsFusion полностью поддерживается докер.

Более того есть maven профиль для проектов на lsFusion, включив который одной кнопкой, можно, запустив maven install, собрать и залить свой образ в центральный репозитарий докера. И соответственно потом можно одной командой docker compose up поднимать все окружение вместе с решением.

Платформа, интересная. Но подход "мы хорошие, потому что 1с плохая" выглядит весьма странно. Как будто, какие-то комплексы и психологические проблемы. Для разных задач, свои инструменты. Рынок показал, что для своих задач 1С подходит. Лучше пишите, про свою платформу и кейсы применения её.

Так в том то и дело, что сфера применения платформы lsFusion максимально пересекается именно со сферой применений платформы 1С.

Это не подход "мы хорошие, потому что 1с плохая", а максимально быстрое и понятное объяснение "Что такое lsFusion, зачем она нужна и для чего использовать". Простой ответ - для того же, для чего используется 1С. А именно для разработки бизнес-приложений

Для самого простого CRUD вместо платформы и 1С и lsFusion лучше использовать low-code, no-code платформы. Для разработки интернет-магазинов - специализированные CMS-платформы. Для разработки, например, соцсетей или любых других B2C-приложений есть Java/Python/Go и куча веб-фреймворков. А максимальное пересечение применимости у lsFusion именно с 1С.

1С по факту используется не для разработки, потому что всё уже разработано, т.е. чаще используется как готовая конфигурация для бухгалтерии, кадров, склада, розницы итп (в которую ещё и куча законодательства вложена). Делать что-то подобное с нуля никто не возьмётся ни в 1С, ни в Fusion

1С по факту используется не для разработки, потому что всё уже разработано

Жаль, что большинство программистов (не только на lsFusion и 1С) этого не знают. И что-то разрабатывают и разрабатывают. Зачем ? Ведь на все же есть готовая, универсальная и всем подходящая конфигурация ?

А вообще тут даже на хабре полно статей, где пишут свои бизнес-приложения как на 1С, так и на Java/Python/Go и т.д. И для всего этого прекрасно подходит lsFusion. И многие уже делают как свои продукты, так и внутренние решения на lsFusion.

Чтобы платформа "взлетела", по любому нужно не противопоставлять себя платформе 1С, а наоборот заимствовать плюшки 1С: нижайший порог входа. Видал организации где бухгалтера сами клепали себе отчётики в консоли запросов не зная вообще ни что такое БД ни где она вообще лежит.

Ну и заиметь хотя бы одну конфигурацию "полного цикла", покрывающую вообще все потребности ну например типичного магазина: склад-продажа-ккм-торговое оборудование-всякие там егаисы. Чтоб сторонне ПО вообще не требовалось. Как аналог конфигурации "Розница" у 1С. Ну и наладить конечно её регулярное обновление, чтоб "любой дурак" одной кнопкой её мог обновить при изменении законодательства или еще чего

У 1С гораздо выше порог входа, чем у тех же low-code/no-code платформ. Отчеты - это слишком частный случай. Кстати, у того же 1С нет встроенного pivoting для любой таблицы, а в lsFusion - есть. А настраивать отчеты в 1С смогут далеко не все.

Но в целом порог входа в lsFusion сейчас ниже, чем у 1С. В 1С надо вручную управлять НаСервере/НаКлиенте, управлять блокировками, писать псевдо-SQL запросы, да и в целом плоский императивный код. В lsFusion же декларативный язык, и 80% кодирования ближе к программированию на Excel, чем на классическом Java. Так что тут скорее 1С надо заимствовать плюшки lsFusion :)

Типичный начинающий 1С ник даже не знает что такое pivoting, никогда не слышал про какие-то блокировки, а "псевдо SQL" наоборот считает самой лучшей придумкой, которая позволяет сразу сесть и что-то делать, не зная особо языка SQL,и программировать, причём на русском языке.

Типичный начинающий 1С ник даже не знает что такое pivoting

Pivoting это инструмент не программиста, а пользователя. Им то может пользоваться почти кто угодно, в отличие от конфигуратора или СКД 1С.

никогда не слышал про какие-то блокировки

Не, ну можно конечно зажмуриться и не видеть слона в комнате. Просто его там не перестанет быть. Просто программа будет зависать и/или данные будут нецелостны.

наоборот считает самой лучшей придумкой, которая позволяет сразу сесть и что-то делать, не зная особо языка SQL,и программировать, причём на русском языке

У нас была статья на Почему не 1С. Там есть красивый пример внутренного кода из типовой на 1С. Лучшая "придумка" (все программисты мечтают так писать) :

Скрытый текст

Процедура ИнициализироватьДанныеДокумента(ДокументСсылка, ДополнительныеСвойства, Регистры = Неопределено) Экспорт //////////////////////////////////////////////////////////////////////////// // Создадим запрос инициализации движений Запрос = Новый Запрос; ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка); //////////////////////////////////////////////////////////////////////////// // Сформируем текст запроса ТекстыЗапроса = Новый СписокЗначений; ТекстЗапросаТаблицаЗаказыКлиентов(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаСвободныеОстатки(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаОбеспечениеЗаказов(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаТоварыКОтгрузке(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаТоварыНаСкладах(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаПереданнаяВозвратнаяТара(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаТоварыПереданныеНаКомиссию(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаДатыПередачиТоваровНаКомиссию(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаСебестоимостьТоваров(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаВыручкаИСебестоимостьПродаж(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаРасчетыСКлиентами(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаСуммыДокументовВВалютеРегл(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаНДССостояниеРеализации0(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаНДСЗаписиКнигиПродаж(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаМатериалыИРаботыВПроизводстве(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаУслугиКОформлениюОтчетовПринципалу(Запрос, ТекстыЗапроса, Регистры); ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры); ПроведениеСерверУТ.ИницализироватьТаблицыДляДвижений(Запрос, ТекстыЗапроса, ДополнительныеСвойства.ТаблицыДляДвижений, Истина); КонецПроцедурыФункция ТекстЗапросаТаблицаЗаказыКлиентов(Запрос, ТекстыЗапроса, Регистры) ИмяРегистра = "ЗаказыКлиентов"; Если НЕ ПроведениеСерверУТ.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда Возврат ""; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения, | &ДатаРаспоряжения КАК Период, | ТаблицаТовары.ЗаказКлиента КАК ЗаказКлиента, | ТаблицаТовары.Номенклатура КАК Номенклатура, | ТаблицаТовары.Характеристика КАК Характеристика, | ВЫБОР | КОГДА ТаблицаТовары.СтатусУказанияСерий В (10, 14) | ТОГДА ТаблицаТовары.Серия | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) | КОНЕЦ КАК Серия, | ТаблицаТовары.КодСтроки КАК КодСтроки, | ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) | ТОГДА ТаблицаТовары.Склад | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) | КОНЕЦ КАК Склад, | 0 КАК Заказано, | ТаблицаТовары.Количество КАК КОформлению, | ТаблицаТовары.СуммаВзаиморасчетов КАК Сумма |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары |ГДЕ | ТаблицаТовары.Ссылка = &Ссылка | И ТаблицаТовары.КодСтроки <> 0 | И &Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыРеализацийТоваровУслуг.Отгружено) | И &РеализацияПоЗаказу | И &ИспользоватьРасширенныеВозможностиЗаказаКлиента | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход), | &ДатаРаспоряжения, | ТаблицаТовары.ЗаказКлиента, | ТаблицаТовары.Номенклатура, | ТаблицаТовары.Характеристика, | ВЫБОР | КОГДА ТаблицаТовары.СтатусУказанияСерий В (10, 14) | ТОГДА ТаблицаТовары.Серия | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) | КОНЕЦ, | ТаблицаТовары.КодСтроки, | ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) | ТОГДА ТаблицаТовары.Склад | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) | КОНЕЦ, | ТаблицаТовары.Количество, | ТаблицаТовары.Количество, | ТаблицаТовары.СуммаВзаиморасчетов |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары |ГДЕ | ТаблицаТовары.Ссылка = &Ссылка | И ТаблицаТовары.КодСтроки <> 0 | И &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыРеализацийТоваровУслуг.Отгружено) | И &РеализацияПоЗаказу | И &ИспользоватьРасширенныеВозможностиЗаказаКлиента | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход), | &ДатаРаспоряжения, | ТаблицаТовары.ЗаказКлиента, | ТаблицаТовары.Номенклатура, | ТаблицаТовары.Характеристика, | ВЫБОР | КОГДА ТаблицаТовары.СтатусУказанияСерий В (10, 14) | ТОГДА ТаблицаТовары.Серия | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) | КОНЕЦ, | ТаблицаТовары.КодСтроки, | ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) | ТОГДА ТаблицаТовары.Склад | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) | КОНЕЦ, | 0, | ТаблицаТовары.Количество, | ТаблицаТовары.СуммаВзаиморасчетов |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары |ГДЕ | ТаблицаТовары.Ссылка = &Ссылка | И ТаблицаТовары.КодСтроки = 0 | И &РеализацияПоЗаказу | И &ИспользоватьРасширенныеВозможностиЗаказаКлиента | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход), | &ДатаРаспоряжения, | ТаблицаТовары.ЗаказКлиента, | ТаблицаТовары.Номенклатура, | ТаблицаТовары.Характеристика, | ВЫБОР | КОГДА ТаблицаТовары.СтатусУказанияСерий В (10, 14) | ТОГДА ТаблицаТовары.Серия | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) | КОНЕЦ, | ТаблицаТовары.КодСтроки, | ВЫБОР | КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)) | ТОГДА ТаблицаТовары.Склад | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) | КОНЕЦ, | 0, | ТаблицаТовары.Количество, | ТаблицаТовары.СуммаВзаиморасчетов |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТовары |ГДЕ | ТаблицаТовары.Ссылка = &Ссылка | И ТаблицаТовары.КодСтроки = 0 | И &РеализацияПоЗаказу | И &ИспользоватьРасширенныеВозможностиЗаказаКлиента"; ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра); Возврат ТекстЗапроса; КонецФункции

Типичный начинающий 1С ник даже не знает что такое pivoting, никогда не слышал про какие-то блокировки, а "псевдо SQL" наоборот считает самой лучшей придумкой

Серьезно? Реляционная алгебра с типами JOIN позволяет сразу сесть и что-то делать? У меня огромный опыт в SQL и то до сих пор мозг сводит, когда я пытаюсь представить что получается при LEFT JOIN с неключевым полем. А ручной predicate push down (не сделав который будет дикая беда с производительностью) чего стоит. Вот тут к слову описаны многие проблемы SQL, которые перетекают везде, в том числе в 1С.

Это как раз lsFusion является обобщением и упрощением SQL, который "позволяет сразу сесть и что-то делать, не зная особо языка SQL". Русский язык непонятно причем, можно наверное настроить маппинг лексем, но если у человека в этом проблема, то по факту ничего сложнее CRUD он сделать не сможет, и тогда ему куда больше No-Code подойдет (где мышкой все делается).

на самом деле сами 1сники - разрабы не считают свой язык хорошим. просто говорят на конференциях "по большому счету без разницы на чем писать". но в едт поделке псевдо контроль типов сделали на уровне ide. но дальше тупик - "псевдо SQL" ровно никак не проверяется даже синтаксически (только вручную - и то до первой вставки в него шаблона с последующей конструкцией СТРЗАМЕНИТЬ)

Странная логика. Зачем кому-то второй X продукт, если есть первый. Собственно именно по другому пути шли и Тесла и Эппл и многие другие продукты, которые как вы говорите "взлетели".

Есть аналог "Управление торговлей" с поддержкой маркировки честного знака и новыми фискальными ККМ?

Ну, смотря, что считать аналогом. Есть под лицензий Apache 2.0 - MyCompany. Когда-то была поддержка ЧЗ, но вырезали, так как фактически она не использовалась, так как достаточно было принимать все в ЛК, а касса отправляла марки сама в ККМ (достаточно было ее просто просканировать).

Но в целом, можем и ввести назад в базовую версию, если кто-то будет готов проверить/протестировать/использовать. Можно, в частности просто портировать код из lsFusion ERP.

Спасибо, разработчики isfusion!

Как всегда, херня!

Всегда пожалуйста !

Кстати, как там в 1С ? Я читал, что недавно сделали наконец темную тему. Не прошло и десятка лет... А свои CSS можно уже добавлять и менять базовый дизайн, или все еще не смогли реализовать ?

причем тут темная тема? не тему же пользователи сдают в ФНС .... то что Белорусские предприятия на 70% типа сидят во фьюжине Это понятно а вот в РФ например может выйти с этим и конфьюжин ))

Я читал, что недавно сделали наконец темную тему.

А какую бизнес-ценность для конечного клиента представляет объект вашего саркастического троллинга?

У пользователя глаза и голова не болят. Меньше тратить придется на медицину для сотрудников. Плюс человек будет лучше видеть, а значит эффективнее выполнять свою работу.

Ниже, @Val83 указал:

От демки глаза и голова заболела. Смесь языков, дикий перенасыщенный интерфейс

Прокомментируйте?

Я же ответил ему. Но могу более подробно ответить и Вам, если объясните, что именно Вы имеете ввиду под "диким перенасыщенным". Можете даже в сравнении с типовыми конфигурациями 1С. Желательно со скринами.

открылась сразу

У меня такая же нога и не болит.

Говорят, что такие проблемы иногда бывают на некоторых провайдерах. Там демо-сервера хостятся на Hetzner, и возможно где-то блокируется, но скорее всего со стороны РКН.

похоже на то... у другого провайдера без проблем.

Причем там вся инфрастуктура на hetzner. И у кого-то бывает, что сайт https://lsfusion.org открывается, а https://demo.lsfusion.org нет. Похоже просто блокируют точечно диапазоны ip...

От демки глаза и голова заболела. Смесь языков, дикий перенасыщенный интерфейс, на мобиле вообще жуть.

Зачем противопоставлять 1ске или декларации и отчётность можно будет собрать когда-нибудь в РФ ))

Смесь языков

Там в русской демке должен быть только русский язык. В демке без "-ru" язык берется из браузера. Да, lsFusion хорошо умеет в i18n, и умеет показывать на разных языках.

дикий перенасыщенный интерфейс

Bootstrap дизайн - это дикий ? Ну-ну. В чем перенасыщенность то ? Количество элементов на формах не сильно отличается от 1С или того же Odoo.

Зачем противопоставлять 1ске или декларации и отчётность можно будет собрать когда-нибудь в РФ ))

Какое отношение декларация и отчетность имеют к платформе. Вы понимаете разницу между платформой и конфигурациями ?

Какое отношение декларация и отчетность имеют к платформе?

А пользователю или еще точнее Руководителю, который принимает решение купить тот или иной продукт - думаете Есть дело насколько там "идеальный код"??? Все решается тем - какие задачи может решать продукт "из коробки", как Эти задачи решаются и Главное насколько в определенной местности можно найти Компетентного Специалиста для как всегда "Вдруг понадобившейся модификации" и конечно же экономика всего этого Мероприятия .....

А пользователю или еще точнее Руководителю, который принимает решение купить тот или иной продукт - думаете Есть дело насколько там "идеальный код"???

Напрямую естественно нет. Но дело в том, что даже если функционал есть для 90 процентов задач, а для 10 процентов нет, и реализация этих 10 процентов или невозможна или потребует переписывания полпроекта, то вот тогда "идеальный код" очень даже волнует. Но согласен что многие Руководители диелетанты и этого не всегда понимают.

Главное насколько в определенной местности можно найти Компетентного Специалиста

А зачем в определенной местности? Это же не строительство. Какая разница где будет сидеть человек? У нас даже в соседний район лично никто не ездит. Зачем тратить зря время если есть Zoom. А если география роли не играет, то какая разница у вас Компетентных Специалистов 100 или 100 тысяч?

конечно же экономика всего этого Мероприятия

И опять возвращаемся к идеальному коду. Любой опытный человек скажет вам, что внедрение (а в большей степени это и есть доработки) это большая половина проекта. Конечно если проект не простенький ларек.

в принципе про 1с есть только 2 актуальных вопроса

  1. кассы

  2. отчетность
    и то и другое это заработок чиновников и еще кое кого в РФ. 1с плотненько работает с налоговой. поэтому для бухгалтерии лучше 1с. я был у финов в водоканале - отчет по ндс - раз в год. бухгалтеров меньше в 10 раз. , а вот в производственный учет - нет. те кто кинулись в 1с в 2010 годах теперь плачут горькими слезами. вложившись десятками миллионов вот прям сейчас в упп они прокинуты 1с с реграментированой отчетностью - того же балланса за 1с квартал рабочего нет еще, а то что заработает только 1,2 формы. Если у вас мелкое предприятие - вам пофиг: перескочить с любой даты нет проблем. а если крупное - бизнес начинает обратно резать 1с от производсва и логистики (не все конечно, многие прыгают в erp целиком, но кто умные - отделяют бухгалтерию от учета) сейчас много гос.предприятий полностью переходят на 1с. Надеюсь 1с сделало выводы по упп и не киданет всех с erp - выпустив новые конфиги в какойнибудь 1с 9.0 на новом супер языке (язык то плох - они уже что то ваяют на новом уже - сами знаете: "Элемент") - а вообще у них бизнес модель такая так что скорей всего сделают лет через 5. так что кому надо автоматизацию лет на 20 вперед я бы не советовал все в кучу совать в 1с

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

К сожалению, преобразовать спагетти-код типовых конфигураций 1С в красивый декларативный код на lsFusion даже человек не всегда сможет. Что уж говорить про конвертер...

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

Проблема 1С (какая нибудь типичная, например с обновлением конфигурации) >> как решено во фьюжн

и т.д.

Ну и конечно юз кейсы, просто много хороших примеров как решать типовые задачи

Прочитал про регистры. Не увидел абстракции. То есть предлагается создавать одни и те же действия для всех регистров. А хотелось бы чего то такого:

class Register<Dimension, Resource>
  where Resource:INumber

чтобы общие алгоритмы не повторялись из регистра в регистр. Чтобы условие на неотрицательность остатков было частным случаем функционального свойства проверки баланса:

Expression<Predicate<Dimension, Resource>> BalanceСondition;

ну и отдельно про:

К слову, в 1С с этим есть определенные проблемы, так как строка документа может порождать только одну запись в регистре:

Система обеспечивает контроль уникальности записей, хранящихся в регистре накопления. Благодаря этому в регистре накоплений не может находиться двух записей, относящихся к одной и той же строке одного и того же документа.

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

Вообще была (и есть мысль) сделать оператор LEDGER, например:

LEDGER SkuLedger (Sku sku, Stock stock) SUM balance;

Который будет синтаксическим сахаром и будет создавать абстрактный класс и свойства + группирующие свойства:

CLASS ABSTRACT SkuLedger;
dateTime = ABSTRACT DATETIME (SkuLedger);
sku = ABSTRACT Sku (SkuLedger);
stock = ABSTRACT Stock (SkuLedger);
balance = ABSTRACT NUMERIC (SkuLedger);

balance = GROUP SUM balance(SkuLedger s) BY sku(s), stock(s);
balance = GROUP SUM balance(SkuLedger s) IF dateTime(s) <= DATETIME d BY sku(s), stock(s), d;
balance = GROUP SUM balance(SkuLedger s) IF dateTime(s) <= DATETIME dTo AND dateTime(s) >= DATETIME dFrom BY sku(s), stock(s), dFrom, dTo;

В принципе уже сейчас можно сделать такой метакод (я так понимаю речь об этом и шла в статьях выше):
@defineLedger(SkuLedger, Sku, sku, Stock, stock, balance);

Но согласен оператором красивее.

PS: Собственно и агрегации были когда-то метакодом, потом стали оператором (AGGR). Другое дело что по сравнению даже с агрегациями у регистра в IDE магии еще больше будет, так как слово balance по факту будет сразу три свойства создавать. Но с другой стороны почему нет :), думаю в следующих версиях появится.

да действительно в 1с записи регистров ровно никак не связаны со строками - потому что у строк нет в 1с ссылок, чтобы сослаться на строку в конфигах постоянно заплатки лепят в виде доп полей uid

Хорошо, что развиваются серьезные конкуренты 1С, может это заставт саму 1С задуматься, где они свернули не туда...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий