Почему lsFusion, а не 1С?



    Предыдущая статья “Почему не 1С?” вышла больше года назад и вызвала достаточно живой интерес (совсем немного не дотянула до 100к просмотров и 2к комментариев). Впрочем, как и ожидалось, у многих возник резонный вопрос: “Если не он, то кто?” Безусловно, как многие поняли, та статья писалась не просто так, а чтобы вслед за ней выпустить еще одну, где было бы рассказано, как описанные в первой статье проблемы можно и нужно решать. Однако, по различным причинам, выпуск этой “ответной” статьи был отложен на весьма долгое время. Но, как говорится, лучше поздно, чем никогда.


    Как было отмечено в заключении предыдущей статьи, в качестве решения всех описанных проблем предлагается использовать платформу (и одноименный язык) lsFusion. Эта платформа имеет в основе несколько достаточно редких, но при этом наиболее высокодекларативных парадигм программирования: комбинаторное (function-level, не путать с functional), реактивное, событийно-ориентированное, программирование на ограничениях (constraint) и метапрограммирование. Впрочем, для неискушенного читателя это все не более чем набор красивых buzzwords, поэтому не будем уделять много внимания теории, а сразу перейдем на более практический уровень, а именно к решению описанных в предыдущей статье проблем.


    Структура этой статьи полностью повторяет структуру статьи «Почему не 1С?» (с теми же названиями разделов и в том же порядке):


    Оглавление


    При этом в каждом разделе с названием проблемы в 1С рассказывается, как данная проблема решается в lsFusion.


    Объекты: Справочники, Документы и т.д.


    В lsFusion основной акцент сделан не на объекты, а на функции и поля (в lsFusion они объединены в одно понятие — свойства). Такой подход позволяет обеспечить прежде всего гораздо более высокую модульность и производительность (об этом в следующих разделах). Впрочем, безусловно, у инкапсуляции тоже есть свои преимущества — например, механизмы копирования и версионирования объектов «из коробки». Правда, при использовании всех такого рода механизмов, существует два нюанса:


    • Как правило, все эти механизмы достаточно эвристичны и либо включают лишние данные (например, какую-нибудь сугубо техническую информацию, если она хранится в самом объекте), либо, наоборот, какие-то данные не включают (например, если эти данные хранятся в отдельных таблицах / регистрах, но все равно логически относятся к объекту). Соответственно, эти автоматические механизмы все равно приходится донастраивать вручную, что уничтожает практически все преимущество их «автоматичности».
    • Все эти механизмы всегда можно «надстроить» сверху (что в lsFusion уже делается и / или будет сделано в следующих версиях), получив тем самым преимущества обоих подходов.

    Неэффективное получение данных объектов


    Так как для выполнения логики вычислений lsFusion пытается максимально использовать SQL-сервер, а не сервер приложений (причем делает это максимально группируя запросы, чтобы выполнять их как можно меньше), операции чтения объекта целиком в lsFusion не существует в принципе. Как следствие, и проблема N+1 и проблема избыточного чтения в lsFusion возникают крайне редко. Например следующее действие:

    fillSum(Invoice i) {
        FOR invoice(InvoiceDetail id) = i DO
            sum(id) <- price(id) * quantity(id);
    }
    Скомпилируется в одно действие:
    fillSum(Invoice i) {
        sum(InvoiceDetail id) <- price(id) * quantity(id) WHERE invoice(id) = i
    }
    Которое, в свою очередь, выполнится одним запросом, в котором будут читаться / писаться только используемые ряды / колонки.

    Таблицы / Представления: Регистры


    В lsFusion все те абстракции, которые «намешаны» в регистрах 1С, достаточно четко разделены, что, с одной стороны, дает лучшее понимание того, что происходит «под капотом» (а значит, упрощает оптимизацию производительности), а с другой стороны дает куда большую гибкость. Так, абстракции из регистров отображаются на абстракции lsFusion следующим образом:


    • Таблицы — первичные свойства
    • Представления — свойства, реализуемые при помощи остальных операторов (впрочем, материализованные свойства можно также рассматривать и как таблицы)
    • Работа с моментами / периодами времени — частный случай представлений, свойства, реализуемые при помощи операторов группировки:
      • СрезПоследних — GROUP LAST
      • Остатки, Обороты — SUM (ОстаткиИОбороты в lsFusion не имеют смысла, так как оптимизатор lsFusion умеет сам объединять подзапросы, если это необходимо)

    На тему работы с регистрами в lsFusion была отдельная статья, поэтому подробно останавливаться на этой теме здесь особого смысла нет.


    Единственное, что еще хотелось бы отметить. Возможно в lsFusion все же имеет смысл добавить синтаксический сахар по созданию всего этого комбайна из класса регистра, агрегации, а также набора готовых свойств остатков и оборотов. Что-то вроде:

    LEDGER Sales GROUP Stock stock, Sku sku SUM NUMERIC quantity, NUMERIC sum;

    // автоматически создает класс Sales и свойства :
    // stock, sku, quantity, sum = ABSTRACT Stock, Sku, NUMERIC, NUMERIC (Sales); - 
    соответствующие измерения / ресурсы
    // quantitySales, sumSales (stock, sku) - текущий остаток (имя = имя свойства + имя регистра)
    // quantitySales, sumSales (stock, sku, DATETIME) - текущий остаток на дату
    // quantitySales, sumSales (stock, sku, DATETIME, DATETIME) - обороты с даты по дату
    // и т.п.
    И в следующих версиях такой синтаксический сахар скорее всего появится. Другое дело, что чаще всего в сложных проектах регистры имеют более сложную структуру (например, наследуются друг от друга, денормализуют данные для составных индексов, расширяются в разных модулях и так далее), поэтому такой сахар может быть важен разве что для RAD разработки (а точнее прототипирования), которая в современном IT-мире уже не так актуальна.

    Регистры поддерживаются в очень частных случаях


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


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


    1. Композицию, что, например, позволяет прозрачно денормализовывать данные из разных таблиц (это будет показано в разделе "Статичная физическая модель").
    2. Максимумы / минимумы / последние значения по любому полю, что позволяет эффективно организовывать нумерацию и ранжирование данных.
    3. Рекурсию, что, например, позволяет “разворачивать” иерархию в плоские таблицы (с такой же высокой производительностью).
    4. Выбор (полиморфизм), что позволяет наследовать регистры друг от друга.
    5. И многие другие

    Отсутствие ограничений и событий для значений регистров


    lsFusion поддерживает ограничения и события в общем случае, причем, в том числе, для вычисляемых нематериализованных данных. Так, например, для создания ограничения, что остаток (который может вычисляться с использованием любого количества различных данных / операторов) должен быть больше 0, достаточно написать всего одну строку:

    CONSTRAINT currentBalance(sku, stock) < 0 MESSAGE 'Остаток не может быть отрицательным';
    Соответственно, платформа будет сама максимально эффективно (инкрементальными вычислениями) проверять, что никакое изменение (например, изменение склада прихода или количества расхода), это ограничение не нарушит.

    Также, аналогичным образом можно создавать, например, уведомления об изменении любых, в том числе вычисляемых, данных:

    WHEN SET(currentBalance(Sku sku, Stock stock) < 0// когда остаток становится меньше 0
        EMAIL SUBJECT 'Остаток на складе ' + address(stock) + ' для товара ' + name(sku) + 
    ' стал меньше 0' TO responsibleEmail(group(sku));

    В параметрах виртуальных таблиц можно использовать только константы


    Опять-таки никаких ограничений на использование параметров в lsFusion нет. Так, если надо обратиться к остатку на дату, можно в качестве даты использовать любые, в том числе вычисляемые, значения. Кроме того, не надо думать, о том чтобы проталкивать условия внешнего контекста внутрь вычисления, lsFusion все это делает автоматически. Так если у нас есть следующее действие:

    EXPORT FROM price(Sku sku), balance(date(sku), sku) WHERE name(sku) = 'Колбаса';
    Платформа автоматически протолкнет условие ограничивающее наименование (и как следствие даты, на которые будет вычисляться остаток) внутрь подзапроса (и всех подзапросов внутри этого подзапроса), таким образом выполнив оптимизацию predicate push down . Причем в отличии от того же SQL, платформа умеет выполнять эту оптимизацию не только для группировок, но и для разбиений и даже для рекурсий. Впрочем это тема для отдельной статьи, подробно на ней здесь останавливаться не будем.

    Запросы


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


    Запросы в строках


    И логика свойств и логика форм задаются непосредственно на языке lsFusion, соответственно для них:


    • в IDE поддерживается полный арсенал разработчика — автоподстановка, подсветка ошибок, синтаксиса, поиск использований и т.п.
    • Большинство ошибок обнаруживаются либо на уровне IDE (чаще всего), либо при запуске сервера, что значительно повышает и скорость разработки и надежность разрабатываемых решений.

    Тут конечно иногда возникают вопросы с динамическими формируемыми запросами, но как правило они решаются использованием либо соответствующих условных операторов / опций (IF, SHOWIF и т.п.), либо оператора выполнения программного кода (EVAL), позволяющего выполнить любую заданную строку кода на lsFusion.


    Отсутствие оптимизатора запросов


    В lsFusion внутри очень мощный механизм оптимизации запросов, во многих случаях выполняющий оптимизации, которые не умеют выполнять даже дорогие коммерческие СУБД (не говоря уже о PostgreSQL). Так, все проблемы с производительностью описанные в статье «Почему не SQL», lsFusion умеет решать самостоятельно без каких-либо дополнительных действий со стороны разработчика, который, соответственно, может сконцентрироваться на решении бизнес-задач, а не думать как правильно написать запрос и / или в какую временную таблицу положить его результат.


    Так пример из статьи про 1С в lsFusion будет выглядеть следующим образом:


    Пример из статьи
    ВЫБРАТЬ
        РасходнаяНакладнаяСостав.Номенклатура,
        УчетНоменклатурыОстатки.КоличествоОстаток
    ИЗ
        Документ.РасходнаяНакладная.Состав КАК РасходнаяНакладнаяСостав
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки(,
                                 Номенклатура В (
                                       ВЫБРАТЬ Номенклатура
                                       ИЗ Документ.РасходнаяНакладная.Состав
                                       ГДЕ Ссылка = &Документ)) КАК УчетНоменклатурыОстатки
            ПО УчетНоменклатурыОстатки.Номенклатура = РасходнаяНакладнаяСостав.Номенклатура
    ГДЕ
        РасходнаяНакладнаяСостав.Ссылка = &Документ И
        (УчетНоменклатурыОстатки.КоличествоОстаток < РасходнаяНакладнаяСостав.Количество ИЛИ
            УчетНоменклатурыОстатки.КоличествоОстаток ЕСТЬ NULL)
    currentBalance(InvoiceDetail id) = currentBalance(sku(id));

    export(Invoice i) {
        EXPORT FROM sku(InvoiceDetail id), currentBalance(id) WHERE invoice(id) = i AND 
    currentBalance(id) < quantity(id) OR NOT currentBalance(id);
    }
    Соответственно никаких «Номенклатура В ( ВЫБРАТЬ Номенклатура ИЗ Документ.РасходнаяНакладная.Состав ГДЕ Ссылка = &Документ)» в lsFusion писать не надо.

    Отсутствие расширенных SQL возможностей


    Кроме классического набора операций в SQL-92, состоящего из группировок и композиций (аналог в SQL — соединения), в lsFusion также поддерживаются операции:


    • Разбиение / упорядочивание (аналог в SQL — оконные функции)
    • Рекурсия (аналог в SQL — рекурсивные CTE)
    • Полиморфизм (косвенный аналог в SQL — наследование таблиц)

    Причем те же рекурсии в lsFusion поддерживаются в общем случае без каких-либо дополнительных ограничений (вроде невозможности использования GROUP BY в запросе шага).


    Отсутствие запросов на изменение


    Большинство ERP-платформ хотя формально и поддерживают ORM механизмы, но на практике, из-за плохой производительности, решения на ERP-платформах все равно в абсолютном большинстве случаев используют запросы на SQL-подобных языках.


    Впрочем, в том же 1С запросы поддерживаются только для операций чтения данных, для записи все-таки приходится использовать ORM механизмы, производительность которых оставляет желать лучшего. В lsFusion такой проблемы нет, и все операции, в том числе создание объектов, могут выполняться на сервере БД, причем одним запросом. Например:

    generateCards() {
        FOR iterate(i,1,10000NEW d = DiscountCard DO
                number(d) ← ‘Card:’+i;
    }

    В конечном итоге скомпилируется в один запрос (или несколько, но их количество не будет зависеть от количества данных) и выполнится очень быстро, причем все события / ограничения / агрегации также будут выполнены / проверены / пересчитаны ограниченным числом запросов (опять-таки, не зависящим от количества данных).

    Тоже самое касается и механизма изменения / удаления большого количества данных / объектов:

    FOR sum(DiscountCard d) > 10000 DO
        vip (d) ← TRUE;
    FOR sum(DiscountCard d) > 10000 DO
        DELETE d;
    Скомпилируется в:
    vip(DiscountCard d) ← TRUE  WHERE sum(d) > 10000;
    DELETE DiscountCard d WHERE sum(d) > 10000;
    И опять-таки выполнится одним запросом.

    Отказ от автоматических блокировок


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


    1. Использовать версионные СУБД (или версионный режим в том же MS SQL).
    2. Повысить уровень изоляции базы до Repeatable Read или еще лучше до Serializable.
    3. Материализовать данные, для которых важна целостность.
    4. Все транзакции с конфликтами записей или дедлоками откатывать и повторять заново.

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


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

    Формы


    В lsFusion формы — универсальный механизм, отвечающий за объединение данных вместе и вывод их пользователю / ИС в том или ином виде.


    Отказ от единого потока выполнения: разделение логики на сервер и клиент


    В отличие от 1С в lsFusion поток выполнения един и для сервера, и для клиента. Такое единство значительно упрощает взаимодействие с пользователем / клиентским устройством с точки зрения процесса разработки. Так, пример в статье про 1С написан именно на языке lsFusion, и, соответственно, выглядит следующим образом:

    f() <- someData(); // читаем данные из базы необходимые для myForm
    DIALOG myForm OBJECTS a INPUT DO // ОткрытьФормуМодально, пользователь
    выбирает какой-то объект
         IF isSomething(a) DO // читаем данные для этого объекта и если с ними что-то 
    не то
             DIALOG otherForm OBJECTS b = a DO { // ОткрытьФормуМодально, открываем 
    другую форму где пользователь выбирает другой объект b
                 g(b) <- someInput(b); // записываем данные для b
                 APPLY// сохраняем изменения в базу
             }
    В какой-то степени lsFusion использует подход обычных форм в 1С, только делает это гораздо более масштабируемо и производительно. Фактически, вся магия асинхронности остается под капотом, а разработчик может сконцентрироваться строго на решении бизнес-задач, а не думать о том, где и как должен выполнять написанный им код.

    Тут может возникнуть впечатление, что в lsFusion вообще не существует возможности выполнять заданный код на клиенте (в смысле кроме уже встроенных в платформу операторов/действий). Но это не так, в lsFusion существует специальная опция CLIENT в операторе INTERNAL, которая позволяет выполнить заданный именно на клиенте код. Для десктоп клиента этот код задается на Java, а для веб-клиента — на JavaScript. Правда обычно такая “тонкая настройка” нужна очень редко, поэтому подробно останавливаться на ней здесь особого смысла нет.


    Отказ от синхронности


    Синхронность в бизнес-приложении важна прежде всего для организации диалоговых процессов (когда от пользователя нужно получить ответ) и для обеспечения “транзакционности” процессов (когда необходимо гарантировать полное, от начала и до конца, выполнение некоторой операции). Проблема синхронности на клиенте прежде всего в однопоточности клиентской среды (например, браузера), и, как мы выяснили в предыдущей статье, в 1С эту проблему просто решили переложить на разработчика (справедливости ради, в последних версиях в платформу вроде начали добавлять async / await, но это лишь частичное решение проблемы).


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


    Отказ от WYSIWYG: разделение интерфейса на запись и чтение


    Как было подробно описано в предыдущей статье, у подхода 1С в построении интерфейсов, которые одновременно содержат и первичные и вычисляемые данные (для этого напомню используются динамические списки), есть как минимум 2 проблемы:


    • Из-за отсутствия оптимизатора, в динамических списках крайне противопоказано использовать подзапросы / виртуальные таблицы (представления).
    • Динамические списки нельзя редактировать.

    Как следствие в 1С все интерфейсы по сути строго разделены на интерфейсы чтения и интерфейсы ввода. В lsFusion описанных двух проблем нет, и, как следствие, можно абсолютно декларативно строить максимально эргономичные и привычные пользователю «Excel-style» интерфейсы, вытаскивая на форму одновременно и данные, которые необходимо ввести, и данные, необходимые для принятия решения того, что именно надо вводить. Причем все построенные интерфейсы (как впрочем и остальные абстракции в lsFusion) реактивны «из коробки» — автоматически обновляются при вводе / изменении данных пользователем. Впрочем на эту тему была отдельная статья, поэтому подробно останавливаться на этой теме здесь также не имеет особого смысла.


    Невозможность обращаться в списках к реквизитам форм / текущим значениям других списков


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

    FORM balance
        OBJECTS st = Stock, sk = Sku
        PROPERTIES (st) name
        PROPERTIES name(sk), currentBalance(st, sk)
        FILTERS currentBalance(st, sk)
    ;
    При перемещении текущей записи в верхнем списке (складов), нижний список (товары, которые есть на выбранном складе) будет обновляться автоматически.

    Избыточные уровни абстракции


    Основным принципом при создании lsFusion был и остается принцип — чистота и завершенность всех создаваемых абстракций. Так:


    • За один и тот же функционал в lsFusion отвечает ровно одна абстракция. Если для реализации некоторого функционала можно использовать уже существующие абстракции — их нужно использовать. Такой подход значительно упрощает как изучение платформы разработчиками, так и разработку самой платформой.
    • Все абстракции выстроены в уровни (верхние используют нижние) таким образом, что если какая то абстракция разработчика не устраивает, он всегда может спуститься на уровень ниже, тем самым получить большую гибкость (правда при этом выполнив больше работы).
      Графически такая иерархия выглядит следующим образом:


    Как следствие, количество абстракций в lsFusion значительно меньше чем в 1С. Соответственно взглянем на абстракции 1С из предыдущей статьи глазами lsFusion:


    • Объекты / записи

    В lsFusion абстракция таблицы (а значит и записи) есть только на уровне администрирования. Соответственно, так как за группировку различных запросов в один (впрочем как и их написание, оптимизацию и т.п.) отвечает сама платформа, с точки зрения разработчика абстракции «запись» не существует вообще (так как она попросту не нужна).


    • Объекты / ссылки на объекты

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


    • Данные формы / Данные объектов

    В lsFusion поддерживается практически абсолютная реактивность на всех уровнях, в том числе на уровне форм. Соответственно необходимости в каких-то дополнительных абстракциях вроде «данных формы» в lsFusion попросту нет. Есть просто данные, и соответственно при любом их изменение платформа автоматически обновляет все представления их использующие. Если же форме нужны какие-то свои локальные данные, разработчик просто создает необходимые локальные первичные свойства, и работает с ними также как и со всеми остальными свойствами (например хранящимися в базе). То есть никаких крышесносящих РеквизитФормыВЗначение в lsFusion нет.


    • Запросы / СКД / Аналитика (BI)

    Тут все немного сложнее. Запросов, как уже упоминалось в разделе объекты / записи в lsFusion нет (за их формирование и выполнение отвечает сама платформа). Остальной функционал выбора, объединения и отображения данных (не только из этого пункта, а вообще) в lsFusion соответствует следующим механизмам:


    • Печатные формы — печатное представление формы, дизайн которого задается при помощи JasperReports, одной из самых распространенных систем отчетности под Java. Позволяет строить pixel-perfect формы, и вообще обладает огромным количеством различных возможностей.
    • Встроенная аналитика — одно из представлений списка объектов формы, поддерживает графики, диаграммы, сводные таблицы и многое другое.
    • Сложные интерактивные формы с вычисляемыми данными — «обычное» интерактивное представление формы позволяет отображать как первичные, так и вычисляемые данные, а также создавать сразу много списков объектов и связывать их друг с другом «одной строкой кода» (в разделе выше был пример).
    • Программный интерфейс работы с данными — структурированное представление формы, позволяет экспортировать (и наоборот импортировать) любую форму в JSON, XML, XLSX, DBF и другие распространенные форматы.

    Фактически вся работа с множествами данных в lsFusion сводится к одной единственной абстракции — форме. Соответственно, эту форму можно отображать в различных представлениях, в зависимости от того в каком виде нужно отобразить результат обработки данных. Такое единообразие, не только значительно упрощает изучение платформы разработчиком, но и дает дополнительную гибкость при разработке / поддержке создаваемых решений.


    Закрытая физическая модель


    В lsFusion отсутствует классическая инкапсуляция, и во многом благодаря этому отображение логики lsFusion на классическую реляционную БД куда более прозрачно и очевидно, чем в остальных платформах / фреймворках (в том числе 1С). Так в lsFusion любое материализованное свойство — это поле таблицы, в которой ключами являются параметры этого свойства. Плюс, для каждого набора классов можно задать таблицу, в которую по умолчанию будут попадать все свойства, классы параметров которых наследуются от данного набора классов (или совпадают). В общем-то все.


    Открытая и прозрачная физическая модель дает массу преимуществ:


    1. Простая и очень производительная интеграция со сторонними инструментами (например BI).
    2. Возможность использования стандартных средств администрирования БД (например, профайлеров)
    3. Читабельные запросы в журналах и логах.

    Статичная физическая модель


    PS: Так как большая часть статьи писалась «на сутках» (есть сейчас такое национальное развлечение в Беларуси) и самой статьи «Почему не 1С?» перед глазами у автора не было, многое писалось по памяти, и, как оказалось, этого и следующего недостатка в предыдущей статье не было вообще. Но, так как эти разделы уже были написаны, мы решили их все же включить в эту статью.


    Как уже упоминалось в предыдущем разделе, отображение логики данных в lsFusion на реляционную базу данных прозрачно и может полностью контролироваться разработчиком. Вместе с материализациями в общем случае и индексами разработчик (и даже администратор) может добиться практически любой производительности даже на огромных объемах данных. Причем, так как платформа сама следит за изменениями физической модели и обновляет структуру БД без каких-либо дополнительных миграций, процесс оптимизации производительности может (и должен) выполняться на работающей базе, когда известна статистика и варианты использования этой базы. Так предположим, у нас есть простой пример:

    date = DATA DATE (DocumentDetail)
    barcode = DATA STRING (Sku);
    sku = DATA Sku (DocumentDetail); 

    barcode(DocumentDetail dd) = barcode(sku(dd));
    count (STRING bc, DATE d) = GROUP SUM 1 IF date(DocumentDetail dd) > d AND barcode(dd) = bc;
    FORM x
            OBJECTS bc = STRING PANEL, d = DATE PANEL
            PROPERTIES count(bc, d), VALUE (bc), VALUE(d)
    ;
    При выполнении этой формы сформируется запрос в котором будет:
    1. JOIN с таблицей товаров, штрихкод в таблице SKU совпадает с заданным;
    2. подсчет количества строк документов по всем датам больше заданной.

    При этом у SQL сервера будет два варианта: либо бежать по индексу по датам в таблице строк, либо бежать по индексу по штрихкодам в таблице товаров, находить товары, после чего бежать по индексу по Sku в таблице строк. В обоих случаях производительность будет оставлять желать лучшего (если движений одного товара очень много и товаров очень много). В lsFusion для решения этой проблемы достаточно изменить / добавить следующие строки:

    barcode(DocumentDetail dd) = barcode(sku(d)) MATERIALIZED// помечает, что 
    должно быть  хранимое
    INDEX barcode(DocumentDetail dd), date(dd);// строим составной индекс
    После такой оптимизации SQL сервер сможет начать использовать построенный составной индекс и производительность будет максимальной.

    Закрытые исходники и лицензии


    Открытые исходники и лицензия в последнее время стали де-факто стандартом в отрасли средств разработки. Даже Microsoft, известная ранее консервативностью в этом вопросе, открыла исходники .Net, сделала его бесплатным и выпустила версию под Linux.


    Наверное, единственная область, которая осталась в стороне от этого тренда — это ERP-платформы, что на мой взгляд, во многом обусловлено как раз фатальным недостатком: разработка всей инфраструктуры с нуля — это очень затратное мероприятие. Соответственно, делать такую платформу открытой и бесплатной может быть экономически необоснованно.


    lsFusion выпускается под LGPL v3 лицензией, которая подразумевает свободное использование, распространение и модификацию (за исключением выпуска коммерческой версии платформы), в общем практически все что угодно. Исходники доступны на GitHub. Это обычный Maven-проект, соответственно поддерживаются все стандартные циклы сборки Maven: compile, install, package и т.п. Также открыты исходники сервера сборки, плагина, управление проектами ведётся в GitHub Projects. То есть вся инфраструктура открыта настолько, насколько это возможно.


    Отсутствие наследования и полиморфизма


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


    Наследование и полиморфизм очень важны для обеспечения максимально высокой модульности (о которой чуть позже), да и вообще являются одними из самых эффективных инструментов декомпозиции сложных задач, что и обеспечило им такую распространенность (как ключевых частей ООП).


    Про то в каком именно виде в lsFusion поддерживаются наследование и полиморфизм уже неоднократно рассказывалось на хабре, как в формате tutorial, так и на конкретных примерах, поэтому повторяться тут не будем.


    Отсутствие явной типизации в коде


    В lsFusion поддерживаются одновременно и явная и неявная типизация. То есть разработчик может задавать классы параметров (если ему так удобнее), а может не задавать. Впрочем, с учетом количества преимуществ обеспечиваемых явной типизацией в реальных (особенно сложных) проектах неявная типизация на практике используется крайне редко.


    Также стоит отметить, что в некоторых правилах класс параметра может не задаваться явно, но при этом он автоматически выводится из семантики правила, и дальше все работает, точно также, как если бы этот класс параметра задавался явно. Например:

    invoice (InvoiceDetail id) = DATA Invoice;
    sum = GROUP SUM sum(InvoiceDetail id) BY invoice(id) // у sum считается есть один
    параметр класса Invoice (путем вывода класса значения invoce, в данном случае - Invoice)

    FORM myForm
        OBJECTS myObject = MyClass
    ;
    filtered = FILTER myForm.myObject ; // у filtered считается есть один параметр класса 
    MyClass (выводится из класса объекта myObject формы myForm)

    Отсутствие модульности


    Несмотря на то, что это вроде всего один маленький пункт, модульность в мире бизнес-приложений является чуть ли не краеугольным камнем любого как типового, так и custom-made решения. Дело в том, что какой крутой не была бы платформа, писать необходимое решение полностью с нуля часто бывает не оправдано чисто экономически. С другой стороны поставлять огромный монолит клиенту целиком несет в себе не меньшие проблемы, как с точки зрения производительности и простоты обучения / использования такого «космолета», так и с точки зрения его дальнейшего сопровождения и доработок под постоянно меняющиеся требования.


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


    1. События предметной области (и все то, что на них построено — ограничения и агрегации) — позволяют разбить всю бизнес-логику на множество небольших напрямую независимых друг от друга правил. Эти правила, в свою очередь, автоматически выстраиваются платформой в один большой поток выполнения, в зависимости от того, какие данные эти правила изменяют / используют.
    2. Расширения — позволяют расширять практически все существующие в платформе абстракции. Такая возможность опять-таки позволяет максимально декомпозировать любую сложную бизнес-логику (например, сложные формы).
    3. Множественные наследование и полиморфизм — дают все преимущества ООП, основным из которых является все та же декомпозиция (а значит и модульность). Отметим, что полиморфизм в какой-то степени являются частным случаям расширений (то есть они «расширяют» существующее абстрактное свойство / действие, добавлением к нему новых реализаций).
    4. Отказ от инкапсуляции и акцент на данных, а не объектах (это уже упоминалось в самом первом разделе). Впрочем, тут конечно важно не отсутствие синтаксического сахара в виде this, а то, что классы в lsFusion получаются по сути открытыми, то есть опять-таки «расширяемыми».
    5. Метапрограммирование — позволяет осуществлять шаблонизацию кода, тем самым значительно уменьшая его дублирование, а значит опять-таки (пусть и косвенно) повышая модульность создаваемых решений

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


    Соответственно, большинство «коробочных» решений на lsFusion — это набор из сотен (или даже тысяч) микромодулей, из которых можно выбирать любые подмножества, которые необходимы в конкретном проекте. Причем разрезы можно делать как вертикально (скажем включать в проект модуль Продаж, и не включать модуль Розничной торговли), так и горизонтально (то есть взять только базовую логику из каждого модуля и не включать в проект сложный узкоспециализированный функционал).


    Ставка на визуальное программирование


    В предыдущей статье были подробно расписаны все недостатки ВП, и скорее всего, именно поэтому подход Everything as code стал золотым стандартом в мире современной разработки. Именно такой подход используется и в lsFusion.


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


    Фатальный недостаток


    Вообще, проблема переписывания всего, что только можно, — это проблема не только 1С, но и многих других ERP-платформ. Обусловлено это, видимо, историческим наследием, и имеет как минимум две проблемы:


    1. Невозможность использования уже существующей базы знаний.
    2. Это очень трудозатратно, и получившиеся в итоге компоненты платформы все равно будут значительно уступать компонентам, созданным компаниями, которые специализируются на разработке именно этих компонент.

    В lsFusion используется другой подход: если можно использовать что-то готовое, лучше использовать что-то готовое. В крайнем случае использовать что-то с максимально высоким уровнем абстрагирования и сверху достроить то, чего не хватает.


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


      Но естественно, поддержка языка lsFusion делалась не с нуля — для создания серверных парсера и лексера в lsFusion используется ANTLR, для того же самого в IDEA используется Grammar-Kit (парсер), JFlex (лексер).

    2. UI. Для реализации десктоп-клиента используется Java SE (Swing, Web Start), что позволило получить поддержку сразу всех ОС, а также обновление и установку клиентского приложения прямо из коробки. Впрочем, как уже говорилось в одной из предыдущих статей, основным клиентом в текущей и следующих версиях будет веб-клиент, поэтому подробно на особенностях реализации десктоп-клиента останавливаться не будем.


      Для реализации веб-клиента в lsFusion используется:

      • GWT — позволяет использовать Java и на сервере(ах), и на клиенте. Плюс, что, наверное, все же более важно, GWT позволяет разрабатывать клиента на типизированном языке с полиморфизмом и наследованием, без чего разработка столь функционального и одновременно быстрого клиента была бы гораздо сложнее. Кроме того GWT имеет достаточно бесшовную интеграцию с JavaScript, и соответственно позволил нам использовать огромное количество существующих JavaScript библиотек


        Тут многие могут заметить, что GWT уже полумертв, и сейчас использование того же TypeScript было бы логично. Но:


        а) при начале разработки веб-клиента TypeScript ещё только-только появился;


        б) разработчик на lsFusion напрямую с GWT не сталкивается, поэтому его наличие в структуре ни на что не влияет, и при необходимости клиентскую часть всегда можно перевести на любую другую технологию.


        Но когда-нибудь миграция на TypeScript, я думаю, все же случится.

      • Full Calendar, Leaflet — используются для поддержки “нестандартных” представлений списков (календаря и карты).
      • Spring Security, MVC, DI — используются для задач аутентификации, управления сессиями, а также инициализации серверов (веб, приложений).
    3. BI — для задач “внутренней” аналитики в lsFusion используется представление “сводная таблица”. Для реализации этого представления используются:

      • pivot-table, subtotal — для пользовательской настройки BI, отрисовки таблиц (в том числе с подитогами),
      • plotly — для отрисовки графиков и диаграмм,
      • tableToExcel — для выгрузки сводных таблиц в Excel (с сохранением форматирования, collapsible рядов и т.п.).

      Тут стоит отметить, что первая и третья библиотеки достаточно серьезно доработаны (во всяком случае, первая), но в этом и заключается сила open-source, если что-то в технологии не устраивает — разработчик всегда может сам изменить технологию под свои нужды.

    4. Печатные формы. Для работы с печатными формами в lsFusion используется одна из самых популярных технологий в этой области — JasperReports.


      Тут стоит отметить вот какую особенность. В 1С по непонятным причинам технология работы с печатными формами объединена с инструментами аналитики, что, на мой взгляд, достаточно странно, так как:


      а) если группировки и колонки постоянно изменяются, дизайн по определению является динамичным и, скажем, уместить его в А4 или просто сделать красивым весьма непросто;


      б) аналитические инструменты требуют определенную “ячеистость”, что с другой стороны усложняет построение pixel-perfect печатных форм.


      В lsFusion используется другой подход: инструменты аналитики объединены с обычными таблицами (используют те же renderer’ы, стили, события и т. п.), а печатные формы являются отдельным механизмом. Соответственно BI обладает интерактивностью обычных таблиц (переход по ссылке, детализация и т. п.), а печатные формы используются в основном для печати документов и периодичной отчетности (с минимальной кастомизацией).

    5. IDE. Когда мы начинали разработку плагина для IDE, IDEA ещё не была настолько популярна (Eclipse был существенно популярнее), поэтому выбирая IDEA мы изрядно рисковали. Ирония, но несмотря на меньшее сообщество, найти материал по разработке своего языка под IDEA оказалось проще, да и ее архитектура выглядела существенно более продуманно. Сейчас IDEA (а точнее IntelliJ Platform) практически без сомнения лидер на рынке IDE, обладает огромным количеством возможностей, практически все из которых поддерживаются при работе с lsFusion (либо из коробки, либо благодаря реализации необходимых доработок в lsFusion плагине). Плюс stub index’ы, chameleon element'ы и многое другое позволяет обеспечить высокую производительность практически на любых объемах lsFusion кода (скажем, у меня в агрегированном проекте десятки проектов достаточно высокой сложности с сотнями тысяч строк кода, и все работает очень быстро).
    6. Система контроля версий. Everything as code позволяет использовать любую из существующих систем контроля версий, самой популярной из которых, безусловно, является Git. Впрочем, на некоторых проектах с непрерывной поставкой без крупных функциональных веток можно спокойно использовать тот же Subversion (что, например, мы и делаем на некоторых проектах).
    7. Система управления зависимости / сборки. Опять таки EaC позволяет использовать существующие системы управления зависимости / сборки в Java, наиболее распространенной из которых является Maven (так центральный репозиторий для lsFusion поддерживается на repo.lsfusion.org).


      Чтобы подключить сервер в Maven-проект достаточно в pom.xml добавить следующие строки:


      <repositories>
              <repository>
                  <id>lsfusion</id>
                  <name>lsFusion Public Repository</name>
                  <url>http://repo.lsfusion.org</url>
              </repository>
      </repositories>
      

      Что еще важнее, через Maven очень легко подключать сторонние серверные Java библиотеки. Например, если нам надо решить СЛАУ, просто находим соответствующую библиотеку в центральном Maven репозитории, добавляем в pom.xml.


      <dependency>
              <groupId>org.apache.commons</groupId>
              <artifactId>commons-math3</artifactId>
              <version>3.2</version>
      </dependency>
      

      И эту зависимость автоматически подключат и IDE, и сервера сборки.

    8. Сервера приложений и БД. Для работы с серверами БД используется JDBC, при этом все проблемы с производительностью / соответствием спецификации решаются именно родными средствами СУБД. То есть никаких пропатченных версий Postgres не требуется (которых может не быть в центральных репозиториях Docker, yum и т.п.)


      Также сервер приложений использует несколько компонент Java Spring, что значительно упростило реализацию процессов инициализации и настройки сервера приложений и сделало эти процессы более стандартизированными.



    Неуважительные по отношению к разработчикам лицензирование и брендирование


    Как уже упоминалось выше, lsFusion распространяется под лицензией LGPL v3.0, которая позволяет все что угодно, кроме, разве что, создания коммерческой версии lsFusion и ее дальнейшей продажи. Соответственно, для разработчика платформа lsFusion не более чем инструмент для решения его задач, а не манна небесная, на которую он должен молиться и с которой его должны ассоциировать. Как следствие, основной ценностью в экосистеме lsFusion является не платформа как таковая, а решения на этой платформе, и что, возможно даже более важно, компетенции людей / компаний их дорабатывающих, внедряющих и поддерживающих. Почему именно такие акценты актуальны в современном ИТ-мире? Дело в том, что большинство бизнесов сейчас уже «как-то» автоматизировано, и, соответственно, основной вопрос заключается как раз в качестве этой автоматизации — ее глубине, гибкости и соответствии существующим бизнес-процессам. А обеспечение всех этих требований требует как хорошо спроектированных модульных специализированных решений, так и умение быстро и качественно дорабатывать эти решения прямо на лету (так как, как правило, в крупных проектах внедрение сначала идет «as is», а только потом «to be»). Соответственно грести все компании, использующие платформу, под одну гребенку, превращая их во «франчей», в конечном итоге, не выгодно никому:


    • ни самим компаниям — так как все компании обезличиваются, а значит нет смысла работать над качеством и маржинальностью, главное чтобы было дешевле. Соответственно все франчи превращаются в «продажников», которым все равно что продавать — запчасти или софт.
    • ни их заказчикам — так как в большинстве случаев им приходится работать с пузырем, соломинкой и лаптем

    Другое дело, что некий общий каталог решений на lsFusion все равно может быть полезен (опять-таки и людям / компаниям использующим lsFusion, и их заказчикам), и такой каталог безусловно появится (хотя, наверное, все же в среднесрочной перспективе).


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


    Ну и еще один важный момент. Как отмечалось выше, качество платформы критично прежде всего либо в крупных проектах (где бизнес-процессы как правило более сложные и уникальные), либо в узкоспециализированных решениях (где сам бизнес достаточно уникальный / редкий). В типовых решениях для малого и среднего бизнеса (особенно не сильно притязательных в плане IT) ценность платформы, как впрочем и самого решения, зачастую не очень высоки, поэтому сама логика рынка подсказывала сделать такие решения такими же бесплатными и открытыми (как сама платформа). Что мы собственно и сделали с решением MyCompany. Более того это решение выпускается даже под более свободной лицензией, чем сама платформа, что дает возможность сторонним разработчикам создавать на его основе свои специализированные решения, и, что еще более важно, дает возможность их продавать, тем самым зарабатывая на лицензиях.


    Заключение


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


    1. В современном мире бизнес-приложений реальный экономический эффект могут дать только очень гибкие решения (быстро меняющиеся вместе с компанией), плюс, обладающие очень высокой глубиной автоматизации / кастомизации. И тут уже платформа выходит на первый план.
    2. Глобальная цифровизация всех каналов общения привела к тому, что многие, даже очень сложные, проекты разрабатываются и внедряются практически полностью онлайн (с буквально единичными очными встречами с заказчиком, более того, часто у самого заказчика все коммуникации внутри осуществляются исключительно онлайн). Как следствие, необходимость иметь физическое присутствие во всех регионах, где представлен заказчик, если не отпала, то стала гораздо менее острой. Соответственно, уже нет такой большой разницы между существованием 30 или 3000 поставщиков решения, на первый план опять-таки выходят уже другие факторы.

    Ну и наконец, хотелось отметить, что это ещё не все. В процессе подготовки и обсуждения первой статьи выяснилось ещё как минимум несколько важных пунктов, где lsFusion если не лучше, то уж точно сильно отличается от 1С и других существующих на рынке ERP-платформ.


    Так, среди таких пунктов можно вспомнить:

    Существенный оверхед при работе с «большими» объектами (например документами)


    Большие документы (скажем больше, чем на тысячу строк) читаются в память целиком, даже если в них необходимо просмотреть / изменить одну строку.


    Ограниченность пользовательских настроек


    Пользователь по факту может вытягивать данные только по ссылкам на объекты (то есть из справочников), достать данные из регистров, табличных частей, выполнить какие-то базовые группировки и т. п. пользователь не может. То есть настройка пользователем очень примитивная.


    Невозможность одновременной работы с объектами (по аналогии например с Google docs)


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


    Неудобная работа с динамическим количеством колонок


    А именно в том случае, когда отображение колонок зависит от данных формы (и соответственно количество колонок может изменяться). Еще более непонятно, как это все увязывать с динамическими списками.


    Отсутствие мгновенного контроля ссылочной целостности при удалении


    В 1С, есть либо мгновенное удаление без контроля ссылочной целостности, либо удаление через пометку удаления с контролем ссылочной целостности. Проблема первого подхода понятна (собственно само отсутствие контроля), а проблема второго подхода заключается в том, что чаще всего именно пользователь, который удаляет объект, ответственен за то, что делать со ссылками на этот объект (то есть заменить ссылку на другой объект или удалить связанные объекты). Соответственно разнося процесс удаления во времени, возникает сразу много вопросов:


    1. Пользователь может просто забыть, почему удалял тот или иной объект.
    2. Администратор, который по идее должен выполнять процесс удаления, может быть вообще не в курсе, что делать с возникающими «битыми ссылками» (по сути ему придется искать пользователей, которые удаляли эти объекты и спрашивать у них).

    Неочевидные / неэргономичные интерфейсы для выполнения многих базовых действий


    Например:


    • Настройка группировок — настройка через списки, вместо интуитивных drag-drop интерфейсов.
    • Групповое изменение данных — вообще не WYSIWYG операция, а находится где-то в администрировании (часть БСП как я понял).
    • Фильтрация — если скажем необходимо отфильтровать все записи с текущим полем > заданного значения (закопана в Еще -> Настроить список, где необходимо найти нужную колонку и сделать еще несколько нажатий).
    • Подсчет количества записей, суммы по колонке — честно говоря так и не нашел где это делается (но может просто плохо искал)

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


    Невозможность прозрачной подмены представлений списков / свойств


    Прозрачно заменить представление в 1С не может:


    • ни пользователь — например, просто нажав соответствующую кнопку (как, например, в Odoo или lsFusion)
    • ни даже разработчик — декларативно выбрав для отображения данных другой renderer, отличный от таблицы / поля, например, карту, «спидометр» или вообще любую js-функцию (причем так, чтобы обновлением данных продолжала заниматься сама платформа).

    Ограниченность ряда абстракций (которые являются частными случаями)


    Например, если необходимо:


    • организовать табличные части в табличных частях
    • реализовать классификатор на дату
    • реализовать несколько классификаторов (с выбором их пользователем)
    • организовать цепочку статусов документов (а не просто проведен / не проведен)
    • и т.п.

    Конечно все эти задачи в 1С «как-то» можно решить, но при этом придется отказаться от предлагаемых 1С абстракций / паттернов проектирования, которые в описанных случаях будут не то что помогать, а даже немного мешать.



    Соответственно, в ближайшем будущем скорее всего выйдет вторая часть статьи «Почему не 1С», но она с большой вероятностью сразу будет в формате сравнения — как что-то делается в 1С и как это же делается в lsFusion (то есть это будет скорее вторая часть этой статьи, а не предыдущей). Благо, так как у нас в команде появились бывшие 1С-разработчики с большим опытом, писать эту статью будет существенно проще.


    lsFusion
    Не очередной язык программирования

    Comments 362

      +1
      Вроде очевидно почему не 1С нет?
      1С — устаревшая пародия на ЯП, которая используется 3 странами в мире и которую стоило уничтожить еще при создании.
        0
        1С — устаревшая пародия на ЯП, которая используется 3 странами в мире и которую стоило уничтожить еще при создании.

        Ну я бы не был настолько категоричен, некоторые неплохие идеи у них есть. Другое дело, что на мой взгляд развивалась 1С очень хаотично, как следствие накопился огромный технический долг. Соответственно, сейчас бы им полностью снести и разработать все заново с учетом накопленного опыта и ошибок, но огромное legacy и клиентская база на постсоветском пространстве им явно не даст это сделать.
          0
          Четвертьвековая история — это всё-таки не только недостаток, но и мощное конкурентное преимущество. Это огромная пользовательская база, причём бизнес-пользователей, которые не особо любят менять знакомый им софт на незнакомый. Это огромное количество готовых отраслевых решений, которые можно просто взять и использовать. Это налаженная сеть сбыта и поддержки, оперативное отслеживание изменений в законодательствах стран, и соответственно регулярный выход обновлений локализованных конфигураций и т.д.
          К слову, последнее — вообще киллер-фича, которая для большинства клиентов намного важнее, чем все преимущества, указанные в вашей статье, вместе взятые.
            0
            Четвертьвековая история — это всё-таки не только недостаток, но и мощное конкурентное преимущество. Это огромная пользовательская база, причём бизнес-пользователей, которые не особо любят менять знакомый им софт на незнакомый. Это огромное количество готовых отраслевых решений, которые можно просто взять и использовать. Это налаженная сеть сбыта и поддержки, оперативное отслеживание изменений в законодательствах стран, и соответственно регулярный выход обновлений локализованных конфигураций и т.д.

            Для бизнеса 1С — это безусловно преимущества. Для развития — это скорее ограничение. Вспомните Kodak, Nokia, Ford (не знаю кто тогда был лидер на рынке лошадей :) ), автогигантов да и вообще любую инновацию на рынке. Там все тоже самое было, понятно что и сети заправок, продаж, сервиса (ремонтов) везде первоначально были на несколько порядков лучше у текущих игроков. Но в этом и фокус, что если ты фундаментально отстаешь, вопрос времени когда ты проиграешь. Пусть не через год, и не через 10 или 20 лет, но проиграешь. Вон сейчас автогиганты пытаются гнаться за Tesla, понятно что они не умрут совсем, но догонят вряд ли. Собственно в том числе поэтому, сейчас Tesla оценивается как все остальные автопроизводители вместе взятые.
              0
              Тесла делает автомобили которые имеют все функции доступные другим автомобилям, плюс свою фишки. Человек при покупке теслы ничего не теряет, а только приобретает. Ваше решение пока такими свойствами не балует.
              Предвосхищая ответ, что не все сразу делается, скажу что тесла смогла делать и продавать такие автомобили не благодаря тому что они такие хорошие и в неё поверили. В неё до сих пор просто вкладывают огромные деньги.
              Вывод: Свергнуть монополиста можно только получив ресурсы соизмеримые с ним. Потихоньку это не сделать.
                0
                Человек при покупке теслы ничего не теряет, а только приобретает.

                Человек владеющий теслой теряет возможность чинить её самостоятельно, даже в стороннем сервисе. Причем во многом из-за 'инновационной' политики самой теслы
                  0
                  Человек владеющий теслой теряет возможность чинить её самостоятельно, даже в стороннем сервисе.

                  Почему теряет? Теслы вполне себе ремонтируют, даже убитые в хлам:
                  www.youtube.com/watch?v=xJr5LRNq0fI
                    0
                    1) с полной потерей гарантии, без которой тесла мало кому нужный кусок железа
                    2) запчасти не продаются простым смертным

                    понятно что их ремонтируют из бу запчастей… но это такое себе… я на свой 20 летний рыдван без проблем могу купить практически любую новую деталь, причем 'родную', а не китайский клон, а на 5 летнюю теслу?
                      0
                      1) с полной потерей гарантии, без которой тесла мало кому нужный кусок железа

                      Хм. Вы точно так же потеряете гарантию, если поедете на неофициальную СТО на любом другом автомобиле. Я правда не совсем понимаю, чем потеря гарантии на Теслу отличается от потери гарантии на другие автомобили. Тесла без свежих прошивок хуже ездить станет, что ли?
                      2) запчасти не продаются простым смертным

                      Эм… с чего вы взяли? Я погуглил, вполне себе продаются, и новые, и б/у. Другой вопрос, что доступность так себе, но так и автомобиль нифига не распространённый. И «китайских клонов» пока что нет, что может быть даже недостатком, учитывая конские цены на оригиналы.
                        0
                        Эм… с чего вы взяли? Я погуглил, вполне себе продаются, и новые, и б/у

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

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

                        сейчас я на своем 20-летнем крайслере могу приехат к официалам и сделать что угодно, заплатив правда адскую стоимость… но всёже. с теслой меня просто пошлют (насколько я понимаю их реалии с гарантией)

                        учитывая конские цены на оригиналы.

                        потому что их в черную продают
                          0
                          помоему писали что тесла не продает запчасти на авто на сторону, в принципе

                          Она продаёт их своим авторизованным партнёрам, а те вольны делать что угодно — использовать у себя, или продавать в розницу. В данном случае не идёт речь о том, что Тесла специально запрещает ремонтировать её автомобили третьим сторонам. У неё банально не хватает ресурсов обеспечить весь спрос :)
                            0
                            (насколько я понимаю их реалии с гарантией)

                            Что-то вы их как-то криво понимаете, не так как все остальные. По-гарантии сделают забесплатно. Нет гарантии — сделают за деньги.
                    0
                    Тесла делает автомобили которые имеют все функции доступные другим автомобилям, плюс свою фишки. Человек при покупке теслы ничего не теряет, а только приобретает. Ваше решение пока такими свойствами не балует.

                    Что значит ничего не теряет? Там тоже курица — яйцо было, когда например количество заправок измерялось десятками, против миллиона ДВС'ых, тоже самое касается сервисов / продаж и всего остального. Не говоря уже о том, что вы салон Тесла видели? Минимализм в чистом виде. Да и с надежностью по слухам там ерунда была (двери не закрывались). Но у них была главная вещь, фундаментально другая машина, с фундаментально другими характеристиками (например скорость разгона, шум, управляемость экологичность). Этого как правило достаточно, все остальное вопрос времени.
                    Предвосхищая ответ, что не все сразу делается, скажу что тесла смогла делать и продавать такие автомобили не благодаря тому что они такие хорошие и в неё поверили. В неё до сих пор просто вкладывают огромные деньги.

                    Вы причину со следствием путаете. Они смогли продавать такие автомобили, потому как сделали принципиально другой автомобиль, все остальное вторично (точнее следует из этого). Сделали бы они очередной ДВС никакие бы огромные деньги им не помогли. У Apple кстати тоже в свое время ресурсов было гораздо меньше чем у Nokia ЕМНИП. Да и Tesla начала относительно крупные инвестиции начала привлекать через семь лет и это в США (мекке инноваций и стартапов).

                    Ну и никто не спорит, что в какой то момент действительно практически всегда нужно привлекать ресурсы, но фаза Proof-of-concept и другие также очень важны, так как в это время ты максимально мобилен / пластичен и не «страдаешь» от кризиса роста.
                      0
                      Они смогли продавать такие автомобили, потому как сделали принципиально другой автомобиль

                      Вот это и есть заблуждение.
                      Чтобы продать автомобиль его нужно сделать. Если вы можете делать супер автомобили, но только 10 шт. в год, никакого лидерства вам не увидеть, даже если это супер автомобиль. Как пример печальный опыт DeLorean. Если бы денег в теслу не вложили, не было бы достаточного количество «зарядок», не было бы завода про производству нужного количества батарей. У теслы это все получилось только за счет очень активного «владельца». И деньги он вкладывал заработанные на совсем других вещах.
                      А Proof-of-concept вы уже показали, даже не только концепт, но и работающий бизнес уже есть.
                        0
                        Чтобы продать автомобиль его нужно сделать. Если вы можете делать супер автомобили, но только 10 шт. в год, никакого лидерства вам не увидеть, даже если это супер автомобиль. Как пример печальный опыт DeLorean. Если бы денег в теслу не вложили, не было бы достаточного количество «зарядок», не было бы завода про производству нужного количества батарей.

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

                        Я не очень досконально изучал, как тесла удалось сделать автомобиль с пробегом в 400км на одной зарядке и с OPEX'ами в 120к (CAPEX'ы при таком громадном рынке и текущей стоимости денег не так важны) или около того. Но когда это стало осязаемым, дальше успех Тесла на мой взгляд был вопросом времени (но нет, я в них не вложился в свое время, так что это рассуждения в стиле «как моя жена после»).

                        Ну и работающий бизнес в определенной степени пока «внутренний» (в смысле indoor), сейчас главный вопрос как его (и можно ли) масштабировать «внешне» (outdoor) и это тоже своего рода Proof-of-Concept. Хотя конечно иметь при этом стабильный cash flow (даже с запасом), возможность для обкатки идей и т.п. безусловно приятный бонус, и позволяет не сильно переживать по поводу взлетит или не взлетит.
                    0
                    Вспомните Kodak, Nokia, Ford (не знаю кто тогда был лидер на рынке лошадей :)

                    Проблемы-то у них возникли не из-за груза накопленного опыта, а из-за грубых управленческих ошибок. Kodak сдохла, ненадолго пережив рынок фотоплёнок, а её прямой конкурент на том же рынке (кто-то помнит про Fujifilm?) с тех пор вырос раза в два, расширив ассортимент своих плёнок и найдя им новые применения. Nokia сдохла, а Самсунг только вырос.
                    Это как бы ни о чём конкретном не говорит, просто о том, что успех/поражение 1С лежит в другой плоскости, отнюдь не технологической. Покупать бизнес-приложения будут не ИТ-шники, а менеджеры. И смотреть они будут не на то, какая там внутри красивая объектная архитектура, и как эффективно работает внутренний ORM, а на то, насколько система соответствует текущим потребностями бизнеса «из коробки», насколько она понятна пользователям, какие риски внедрения и т.д.
                      0
                      Проблемы-то у них возникли не из-за груза накопленного опыта, а из-за грубых управленческих ошибок.

                      Это проблема всех корпораций. По факту все инновации идут за их пределами, так как корпорации слишком инертные. Да и им проще потом купить выскочек, чем самим делать (хотя понятно, что с гуглом, фейсбуком, теслой это например не прокатило, а скажем с инстаграммом или ютюбом прокатило).
                      И смотреть они будут не на то, какая там внутри красивая объектная архитектура, и как эффективно работает внутренний ORM, а на то, насколько система соответствует текущим потребностями бизнеса «из коробки», насколько она понятна пользователям, какие риски внедрения и т.д.

                      Так и в тесле люди не на двигатель (под капот) смотрят, но именно двигатель дает тесле преимущества, с которыми ни один ДВС не может соревноваться (хотя повторюсь мало кто из пользователей знает что под капотом).
                        0
                        но именно двигатель дает тесле преимущества, с которыми ни один ДВС не может соревноваться

                        Именно так. Но в случае бизнес-софта, его двигатель — не «программный движок», а функционал, известность, саппорт и доступность специалистов на рынке.
                          0
                          Это с чего вдруг? Функционал, известность, саппорт и доступность специалистов на рынке это кузов / салон авто, бренд, СТО, заправки и наличие механиков. А двигатель это как раз платформа.

                          То есть с теслой тоже самое было. Где вы ее заправлять будете, где чинить, вы же за город выедете и встанете, она сырая и все такое. Но как обычно инноваторы, early adopter'ы и пошло поехало. Но конечно они это на самой благодатной почве делали — в Калифорнии. В Омске им бы конечно посложнее было :)
                            0
                            Это с чего вдруг? Функционал, известность, саппорт и доступность специалистов на рынке это кузов / салон авто, бренд, СТО, заправки и наличие механиков. А двигатель это как раз платформа.

                            Это всё образно, конечно, но «двигатель» — то, что решает задачи. У автомобиля задача перевозить пассажиров/грузы. У бизнес-софта задача автоматизировать работу предприятий. Поэтому у автомобиля двигатель вот та штука, которая крутит колёса, у бизнес-софта двигатель — формочки и люди. Красивая внутренняя объектная модель, с которой сталкиваются только программисты, в мире автомобилей — это удобная компоновка подкапотного пространства для быстрого обслуживания. Да, автомеханики такое одобряют, но согласитесь, эта штука крайне слабо влияет на конкурентоспособность той или иной машины на рынке.
                            Так же и с софтом. Вы вполне успешно продадите такое:
                            «Наша система позволяет вести партионный учёт, считает себестоимость по FIFO, LIFO, по среднему, умеет вести SKU, интегрируется с… » и так далее.
                            Но вы никому, кроме небольшой горстки контор, в которых ИТ-директор напрямую лезет в коммерческие вопросы, не продадите: «Наша система имеет эффективный ORM, модульную архитектуру...»
                            То есть с теслой тоже самое было. Где вы ее заправлять будете, где чинить

                            С Теслой было не то же самое. Выходя на рынок, они вкинули кучу денег, решив вопросы «где заправлять» и «где чинить».
                              0
                              Так же и с софтом. Вы вполне успешно продадите такое:
                              «Наша система позволяет вести партионный учёт, считает себестоимость по FIFO, LIFO, по среднему, умеет вести SKU, интегрируется с… » и так далее.

                              Все зависит от того, что именно считать продуктом на этом рынке. Время «коробок» ушло на постсоветском рынке (и продолжает уходить). Сейчас ИТ-решения это не более чем полуфабрикат (или конструктор), основное в них не то, что есть там изначально (это всего лишь средство, один из факторов), а как это решение можно адаптировать под конкретного заказчика, внедрить в нем все его know how, сделать это бесшовно без рисков остановки бизнеса, а главное чтобы решение постоянно изменялось вместе с бизнесом, адаптируясь под новые идеи и пути развития бизнеса. На западе рынок давно пришел к этому («САП невозможно внедрить, его можно перестать внедрять»), и на постсовестком рынке последние лет 5 тоже (собствено у всех уже как-то что-то автоматизировано, а рынок экстенсивно не растет).

                              Соответственно в такой парадигме двигатель это именно платформа, то есть то насколько решение будет гибким, модульным и быстро и легко дорабатываться без накопления технического долга.
                              С Теслой было не то же самое. Выходя на рынок, они вкинули кучу денег, решив вопросы «где заправлять» и «где чинить».

                              Ну тут мне кажется перепутано причина со следствием, это было одновременно (сначала люди не знали где заправлять и чинить, но все равно покупали из-за инноваций), но постепенно появилось и то и другое. То есть не то что Тесла сначала настроило миллион заправок и обучила миллион техников, а только потом смогла продавать.
                                0
                                Время «коробок» ушло на постсоветском рынке (и продолжает уходить). Сейчас ИТ-решения это не более чем полуфабрикат (или конструктор), основное в них не то, что есть там изначально (это всего лишь средство, один из факторов),

                                Нет, как раз наоборот. Коробки потеснились (и будут дальше тесниться) онлайн-сервисами, а покупки бессрочных лицензий потеснились подписками. Но спрос на готовые решения только растёт, а спрос на кастомизацию наоборот, падает. Кастомизация — это потребность среднего и крупного бизнеса. 99% остальных заказчиков покрывают все свои потребности типовыми конфигурациями.
                                То есть не то что Тесла сначала настроило миллион заправок и обучила миллион техников

                                Они это начали делать одновременно. Ну т.е. первые пользователи Теслы уже имели доступ и к заправкам, и к обслуживанию. Впрочем, с точки зрения маркетинга, действительно первая небольшая волна пользователей-«визионеров» вполне могут потерпеть некоторые недостатки ради общей технологичности продукта. Но съем сливок с продаж происходит отнюдь не от этой волны.
                                  0
                                  Нет, как раз наоборот. Коробки потеснились (и будут дальше тесниться) онлайн-сервисами, а покупки бессрочных лицензий потеснились подписками. Но спрос на готовые решения только растёт, а спрос на кастомизацию наоборот, падает. Кастомизация — это потребность среднего и крупного бизнеса. 99% остальных заказчиков покрывают все свои потребности типовыми конфигурациями.

                                  Теперь совсем запутался. То что ниша ИТ-решений малого (!) бизнеса постепенно замещается в основном онлайн-сервисами с этим никто не спорит. Но это не про ERP-платформы (и ни про 1С, Dynamics, ни про lsFusion) вообще. В онлайн сервисах не важны ни разработчики (так как нет кастомизации) ни франчи (так как продажи собственно идут онлайн через соотвествующие каналы). Тут важнее интуитивность полученного продукта (material design, документированность причем прямо внутри продукта, то есть всякие подсказки и т.п.), А ИТ-решение для среднего и крупного бизнеса сейчас это именно и только про кастомизацию.

                                  Плюс важный момент- то что во всяком случае на постсоветском пространстве бизнес консолидируется (вертикально — федерально и / или регионально и горизонтально — когда сети например начинают и производством и оптовой и интернет торговлей заниматься) и соответственно все смещается в сторону среднего и крупного бизнеса. А значит спрос на готовые решения наоборот скорее падает, и это очень кстати хорошо видно, если посмотреть по ЕГРЮЛ обороты поставщиков именно коробочного софта в разных нишах.

                                  К слову например если взять белорусский рынок, то скажем в ИТ для банковской сферы есть две компании обороты и количество сотрудников, которых превышает обороты и количество всех 1С франчайзеров вместе взятых. А эти компании только и занимаются что «кастомизацией».
                                  Они это начали делать одновременно. Ну т.е. первые пользователи Теслы уже имели доступ и к заправкам, и к обслуживанию

                                  Ага только по сравнению с ДВС там выбор был ультраограниченный.
                                  Но съем сливок с продаж происходит отнюдь не от этой волны.

                                  Ну это как бы очевидно, но не понятно какое отношение имеет к тому, о чем мы разговариваем.
                                    0
                                    В онлайн сервисах не важны ни разработчики (так как нет кастомизации) ни франчи (так как продажи собственно идут онлайн через соотвественно).

                                    Ваши представления об онлайн сервисах устарели. Например, QuikBooks Online, Xero, 1С Fresh предлагаю возможность покупки дополнительных модулей и расширений от партнеров и заказную разработку этих модулей.
                                      0
                                      Ваши представления об онлайн сервисах устарели. Например, QuikBooks Online, Xero, 1С Fresh предлагаю возможность покупки дополнительных модулей и расширений от партнеров и заказную разработку этих модулей.

                                      Я в курсе, но это уже тогда PaaS'ы (то есть по сути хостинг) и к классическим онлайн-сервисам имеют опосредованное отношение. И явно не то что автор того, на что я отвечал, имел ввиду.
                                        0
                                        Не согласен, это все же именно SaaS. Просто вопрос кастомизации SaaS решений многие ставят в приоритет и для той же 1С это одна из ключевых вещей. Поэтому технология расширений у них развивается очень быстро сейчас.
                                          0
                                          Подождите, важная часть SaaS это multi-tenancy, а если есть доработки (где с multi-tenancy очень много вопрос), то это чистый PaaS и скорее ближе к хостингу. Ну и собственно весь смысл в SaaS это отсутствии тесного контакта с клиентом (в том числе, например, за счет интуитивности интерфейсов и всяческих подсказок), а доработки это как раз классическая модель рынка бизнес-приложений.

                                          И как бы 1С не развивали технологию расширений, но когда все сделано на SQL запросах, но при этом жестко императивно в строках без оптимизатора, когда нет полиморфизма, эти расширения по определению будут очень ограниченными (собственно такая проблема с модульностью яркий тому пример). Уж точно далеко для подходов используемых в lsFusion.
                                            0
                                            Ну, вот тут вам стоит изучить тему расширений в 1С. Ранее это была возможность катамизировать только код и формочки в multi-tenancy, сейчас же уже можно добавлять новые таблицы (справочники, документы, регистры), добавлять реквизиты и табличные части к существующим документам и справочникам. И все это платформа 1С автоматически обрабатывает на уровне СУБД (создает поля, таблицы и т.д.) в зависимости от подключенных расширений. А их может быть десятки.

                                            Так же магазин расширений и аддонов для учетной SaaS системы это по сути must-have. Без этого конкурировать с Intuit и Xero нет шансов на том же рынке США.

                                            А проблема с модульностью — это проблема на уровне методологии самих продуктов (БП, ЗУП, ERP), разработанных на платформе 1С. Компания пытается как-то двигаться в эту сторону, но слишком уж ресурсоемко это.
                                              0
                                              Я знаю что такое расширения и упоминал несколько раз в своих статьях.

                                              Нужно понимать, что:
                                              а) во-первых, расширения это частный случай модульности, когда у вас основное решение — один модуль, а расширение — еще один модуль зависящий от этого модуля. Поэтому в идеальной системе должна быть не только возможность добавлять свои модули, но и выключать существующие модули и / или выбирать между ними.
                                              б) в императивных языках возможности расширений очень ограничены (тут я писал об этом). Критически важно уметь расширять запросы, иметь событийную архитектуру, полиморфизм и т.п. (вот тут я приводил примеры этой проблематики и человек мне так ничего и не ответил на них)

                                              И если бы вы чуть больше погрузились в lsFusion, то поняли бы что в плане расширений / модульности lsFusion превосходит существующие технологии на порядок. Впрочем, естественно, никто не мешает вам «подождать на берегу», пока время подтвердит или опровергнет этот тезис :)
                                                0
                                                Я и не утверждаю, что главная цель расширений — это модульность. С их помощью, конечно, можно ее реализовать в какой-то мере, но я считаю, что главная цель расширений — это кастомизация продуктов без изменения исходного кода и в условиях multi-tenancy.
                                      0
                                      Теперь совсем запутался. То что ниша ИТ-решений малого (!) бизнеса постепенно замещается в основном онлайн-сервисами с этим никто не спорит

                                      И среднего. Малый и средний бизнес — это как раз тот рынок, на котором снимает сливки 1С и большая часть продуктов Dynamics, и там же есть шансы проявить себя и вашему продукту, если вы предложите качественные готовые решения, либо создадите хорошую команду продажников, которая будет персонализированно продвигать ваш продукт среднему бизнесу. Крупному же бизнесу вам пока предложить банально нечего.
                                      Что касается онлайна, то да, это тренд, тренд логичный и ожидаемый. Собственно, не зря Dynamics прочно ушёл в облако, и 1С движется туда же.
                                        0
                                        А средний бизнес это какой? Вот у нас сейчас основные клиенты это компании с 4-10к сотрудников и 200-500 млнов долларов в год оборотами. И основное что мы им продаем это как раз то что я писал в этом комментарии. То есть набор модулей из которых собирается решение, но что главное непрерывную реализацию всех хотелок с космической скоростью без накапливания технического долга (собственно у нас по сути на этом рынке в этом плане непонятно кто вообще конкуренты, потому как вести столько проектов одновременно в agile практически никто не может). Сейчас у нас процентов 70 крупного ритейла Беларуси и я думаю в течении ближайших 5-10 лет мы еще больше увеличим эту долю. И все это на мой взгляд именно благодаря платформе (всем этим 30 пунктам этой статьи). Это достаточно уникальное value который мало кто на рынке может предложить.

                                        А рынок готовых решений судя по оборотам в ЕГРЮЛ соответствующих компаний (и общению с ними) наоборот сильно сужается, так как большинство как-то уже автоматизированы и на самом деле по опыту единственный вариант им что-то внедрить, это: внедрить as is с непрерывной интеграцией, после чего превратить в to be из смеси а) того что есть у тебя, б) то что всегда хотел заказчик, но у него не было, в) оставить то что есть, что себя уже зарекомендовало. Ну а дальше непрерывный цикл доработок по agile в рамках новых идей / изменений бизнеса и т.п.
                                          0
                                          Стоит упомянуть, что у 1С направление розницы развито не столь сильно. В это отрасли у 1С есть крупные внедрения, но вот продукта, который мог бы стать столь же конкурентно способным, как ERP, БР и ЗУП нет. Пока нет.

                                          Так же вам на руку то, что вы начали с Белоруссии и уже имея клиентскую базу и продукт, обкатанный на ней, заходите на другие рынки.
                                    0
                                    Насколько я могу судить по работе с SMB и Eterprise, то бизнес в первую очередь ищет коробку. Желательно с возможностью быстрой и дешевой кастомизации. И только если нет коробок, удовлетворяющих потребностям бизнеса на приемлемом уровне, уже смотрят в сторону разработки кастомных решений либо силами вендоров, либо силами своего ИТ отдела. А для SMB кастомная разработка вообще недоступна в 99% случаев, у них просто нет столько денег.
                                      0
                                      А я и не говорю про «разработку кастомных решений». Я как раз говорю про ультрамодульные решения (где из модулей как из кубиков собирается каркас), а потом дорабатывается «as is», а потом непрерывно меняется под «to be» / новые направления / идеи. И в том насколько это возможно быстро и дешево делать, платформа играет важнейшую роль.

                                      Ну и вы правильно заметили, что у малого и среднего бизнеса не то что нет потребности работать по такой модели, а именно что нет денег. Но это опять таки вопрос к платформе, насколько дешевой у вас получится доработка / крупноблочная разработка на ней.
                                        0
                                        Наличие готовых модулей — это и есть коробочное решение. Не важно, сколько этих модулей — один или тысяча. Дальше стоит вопрос стоимости внедрения, сопровождения и кастомизации.
                                          0
                                          Ну не знаю, в моем понимании коробочное решение это нажал кнопку установить, потыкал пару галочек и работай. А конструктор это набор некоторых блоков, из которых ты выбираешь часть ( часть которых опять-таки приходится изменять), часть блоков разрабатываешь (ЕМНИП даже САП утверждает, что у них пропорция где-то процентов 60-70 готовых с кастомизацией глубиной процентов 30 + 30-40 абсолютно новых). Но если доработка / добавление подвержены сильному техническому долгу (а это определяется платформой), то даже если у вас и 90 процентов готовых модулей, то в конечном итоге может быть дешевле вообще все с нуля сделать.
                                            0
                                            Коробочное решение — это именно готовый продукт в части бизнес логики. Модульность, как уже сказал, не особо влияет на это. Можно рассмотреть решение 1С (где с модульностью откровенно беда на уровне типовых решений), SAP (где модульность довольно развита, есть десятки модулей) и ваше (где сотни модулей, по вашим заявлениям). Все это коробки. Т.е. в идеале коробка не требует кастомизация, а только настройки модулей, загрузки НСИ, обучение и в путь.
                                            Разработка своего будет дешевле коробки только в том случае, если подходящей коробки совсем уж нет. Либо собственное решение было ранее и требуется переход на коробку. Разработка любого серьезного решения для учета — это зачастую миллионы человеко-часов.
                                              0
                                              У вас почему-то две крайности получается. Либо коробка (причем без модульности у вас может быть много лишних данных и проверок, которые придется заполнять или которые просто будут убивать эргономичность), либо разработка с нуля. Хотя очевидно, что идеальное решение это крупноблочное строительство с доработкой отдельных блоков и разработкой недостающих. И модульность с возможностями рефакторинга / быстрой и простой разработки тут выходят на первый план.
                                                0
                                                Почему же две крайности? Мы обсуждаем, что есть коробочное решение. А кастомизация — это отдельный вопрос. В том или ином виде кастомизация идет, думаю, у 90% пользователей 1С, хотя бы на уровне внешнего отчета или обработки с Инфостарта.
                                                  0
                                                  Вы же понимаете, что бизнесу фиолетово коробочное решение или нет. Ему нужно решить свои проблемы (то есть получить ИТ-систему которая будет эффективно автоматизировать именно его процессы, как текущие так и будущие) быстро / дешево / с минимальными рисками. А будет это 100% коробочное решение, 60% коробочное 40% доработки, или 100% разработки, уже дело десятое. Если опять-таки устроит бизнес по срокам и стоимости (так например некоторые бизнесы готовы ждать, некоторые нет и т.п.)
                                                    0
                                                    Естественно. Любой бизнес оценивает систему с точки зрения стоимости внедрения, стоимости владения, рисков и возможности удовлетворить потребности бизнеса.

                                                    Кстати, именно по этой причине нередко даже очень большие компании используют полностью кастомную разработку именно на 1С, так как: это недорого (лицензии 1С стоят копейки, хоть и не бесплатно), учет автоматизируется очень быстро (может и не как в IsFusion, тут сравнить не могу) и, главное, рынок разработчиков 1С — это более 100 тысяч специалистов. Т.е. нет риска оказать без кадров и возможности сопровождать решение.
                                                      0
                                                      очень большие компании используют полностью кастомную разработку

                                                      Согласен, даже рынок полного custom made никто не отменял.
                                                      Т.е. нет риска оказать без кадров и возможности сопровождать решение.

                                                      Ну строго говоря для этого 100к разработчиков не надо. Одного десятка компаний сведет риск к минимальному, и на первое место выйдут уже первые два упомянутых вами фактора: качество платформы и TCO (затраты на покупку ОС, СУБД, платформу, оборудования и т.п.). Плюс важный момент — порог входа, если он очень низкий это даже может дать большие преимущества чем наличие большого количества специалистов (где их может быть много но все равно дефицит)
                                                        0
                                                        Одного десятка компаний точно не хватит. Если только вы планируете существовать на уровне пары сотен клиентов, из которых будет не более нескольких десятков действительно крупных.

                                                        Ну а про порог входа в 1С не шутит разве ленивый, именно поэтому и появилась возможность наращивать такую ораву разработчиков (что может быть несколько странным при довольном низком уровне развития самого языка).
                                                          0
                                                          Одного десятка компаний точно не хватит. Если только вы планируете существовать на уровне пары сотен клиентов, из которых будет не более нескольких десятков действительно крупных.

                                                          Да ладно. У того же SAP наверное около одного или нескольких десятков компаний в России, которые реально могут его поддерживать (а не просто значатся в списке партнеров), а если взять количество сотрудников в компаниях, которые работают на SAP, то это количество будет соизмеримо с компаниями работающими на 1С. Ну и у самого 1С, насколько я видел топ-5 франчайзеров покрывают наверное минимум 30 процентов рынка (в Беларуси так точно такая ситуация).
                                                          Ну а про порог входа в 1С не шутит разве ленивый

                                                          Ну так это в 7.7 было. И то она гораздо менее декларативна чем тот же lsFusion была. А в 8.3 с их управляемыми блокировками, РеквизитамиФормыВЗначение, &НаСервереБезКонтекста, сотней всяких избыточных абстракций и т.п., порог входа уже выше чем в .Net или условный Python (Odoo).

                                                          А возможность наращивать ораву появилось скорее из-за того что они Бух и ЗУП консолидировали. Ну и да простота и бесплатность (пиратство) 7.7. помогли.
                                                            0
                                                            Скажем, у SAP есть большая фишка — интернациональность. На РФ точно могут работать все компании СНГ (ваши земляки из EPAM тому пример), а так же из любой страны Европы. Судить о квалификации всех 40+ партнеров в РФ не могу.

                                                            По поводу количества автоматизированных рабочих мест, последнее, что я видел — это 80+% рабочих мест автоматизированы с помощью 1С.

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

                                                            Думаю, главная причина в создании такого рынка — это инфраструктура франчайзи в купе с тем, что решения 1С стали стандартом де-факто для SMB в РФ.
                                                              0
                                                              Скажем, у SAP есть большая фишка — интернациональность. На РФ точно могут работать все компании СНГ (ваши земляки из EPAM тому пример), а так же из любой страны Европы. Судить о квалификации всех 40+ партнеров в РФ не могу.

                                                              Ну по такой логике и Odoo превосходит 1С по числу разработчиков, только в РФ это им не так сильно помогает (хотя и помогает). Собственно SAP хороший пример, что на самом деле даже 40 партнеров (из которых наверное половина бутафорских) более чем достаточно.
                                                              По поводу количества автоматизированных рабочих мест, последнее, что я видел — это 80+% рабочих мест автоматизированы с помощью 1С.

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

                                                              Не совсем понял. Все типовые же сейчас на УФ, управляемых блокировках и т.п. Чтобы там что-то дорабатывать нужно понимать «кто все эти люди». Даже если речь о простеньких отчетах, тот же СКД по сложности уже превосходит любую Reporting system, так как туда намешали дикое количество функционала (той же аналитики, которая обычно идет в отдельных контурах).

                                                              То есть чтобы ковыряться в том же УТ или БУХ сейчас, нужно иметь очень неслабый уровень интеллекта и опыта, а это как бы основные (самые распространенные) продукты у 1С.
                                                              Думаю, главная причина в создании такого рынка — это инфраструктура франчайзи в купе с тем, что решения 1С стали стандартом де-факто для SMB в РФ.

                                                              Именно. Причина распространенности такая же как у SAP — «давно тут сидим» ©. Только опять-таки после какого-то уровня (на примере того же SAP) количество разработчиков уже не играет такой роли, а скорее наоборот позволяет дифференцировать себя на рынке (например, не знаю как сейчас, но раньше ABAP разработчики ценились выше 1С, потому как были более редкими).

                                                              Хотя как правильно кто-то отмечал ниже, наверное самый простой способ победить 1С, получить распостранение на мировых рынках и сыграть на «чемоданческих настроениях». Во всяком случае по опыту, сейчас так Odoo двигается на российском рынке.
                                                                0
                                                                Вы делаете слишком много домыслов. Лучше воздержаться от этого.

                                                                А у Odoo, в целом, все нормально в планетарном масштабе. Как понимаю, главная проблема — это отсутствие хорошего продукта для реалий РФ. Найдется партнер и инвестор, будет продукт. Но риски большие не пробиться на оооочень плотный рынок РФ (особенно корпоративный сектор).

                                                                По сложности. Если говорить о глобальных доработках, то, действительно, непросто разобраться в первую очередь в самих типовых. Но большая часть кастомизации — это отчетики, печатные формы, АРМ и прочие простые вещи. А СКД в большинстве случаев позволяет за 5 минут накидать очень функциональный отчет, не углубляясь в дебри всех возможностей СКД.

                                                                Ну, с распространением на мировых рынках можно только пожелать удачи :) Это будет не сильно проще СНГ и РФ.

                                                                На самом деле, у вас есть реально хороший и работающий продукт для розницы, т.е. вы заняли нишу, где у 1С нет сильной линейки продуктов, а тяжеловесы SAP, Oracle и Microsoft хоть и предлагают настоящие best-practices в своих решениях, но делают это за негуманный ценник.
                                                                  0
                                                                  Вы делаете слишком много домыслов. Лучше воздержаться от этого.

                                                                  Рынок информационных систем он такой. Ни у кого нет общей картины, все сплошные обобщения личного опыта и гипотезы (просто потому что рынок очень большой и неоднородный)
                                                                  Но большая часть кастомизации — это отчетики, печатные формы, АРМ и прочие простые вещи.

                                                                  Давайте не смешивать. Отчетики и печатные формы в любой технологии достаточно несложная вещь. Я видел как люди к коробочным решениям на Oracle сбоку подключались и лепили там отчеты на CrystalReports. Порог входа при этом очень низкий в любой технологии. Плюс не забываем про навернутые BI, где пользователи много отчетов сами могут делать.

                                                                  АРМам (а они ввод предполагают) как раз надо вот это вот все — управляемые формы, управляемые блокировки, как правильно условия для динамических списков писать и т.д. и т.п.

                                                                  То есть про порог входа, это не личное мнение, а в том числе мнение многих 1С разработчиков, что та же УТ сейчас настолько сложной стало, что лезть туда уже мало кто хочет (а многие даже с 7.7 по этой причине не хотят уходить, так как она гораздо проще).
                              0
                              но именно двигатель дает тесле преимущества, с которыми ни один ДВС не может соревноваться

                              Тойота продаёт приус уже почти четверть века. Он не имеет проблемы с зарядками, а по экологичности может с теслой посоревноваться. Делали его конечно не для гонок (за 3 сек. до 100 он не разгоняется). Тойота при этом остаётся крупнейшим производителем автомобилей в мире. Тут кстати становится занятно что её капитализация до теслы не дотягивает. Вокруг теслы есть только хайп который специально раскрутили.
                                0
                                Я может чего-то путаю, но Приус это гибрид и по основном характеристикам не сравнится с Тесла (то есть это что-то среднее, ни рыбо ни мясо).

                                И собственно Тойота хороший пример, что имей ты хоть бесконечно денег, огромную долю на рынке, опыт, сервисы и все такое, если ты фундаментально отстаешь, в перспективе (пусть и глобальной) ты все равно проиграешь.

                                Но да многие все сваливают на хайп, не понимая, что путают причину со следствием.
                                  0
                                  по основном характеристикам не сравнится с Тесла

                                  По каким? Задумайтесь что такого сверх нового в тесле? Какую инновацию они привнесли кроме «автопилота»? В чем главное преимущество электромобиля перед бензиновым?
                                  Но да многие все сваливают на хайп, не понимая, что путают причину со следствием.

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

                                  Проиграет в чем? Тойота стала хуже продаваться? Инвесторы от неё отвернулись?
                                    0
                                    По каким? Задумайтесь что такого сверх нового в тесле? Какую инновацию они привнесли кроме «автопилота»? В чем главное преимущество электромобиля перед бензиновым?

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

                                    Я все тоже самое слышал и про эппл и про убер и особенно про фейсбук в свое время. И? Назовите мне хоть один реально лопнувший такой «пузырь» за последние 10 лет?
                                    Проиграет в чем? Тойота стала хуже продаваться? Инвесторы от неё отвернулись?

                                    Ну то что рост продаж у Теслы в разы превосходит Тойоту, и Тесла уже стоит в 2 раза дороже Тойоты и так с огромной вероятностью будет всегда.
                                      0
                                      Ну это был по сути первый полноценный седан с возможностью проезжать 450км (а не 150)

                                      Любой седан с ДВС может это.
                                      быстрой зарядки

                                      Это за несколько часов по сравнению с заправкой за 5 мин?
                                      оригинальными (пусть и спорными) дизайнерскими решениями в духе минимализма и т.п

                                      Как будто другие компании не выпускали «спорные» с дизайнерской точки зрения машины.
                                      особенно про фейсбук

                                      Фейсбук делал совершенно новый продукт. Рынок соц. сетей с ним только появлялся. Кто-то думает что сейчас может появится другой фейсбук?
                                      Ну то что рост продаж у Теслы в разы превосходит Тойоту

                                      Вырасти с 10 000 до 20 000 это не тоже самое что с 1 000 000 до 2 00 000.
                                      так с огромной вероятностью будет всегда/blockquote>
                                      С чего вдруг? Какие экономические показатели это объясняют? Инвесторы в итоге захотят превратить свой доход в деньги. Они это либо сделают за счет получения дивидендов, либо продажи акций. Но кто захочет дальше покупать если не увидит перспективы?
                                      Текущие успехи теслы только за счет успехов Маска с ракетами. Все думают что раз он совершил революцию в запусках, то сможет и тут. Но в отличии от ракет, в автомобилях такой революции не свершилось.

                                        0
                                        Любой седан с ДВС может это.

                                        Я думал мы с другими электромобилями сравниваем. Ок тогда все это плюс разгон за 4 секунды, без передач и вообще трущихся частей (то есть гораздо меньше обслуживания надо), с очень крутой безопасностью (нельзя перевернуть, двигатель в салон не уедет), бесшумность, экологичность, возможность заправлять ночью (пусть и очень долго).
                                        Как будто другие компании не выпускали «спорные» с дизайнерской точки зрения машины.

                                        Кстати именно такие нет. Но опять-таки я тут все вместе сравнивал.
                                        Фейсбук делал совершенно новый продукт. Рынок соц. сетей с ним только появлялся. Кто-то думает что сейчас может появится другой фейсбук?

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

                                        То есть переход с бензина на электричество (и скажем зарядка автомобилей дома по ночам) — это не революция? Ну ок.
                                          0
                                          переход с бензина на электричество

                                          Ради чего? чем электрический лучше бензинового? Это как раз то, с чего я начал сравнение с приусом. Экологичность производства и эксплуатации теслы очень сомнительная вещь. Пока её произведут столько «вредного» выкинут. Пока электричество для неё выработают тоже столько СО в атмосферу отправят. Просто не рядом с владельцем теслы. Приус в этом смысле тоже чистый. ДВС работает на самых эффективных режимах, если надо, может проехать на выключенном двигателе. Прототип Ё-мобиля (который в Белоруссии тестировали) тоже достаточно чистый.
                                          Я в тесле из революцинного вижу только автопилот.
                                          Похоже что мы уже слишком далеко ушли от первоначальной темы. Кажется пора закруглятся.
                                            0
                                            Ради чего? чем электрический лучше бензинового?

                                            Много чем. В стоимости эксплуатации и сложности обслуживания, в надёжности, в возможности зарядить дома и на работе, в объеме багажника, в безопасности, в динамике, в комфорте езды — всё это достигается простой заменой ДВС на электромотор.
                      –1

                      Начнем с того, что это не ЯП, а фреймворк. Ну и далее по тексту ложь про 3 страны, плюс агрессия. У вас там все хорошо?

                        +3
                        1с — это новое слово в Rapid Application Development, систем подобного класса в мире нет.
                        А то бы Украина уже давно на них соскочила, но увы.
                        +8
                        То что появился достойный конкурент 1С — меня очень радует. Да ещё и открытая платформа. Тут специалисты скажут свое весомое мнение при выборе платформы.

                        Однако у 1С главное преимущество (как я понимаю) в нескольких аспектах:
                        1. Законодательство. Они очень быстро вносят необходимые правки и максимально поддерживают текущие требования закона. Есть даже миф что 1С сами проталкивают изменения в законодательстве чтоб чаще менять формы, тем самым заставляя бизнес платить за обновления.
                        2. Франчайзинг (партнеры 1С). Судя по всему их десятки тысяч. Если бизнесу нужно что-то сделать в 1С, они идут в фирму и получают услугу в виде выездного специалиста. Если бизнес только собирается покупать 1С, то всегда есть специалист готовый приехать и обучить персонал.
                        3. Сотни готовых решений под любой бизнес. Пиццерия, магазин автозапчастей, швейная мастерская. Под всё есть решения.

                        lsFusion будет очень сложно конкурировать на этом поле.
                        Хотя решение в виде MyCompany даёт мелкому и среднему бизнесу качественный и бесплатный инструмент. Которое всё равно нужно обновлять под изменения законодательства. Как с этим обстоят дела?

                          0

                          Поддерживаю оратора с добавлениями.
                          п.2. решаем (теоретически) бизнес-моделью. 1С сделало красиво — фиксированные цены для end-user и отваливать половину франчайзи. Отлично работает.
                          п.3. тоже решаем по правилу Парето — 90% (образно) клиентов удовлетворены тремя стандартными конфигурациями (причем актуальность важна только для двух — БП и ЗУП).
                          А вот п.1. — это всё. Первое, что говорит бухгалтер на предложение заменить 1С — "я на всё согласная, но один вопрос — как сдавать отчетность?".
                          Вот об это разбито просто вагон проектов.
                          То есть пока этот бешеный принтер в налоговой работает альтернатива 1С под большим вопросом.

                            0
                            Так бухгалтеру никто и не предлагает заменять 1С. Пусть сидит там считает свои налоги. Во всем мире бухгалтера работают в отдельном специализированном софте (скажем в США это какой нибудь Intuit) и никто не переживает по этому поводу.
                              +1
                              Пусть сидит там считает свои налоги

                              Вы себе представляете что это такое? Думаете он так вот сел, и решил посчитать налоги и все? Думаете ему ничего из «управленческих» данных ничего для этого не нужно? Ему это как вводить, вручную?
                                0
                                Нет, естественно интеграция с бухсистемами должна быть (выгрузка или уже агрегированных проводок или первичных данных). И в MyCompany и даже в самих 1С решениях она есть (как и везде в мире). Но этого как правило в управленческих решениях более чем достаточно.
                                  +2
                                  Так любая интеграция это большая головная боль. Особенно когда интегрируемые системы развиваются независимо в своих интересах. Кто будет заниматься актуализацией? В результате, какой заказчик захочет жить в условиях постоянной опасности что в один прекрасный день, что-то может не работать?
                                    0
                                    Вы надеюсь в курсе, что даже у 1С в подавляющем большинстве случаев УНФ/УТ/ERP ставится отдельно от БУХ и ЗУП? Как собственно и то, что во всем остальном мире бухгалтерию чаще всего ведут отдельно?
                                      0
                                      Ну так там развитием занимается один поставщик, он и занимается актуализацией.
                                        0
                                        А какая разница один или не один поставщик? Понятно что любой поставщик управленческих решений (коих тысячи) занимается актуализацией интеграции с бухгалтерией. Более того уверен в 1С этим занимается отдельный отдел / люди (то есть по сути «другой» поставщик).
                                          0
                                          Разница в том, что этот «один» поставщик точно имеет актуальную информацию по планам развития и оперативно актуализирует это самую «интеграцию». Когда поставщика 2, один обязательно «прошляпит» изменения у другого.
                                            +1
                                            Что значит прошляпит? Ничто не мешает второму поставщику просто подстраиваться под изменения первого (первый выпустил новую версию, второй в течении короткого периода времени обновил интеграции). Например в России есть куча провайдеров всяких центральных сервисов аля Честный знак, ЕГАИС, Меркурий, и все как то актуализируют интеграцию с ними. То есть проблема явно надумана. Вон SAP даже как-то живет, а это весьма большая и как следствие не очень поворотливая махина.
                                              0
                                              Ничто не мешает второму поставщику просто подстраиваться под изменения первого (первый выпустил новую версию, второй в течении короткого периода времени обновил интеграции).

                                              почему это второй должен подстраиваться под первого, а не наоборот? А потом мы имеем "эффективный" код и "ломучие" интеграции...

                                                +1
                                                Что значит почему? Потому как если в данной области распространен этот поставщик, то под него и подстраиваться. Если основной движок интернет магазинов условная Joomla, то все будут подстраиваться под него, если у есть всего один сервис Честный знак все будут подстраиваться под него, если 90% касс это Сервис-плюс и Кристаллсервис, все будут подстраиваться под них, если 90 процентов бухгалтерий 1С: Бухгалтерия, все будут подстраиваться под нее и так далее. Так всегда и везде работает.
                                        0
                                        в подавляющем большинстве случаев УНФ/УТ/ERP ставится отдельно от БУХ и ЗУП

                                        Тут причина в том что УНФ/УТ/ERP нельзя так часто обновлять как хотелось бы налоговой/1C
                                        Как собственно и то, что во всем остальном мире бухгалтерию чаще всего ведут отдельно?

                                        тут плохо применим опыт других стран. у нас бывает что целый поход нужен чтобы правильно сделать выгрузку в бухгалтерскую программу, чтобы подсчитать налог на прибыль… а если у вас еще валюта фигрурует с авансами… то всё, вы там повеситесь просто…
                                        как вы будете выгружать «просто проводки» по расчетам с клиентом в долларах когда у вас куча авансов и отгрузок? пересчет валютных разниц мозг даже одинесником со стажем и главбухом мозг выносит… когда оказывается что точка зрения налоговой, разработчиков бухгалтерских программ и законов не совпадают друг с другом… точне их все трактуют по разному… типа 10% от общей цифры операций считать или от каждой и результат суммировать?
                                        если логику таких расчетов оставлять в бухгалтерской программе то туда придется тащить кучу бизнеслогике которой там не место, если всё считать в управленческой системе — то опять всё скатится к поддержке законодательства а-ля 1С но своими силами
                                          0
                                          Что-то я не понял. У вас первый ответ, противоречит второму. В том плане, что если управленческое и бухгалтерское решение ставят и обновляют отдельно, как тогда решается проблема, которую вы сформулировали в конце.
                                          0

                                          Это чисто вопрос ценника, и предметной области, но а любом случае бух всегда присутствует для сдачи налоговых отчётов.

                                          0
                                          не надо задним числом работать. тогда головняка не будет.
                                          а для заднего числа писать регламент
                                            0
                                            С чего вы взяли что весь «головняк» из-за работы задним числом?
                                            UPD:
                                            «С чего взяли» догадываюсь. Но опыт показывает, что это не самая большая проблема.
                                              0
                                              из практики.
                                              озвучьте другие проблемы интеграций. большие.
                                                0
                                                Из практики, больше всего проблеме из-за структурных различий в интегрируемых системах. Например неоднозначные связи (один и тот же объект источник может загружаться в разные приемники), архитектурные различия в обработке данных (одна система поддерживает работу «задним числом, а другая нет). Таких проблемы бывают конечно всегда, но при интеграции систем сделанных на одной платформе, или еще лучше одним поставщиком, этих проблему будет существенно меньше.
                                      –1

                                      Ну вообще в США налоги считают в AccountingSuite которая к слову тоже 1С ;)

                                        +1
                                        В США хоть об этом знают?
                                          +2
                                          полтора человека-мигранты из РФ чтоли?
                                            0
                                            Нет там расчета налогов. Даже налог с продаж там считается через онлайн сервис. Вообще, налоговый учет в США отделен от бухгалтерского учета намного больше, чем у нас.
                                        0
                                        1. Законодательство. Они очень быстро вносят необходимые правки и максимально поддерживают текущие требования закона. Есть даже миф что 1С сами проталкивают изменения в законодательстве чтоб чаще менять формы, тем самым заставляя бизнес платить за обновления.

                                        Вообще это обычно касается фискального и регламентированного учета. То есть по сути БУХ и ЗУП, которые даже с «управленческими» 1С решениями (то есть с УНФ, УТ, ERP и т.п.) в большинстве случаев ставятся отдельно. Более того 1С пытаясь двигать свой ERP на мировой рынок так и говорит, в качестве бухгалтерии используйте местный софт.
                                        2. Франчайзинг (партнеры 1С). Судя по всему их десятки тысяч. Если бизнесу нужно что-то сделать в 1С, они идут в фирму и получают услугу в виде выездного специалиста.

                                        Ну про это я писал в статье. Сейчас, особенно на фоне пандемии, когда все онлайн, по большому счету нет смысла в десятках тысяч партнеров. Сотни или даже десятка будет достаточно для того, чтобы у заказчика не было проблемы с vendor-lock / поиском подрядчика.
                                        Сотни готовых решений под любой бизнес. Пиццерия, магазин автозапчастей, швейная мастерская. Под всё есть решения.

                                        Тут соглашусь, но это вопрос времени. Тем более, что часто кастомизация превышает «специализацию», то есть «рыбы» в виде MyCompany или lsFusion ERP может быть достаточно для того чтобы на выходе получить даже более качественное решение, чем уже «готовое».
                                        Которое всё равно нужно обновлять под изменения законодательства. Как с этим обстоят дела?

                                        Это если честно не ко мне вопрос (я к MyCompany прямого отношения не имею). Но я полагаю, что в нем естественно поддерживаются / будут поддерживаться изменения законодательства, тем более что если исключить БУХ и ЗУП, этих изменений не так много как принято считать.
                                          0
                                          Это, кстати, самый полный ответ почему бизнес выбирает 1С и тот же битрикс с шопскриптом а не благословенный Lavarel. Потому что бизнес не хочет пол года искать программиста что бы решить мелкую проблему.
                                          Бизнес вообще не хочет завязываться на конкретного программиста.
                                          У меня есть история как крупнейший интернет-магазин в отрасли был на самописном движке какой-то украинской студии. Тут наступил всем известный майдан.
                                          И все. Интернет-магазин обслуживать не получилось. В России, ВНЕЗАПНО, фрилансеры не брались совсем (не охота разбираться в чужом говнокоде, ага). На ставку никто не хотел идти по той же причине. Пришлось срочно переделывать магаз на Битрикс. С потерей SEO и прочих плюшек.
                                          Слава богу урок был не мой, но у меня теперь простое решение.
                                          Продается интернет-магазин?
                                          Самописный или редкий/не поддерживающийся движок? Нафиг сразу. Даже бесплатно.
                                            +4
                                            Потому что бизнес не хочет пол года искать программиста что бы решить мелкую проблему

                                            Работаете на пол ставки в битрикс? Я вам могу сказать совершенно обратную ситуацию, адекватного разраба, который может работать с битрикс днем с огнем не найдешь. Большинство битриксоидов это вчерашние вордпрессеры изучившие тему по паре 5 минутных роликов с ютуба. Система сертификации битрикса, грош цена ей. Так что с утверждением что битриксоида проще все найти я в корне не согласен. Его найти ровно так же сложно как и любого другого под нормальную платформу. Единственный случай когда я могу оправдать применение битрикса, так это при разработке интернет магазина, потому что такого уровня e-commerce решения увы больше не найти, а самому такой аналог можно довольно долго реализовывать
                                              0
                                              Работаете на пол ставки в битрикс?

                                              Нее) Это точно не ко мне)
                                              Я вам могу сказать совершенно обратную ситуацию, адекватного разраба, который может работать с битрикс днем с огнем не найдешь. Большинство битриксоидов это вчерашние вордпрессеры изучившие тему по паре 5 минутных роликов с ютуба. Система сертификации битрикса, грош цена ей. Так что с утверждением что битриксоида проще все найти я в корне не согласен. Его найти ровно так же сложно как и любого другого под нормальную платформу.

                                              Я столкнулся с другим. Проще реализовать самому, чем написать ТЗ и проверить потом за фрилансером. Времени уходит БОЛЬШЕ, плюс еще денег заплатить надо.
                                              Но вот на крупные задачи — вопрос исключительно $$. Берешь топ-студию, пишешь ТЗ, договор и вперед.
                                              Единственный случай когда я могу оправдать применение битрикса, так это при разработке интернет магазина, потому что такого уровня e-commerce решения увы больше не найти, а самому такой аналог можно довольно долго реализовывать

                                              Исключительно интернет-магазин. Для других целей есть абсолютно другие решения.
                                              Для интернет-магазина на просторах РФ сейчас по факту есть Битрикс и Шоп скрипт. Где-то дальше OpenCart и Magento.
                                              Собственно, ИМХО, больше особо выбирать не из чего.
                                              Ну если вы хотите более-менее ГОТОВЫЙ продукт. А не я тебя поставил и пошел делать 150 модулей, потому что оплаты нет, доставки нет, веса товаров нет, чеков нет и тд.
                                                0
                                                У меня есть сайт не магазин на битриксе, который я сопровождаю. Делала какая-то контора, причем далеко не последняя. Меня убило то, что там нет вменяемого ЧПУ из коробки, часть данных лежит в базе, часть лежит прям в файлах. До этого занимался сайтами на MODx. Битрикс хорош там, где надо что-то быстро наговнокодить. Да, оно будет работать, но это будет треш. А вот MODx это и есть доведенный до ума битрикс.
                                              0
                                              а че не на вордпрессе или джумла? Есть ведь и другие стандарты помимо битрикса
                                                0
                                                а че не на вордпрессе или джумла? Есть ведь и другие стандарты помимо битрикса

                                                Ну если вы хотите МАГАЗИН — делайте на движке магазина.
                                                Если совсем КРАТКО.
                                                WP/Joomla как интернет-магазин это прям ФЕЕРИЧНЫЙ геморрой. Прям на старте.
                                                WP — это всякие Woocoomerce.
                                                Ну вот по-минимуму для начала.
                                                Каталог в виде дерева. С одним товаром, лежащим в нескольких категориях.
                                                Оплата эквайринг 3-4 банков хотя бы. Мы же энтерпрайз… А там один сбер и тот с трудом.
                                                Расчет доставки Почтой России. Про версия 79$
                                                Нормальный модуль СДЭК — 79$ (тот который в битриксе бесплатный. Ага… И в шоп скрипте он тоже бесплатный)
                                                Всякие «непопулярные» службы доставки типа CSE, DPD, Boxberry — геморроя еще больше.
                                                Онлайн-касса с пробитием чеков онлайн? Вы о чем вообще
                                                В целом если вам нужен МАЛЕНЬКИЙ магазин на 10 товаров и вы не планируете расти дальше woo это ваш выбор.
                                                Джумлу вообще рассматривать не стоит. Потому что проще уже любой фреймворк взять и написать с нуля, чем поднимать на корявой джумле интернет-магазин. Все равно все придется писать.
                                                У меня у знакомого VirtueMart и он уже 3й год (не сказать что активно ищет но все же) не может подключить интернет-эквайринг.
                                                Потому что надо найти банк, который предоставит свою кассу, которая лупит чеки на онлайн оплаты в обход сайта, и у которого есть модуль для VirtueMart…
                                                Потому что с 1с оно связаться не может. А кассу к сайту не подключить — модулей нет…
                                                При этом битриксовая касса умеет шлепать чеки и на наличку и на онлайн оплаты и за указанные законом 5 минут. Из коробки. Вообще без допилов.
                                                  0
                                                  не могу судить, из веб-магазинов сталкивался только с Woocomece (на своем сайте) и Битрикс (у 1с-клиентов)
                                                  но сдается мне, что вы выпячиваете достоинства Битрикса. Таки тут конкуренция порядочная (в сфере веб-сайтов).
                                                    0
                                                    Нет. Я просто говорю, что битрикс из коробки для Российских реалий В РАЗЫ лучше Woo.
                                                    И сделать с нуля интернет-магазин на bitrix или Shopscript с нормальным набором российских реалий типа расчета почты, сдэк, эквайрингов и прочего в разы проще.
                                                    Если вы хотите просто продать 3 товара и обрабатывать каждый заказ манагером вручную — вам вообще все равно какой движок использовать. Но когда заказов 10-20 в день все становится сильно сложнее.
                                                      0
                                                      А кроме Woo вы ничего не знаете?
                                                      CS-Cart, Open Cart, NetCat.

                                                      для примера:

                                                      По данным BuiltWith, на OpenCart в России работают 54 500 интернет-магазинов. Это достаточно много. Для сравнения — на Битриксе работает 172 000 сайтов, и только часть из них — интернет-магазины.
                                                        0
                                                        Чуть выше мой коммент.
                                                        Исключительно интернет-магазин. Для других целей есть абсолютно другие решения.
                                                        Для интернет-магазина на просторах РФ сейчас по факту есть Битрикс и Шоп скрипт. Где-то дальше OpenCart и Magento.

                                                        Opencart приятно удивил у конкурента когда он на него переходил. И ценником перехода и функционалом. Но ему ни интеграция с 1с не нужна, ни чеки. Что там по ним — я хз.
                                                        CS Cart и Netcat…
                                                        Последний раз когда я их смотрел было грустно. Очень грустно.
                                                        Посмотрел. CS Cart стоит дороже битрикса. В РАЗЫ.
                                                        marketplace.cs-cart.com/prolongatiovipservice.html
                                                        Ценники на простейшие модули в 50-100$… ну я прям не знаю. За 100-150$ в битриксе топовые модули с оооочень широким функционалом.
                                                        marketplace.cs-cart.com/affiliate-add-on-for-cs-cart.html
                                                        стандартный функционал.
                                                        marketplace.cs-cart.com/mailchimp-advanced.html
                                                        Бесплатный на битриксе.
                                                        marketplace.cs-cart.com/pre-order.html
                                                        штатный функционал.
                                                        marketplace.cs-cart.com/make-an-offer.html
                                                        штатный функционал в большинстве шаблонов.
                                                        marketplace.cs-cart.com/product-bundles.html
                                                        штатный функционал
                                                        Если я сейчас свой магаз с РЕАЛЬНО РАБОТАЮЩИМ функицоналом накидаю модулями CS cart он встанет тысячи в 3 баксов по минимуму. Причем у меня из платных только шаблон и пару мелких модулей до 1000р.
                                                0
                                                В России, ВНЕЗАПНО, фрилансеры не брались совсем (не охота разбираться в чужом говнокоде, ага). На ставку никто не хотел идти по той же причине.

                                                единственное объяснение, которое у меня есть — жадность работодателя


                                                И все. Интернет-магазин обслуживать не получилось.

                                                вот прямо студия взяла и отказалась? или возникли проблемы с оплатой? те же биткоины вроде не вчера придумали

                                                  0
                                                  единственное объяснение, которое у меня есть — жадность работодателя

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

                                                  Все проще — платежи в/на Украину и их получение из РФ стало, внезапно очень проблематичным. А за наличку и всякие Яндекс деньги, внезапно, далеко не все конторы готовы работать. Белый и пушистый бизнес хочет белые и пушистые документы.
                                                0
                                                это преимущество 1с для бизнеса.
                                                а есть еще преимущество для программистов — скорость разработки.
                                                есть небольшие базы данных, которые на 1с автоматизируются с нуля за пару дней.
                                                вот тут Фузина очень даже конкурент.
                                                +1
                                                Тяжело ли в вашем продукте реализовать расчет/перерасчет зарплаты со всеми нюансами?
                                                Есть ли механизм настройки ограничения прав доступа к отдельным записям?
                                                Предусмотрен ли электронный документооборот и использование ЭЦП, сейчас или в планах?
                                                  0
                                                  Тяжело ли в вашем продукте реализовать расчет/перерасчет зарплаты со всеми нюансами?
                                                  Если речь идет о платформе, то точно не тяжелее, чем на 1С. Просто задача расчета зарплаты очень гибкая, и часто лучше делать специализированное решение под конкретный процесс расчета премий и штрафов, чем универсальный, как в ЗУП.
                                                  Есть ли механизм настройки ограничения прав доступа к отдельным записям?
                                                  На уровне платформы — нет. Обычно это делается на уровне конкретной «конфигурации». В той же MyCompany сделана такое ограничение на основе привязки пользователей к местам хранения (и дальнейшей фильтрации заказов, поступлений и т.д.)
                                                  Предусмотрен ли электронный документооборот и использование ЭЦП, сейчас или в планах?
                                                  Это опять же делается на уровне конфигурации. Например, в MyCompany реализована интеграция с CryptoPro путем простого подключения библиотеки JCP. Вот исходный код непосредственно подключения.
                                                    0
                                                    На уровне платформы — нет.

                                                    Я бы сказал — пока нет. В принципе можно добавить возможность для класса задавать фильтры что-то типа:
                                                    CLASS X {
                                                    FILTERS hasAccess(X, currentUser());
                                                    }
                                                    Который будет добавлять блок FILTERS во все формы, где есть объекты этого класса. Это несложно реализуется, а мощный оптимизатор запросов разрулит все проблемы с производительностью.

                                                    Но тут проблема, что такой cross-cutting будет давать много нежелательных эффектов, так как формы универсальный механизм использующийся в том числе и для экспортов и для отчетов. Соответственно можно отфильтровать лишние данные и это может быть критично. Впрочем, надо будет посмотреть как это в других платформах решается (тот же RLS в 1C).
                                                      0
                                                      и дальнейшей фильтрации заказов, поступлений и т.д.

                                                      И эту фильтрацию нужно делать в каждом месте? А если её нужно подкорректировать?
                                                        0
                                                        Да, в каждом месте одной строкой добавляется конструкция вида (где hasAccess свойство, построенное ранее по какому угодно фильтру):
                                                        FILTERS hasAccess(object, currentUser())

                                                        Но можно и более сложные фильтры делать при желании. К сожалению, автоматически добавлять ко всем подряд объектам нельзя, так как в некоторых случаях фильтровать не нужно.
                                                    –4

                                                    Попуститесь пацаны. Вам еще год назад писали, почему ваша поделка отстой. Обстоятельно писали, с примерами и обоснованием.

                                                      +2
                                                      Насколько я помню год назад писали:
                                                      Странное ощущение — что именно то не выдерживает критики? Я опытный разработчик 1С и могу подтвердить что всё что тут перечисленно большая боль для меня — и самое больное что 1С совсем не собирается что то сделать полезное, всё что она может это изолироваться и поддерживать клуб любителей такой изоляции.

                                                      И это были самые заплюсованные комментарии.

                                                      Все остальное было лишено конструктива, и сводилось к тому, что «автор не разобрался». На вопрос в чем именно не разобрался, ответов не было.

                                                      В любом случае не нравится не читайте. У нас свое видение, у вас свое.
                                                        +2
                                                        И это были самые заплюсованные комментарии.

                                                        Ну Вы же понимаете: это хабр; комментарии, где критикуется 1С, плюсуются безоговорочно независимо от смысла.
                                                          0
                                                          Есть такое. Но конструктива, где претензии были или необоснованными или незначительными, все равно было очень мало. Хотя с другой стороны человеку ни разу ни использовавшему ни явную типизацию, ни наследования с полиморфизмом, ни нормальные IDE действительно тяжело понять зачем это все нужно.
                                                            +3
                                                            Есть такое. Но конструктива, где претензии были или необоснованными или незначительными, все равно было очень мало.

                                                            Опять-таки, это хабр. Здесь в критике 1С всегда мало конструктива. Больше на эмоциях как-то основываются.
                                                            Хотя с другой стороны человеку ни разу ни использовавшему ни явную типизацию, ни наследования с полиморфизмом, ни нормальные IDE действительно тяжело понять зачем это все нужно.

                                                            Какое-то, не связанное с предыдущим предложением, утверждение. Но ок. А с чего Вы взяли, что человек с этим никогда не сталкивался и никогда это не использовал?
                                                              0
                                                              Опять-таки, это хабр. Здесь в критике 1С всегда мало конструктива. Больше на эмоциях как-то основываются.

                                                              Стоп, я не про критику 1С, а про критику критики 1С. Как раз в этих двух статьях я пытался подходить максимально предметно, без абстрактных вещий, аппелируя к общепринятым понятиям / механизмам и т.п. И в общем то поэтому хотелось увидеть более предметную реакцию, а не эмоции как вы говорите. И причины на мой взгляд почему именно так происходит на мой взгляд именно в:
                                                              Хотя с другой стороны человеку ни разу ни использовавшему ни явную типизацию, ни наследования с полиморфизмом, ни нормальные IDE действительно тяжело понять зачем это все нужно.

                                                              Или у вас есть другое объяснение, почему часто 1С разработчики отвечают строго эмоционально, а не могут предметно сформулировать свои мысли / возражения?
                                                                +1
                                                                Стоп, я не про критику 1С, а про критику критики 1С.

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

                                                                Часто — это ведь тоже эмоциональное суждение, нес па? По моему опыту, конструктивность диалога зависит строго от вменяемости оппонента, а не от строгой типизации, вменяемого IDE(а где он кстати вменяемый) и уж тем более не от наследования с полиморфизмом.
                                                            0
                                                            Тогда почему у статей EvilBeaver не много-много минусов?
                                                              0
                                                              Потому что они были в таком стиле:
                                                              Я опытный разработчик 1С и могу подтвердить что всё что тут перечисленно большая боль для меня — и самое больное что 1С совсем не собирается что то сделать полезное, всё что она может это изолироваться и поддерживать клуб любителей такой изоляции.


                                                              Такое здесь любят :)
                                                                0

                                                                Это где это у меня были статьи в таком стиле??

                                                          +1
                                                          где писали?
                                                          где примеры и обоснования?
                                                          я на мисте спрашивал, где это все?
                                                          тишина. Как говорится, Фузину не смотрел, но осуждаю.
                                                            0

                                                            ну и как она в итоге?

                                                          0
                                                          Диаграмма в заголовке прикольная.
                                                          Вопрос только: а Вас не напрягает, что на ней все альтернативные решения сгруппированы по кластерам (то есть каждый кластер заточен под какой-то срез задач и все решения из этого кластера имеют схожие параметры), а IsFusion расположен в какой-то отдельной области, где больше ничего нет? Может он решает свой срез задачи таким способом, который на рынке не популярен? (не в смысле «не в тренде», а в смысле «не самый экономически эффективный»)
                                                            0
                                                            Ну, строго говоря, все альтернативные решения используются именно для разработки информационных систем. Скажем решения для банков и крупного ритейла часто пишут на PL/SQL, T-SQL (в смысле всю бизнес-логику) + каком-нибудь чисто UI-фреймворке (скажем дельфи или веб), но бывает, что эти же решения пишут и на 1С и на Java Spring. А например ERP решения для производства чаще всего пишут на ERP-фреймворках, но бывают когда также как для банков на PL/SQL или на .Net. Высоконагруженные корпоративные бизнес-приложения (где простая бизнес-логика, но огромная нагрузка) чаще пишут на каких-нибудь Java EE, но бывает и из PL/SQL (или даже ERP платформ) выжимают все что можно.

                                                            Собственно эта диаграмма в заголовке показывает, что потенциально технология аля lsFusion может заменить PL/SQL, ERP-фреймворки и RAD-средства. До ORM она не дотянет в плане гибкости и масштабируемости (ультра высоконагруженности).
                                                            0
                                                            1С это для бухгалтера. Если нужна какая-то другая автоматизация нужно отдельное специализированное решение адаптированное под предметную область. По аналогии как Додо делало для своих пиццерий.
                                                            Это решение либо покупается, либо пилится внутри компании усилиями 3-4 разработчиков на каком-то мейнстримовом языке вроде java/c#/go
                                                              +1
                                                              1С это для бухгалтера. Если нужна какая-то другая автоматизация нужно отдельное специализированное решение адаптированное под предметную область.

                                                              Это у вас опыт внедрения и того и того говорит?
                                                              на каком-то мейнстримовом языке вроде java/c#/go

                                                              Решение делается ведь не на языке. Язык не важен. Важен фреймворк на котором сделано решение. Писать под каждое решение свой фреёмворк точно не в интересах конечного заказчика.
                                                                0
                                                                Есть опыт over 10 лет по .NET. Есть опыт взаимодействия с 1С, SAP и ресторанными системами iiko и rKeeper. Есть вещи которые банально не делаются в рамках бухгалтерских программ, бухгалтеры страдают но ничего сами не попросят. Есть вещи которые связаны с передачей данных между системами и их верификаций.
                                                                Чем сильнее конфигурация 1С отличается от стандартной — тем больше с ней возни и проблем.

                                                                В интересах конечного заказчика чтобы решение работало просто эффективно
                                                                +1
                                                                каком-то мейнстримовом языке вроде java/c#/go
                                                                Либо на том же lsFusion. Например, пять из восьми крупнейших розничных сетей Беларуси работают на решении, разработанной на lsFusion. А по оборотам они все входили бы в ТОП-20 розничных сетей РФ. То есть это не ларьки.
                                                                  –2
                                                                  Уважаемый, вы назовите «ТОП-20» розничных сетей РФ, ну чисто, чтобы ваши слова не выглядели пустым надуванием щёк.
                                                                    0
                                                                    На счёт Белоруссии — там всё возможно. Если бы мне бы сказали что 1С не подходит и нужно что-то еще, то IsFusion безусловно мной бы рассматривался как один из вариантов.

                                                                    Почему такая любоффь к 1С? Да нет никакой любви — банально 99% людей, которых вы принимаете на работу с ней умеют работать.
                                                                      0
                                                                      А Вы с точки зрения кого говорите? С точки зрения бизнеса или интегратора? Если мы говорим про обычных пользователей (не бухгалтеров), то с 1С работали далеко даже не 30%, а значительно меньше. И большинству из них все равно на чем работать — на чем скажут, на том и будут.
                                                                    +1
                                                                    не, 1с не для бухгалтера. 1с для бухгалтера было только во времена 6.0 и то, на 6.0 писали уже упр.учет на счетах.
                                                                    –4
                                                                    Весна… Фузиновцы обострились.
                                                                      +1
                                                                      lsFusion и 1С это платформы для создания прикладных решений. Следовательно важны не они сами по себе, а прикладные решения который создаются с их использованием. Главная цель для них это «нести» пользу конечному пользователю. Потребители по большому счёту не важно на чем он работает. По этому показателю 1С является лидером. Конкуренция с 1С начнется только тогда, когда конечному потребителю будут предоставлены все те же удобства что он имеет сейчас.
                                                                      Для бухгалтера важно соответствие законодательству. С 1С он может за 10 мин зарегистрироваться на 1cfresh.com и доступ облачному решению которое всегда актуально, и ему не нужно думать ни о чем, он просто пользуется, даже устанавливать ничего не надо.
                                                                      Для руководителя предприятия при внедрении ERP важно найти максимально подходящее под его требования решение и иметь возможность за минимальные деньги и сроки реализовать все необходимые «доработки».
                                                                      Для них слова «мы нагружаем СУБД и не сервер приложения» не важны.
                                                                        0
                                                                        А где посмотреть, что новенького появилось в lsFusion 4.1 по сравнению с 3.1?
                                                                        –1
                                                                        Круто ребята вбрасывают. В статье «Почему не 1С» в качестве примеров берут реальные, так сказать промышленные куски кода, которые будучи вырванными из контекста всегда будут выглядеть неадекватно и монструозно. А в этой статье в качестве решения проблем предлагается метод «Ну допустим, есть товар А с ценой Б и количеством В. Тогда сумму мы вычислим вот таким простым способом в одну строчку. Сравните с 1С.». Это называется по-другому, а именно «нечестный полемический прием».

                                                                        Ну и, честно говоря, неглубокое понимание архитектуры 1С автором тоже не делает ему чести и доверия. Взять хотя бы ошибочную версию автора, что виртуальные таблицы 1С — всего лишь представления (view). Что заставило автора думать, что в их параметрах можно использовать только константы и не позволило решить такую простую задачу, как вывод в динамическом списке товаров их остатки по складам.

                                                                        UPD 14:42
                                                                        Изучаю вашу демку ERP. Ну что сказать… А где блокировка бизнес-объектов от изменения одновременно несколькими пользователями? Или так задумано —
                                                                          0
                                                                          Не совсем понял. В этой статье «прямые» сравнения это:

                                                                          • про отсутствие оптимизатора запросов — там пример один в один
                                                                          • с ограничениями — там есть небольшая разница(хотя даже в первой статье специально была выбрана именно проверка очень простого ограничения вроде текущего остатка), но, собственно основной смысл, что в lsFusion задаешь как вычисляется показатель, а дальше просто вешаешь ограничение на него одной строкой. А в 1С нужно танцы бубном из триггеров и временных таблиц городить
                                                                          • с разделением сервера и клиента — но там как раз у 1С и будет жутко монструозно из-за всех этих НаСервере и НаКлиенте

                                                                          Взять хотя бы ошибочную версию автора, что виртуальные таблицы 1С — всего лишь представления (view).

                                                                          Что значит «всего лишь представления»? Да, в SQL и в других технологиях представления это и есть виртуальные таблицы (просто по определению). Другое дело, что в 1С виртуальные таблицы еще несколько мелких вещей «сверху» умеют делать (например автоматически группировать, когда не все измерения указаны и т.п.), но это просто небольшой синтаксический сахар сверху.
                                                                          Вы сначала полноценную конфу уровня УТ хотя бы запилите, а потом на ее примере демонстрируйте успехи…

                                                                          Ну например вот (исходники, если хотите сравнить код), система на которой работают 70% крупных розничных сетей Беларуси (там конечно нет части функционала УТ, зато есть огромное количество функционала которого нет в УТ)
                                                                            0
                                                                            Изучаю вашу демку ERP. Ну что сказать… А где блокировка бизнес-объектов от изменения одновременно несколькими пользователями? Или так задумано —

                                                                            А вы статью читали (в том числе заключение)? В этом магия lsFusion, она не читает (а потом и записывает) объект целиком. То есть вполне допускает одновременное редактирование данных (аля google docs или условно git), при этом полностью гарантирует целостность данных, и то что одно изменение пользователя не затрет изменение другого пользователя (если один поменял одни данные, а второй другие).
                                                                              0
                                                                              А если оба пользователя вносят «идентичные» данные в разные строки?
                                                                              Идея «работать без блокировок» — всегда опасна. Потому что ударить может в любой момент и неизвестно где. И как потом искать неправильные данные.
                                                                                0
                                                                                Сработает ограничение (если оно есть) на наличие двух «идентичных» данных. То есть целостность данных вы не нарушите никак.

                                                                                Ну и в любом случае «большая сила влечёт за собой большую ответственность» (с) Человек-Паук.
                                                                                  0
                                                                                  То есть предлагаете это переложить на плечи пользователей? Интересное решение…
                                                                                  Как раз такую проблему и решает блокировка объекта. И ситуаций, когда она может пригодиться — не счесть. А если все моменты сбрасывать на пользователей — то зачем вообще программа, когда есть Excel?
                                                                                    0
                                                                                    Нет, почему. Пользователи как раз меняют, каждый свои данные спокойно и не мешая друг другу (как в google docs). То есть один изменил цену в одной строке, другой в другой. Вас же не смущает, что в google docs несколько человек могут править один документ? И ситуаций, где это может пригодиться — не счесть.
                                                                                      0
                                                                                      Один изменил цену в накладной — отлично.
                                                                                      А другой через секунду поменял цену на другую, а третий зашел и махнул пересчет цен в процентах на все позиции. Что вышло в итоге надо, внезапно, проверять руками.
                                                                                      Очень забавная, скажу я вам, работа. Когда накладная на 3000 позиций и на 10 лямов денег…
                                                                                        0
                                                                                        Так тот кто махнет пересчет цен в процентах на все позиции, он по определению не будет смотреть ни на первого ни второго. Даже если он увидит предупреждение он все равно махнет. И изменения первого и второго потеряются в любом случае.

                                                                                        Но это какая то надуманная проблема. И если она для какой-то информации реально существует на практике, ну так включите для этой информации пессимистичные блокировки, делов-то. А для остальных 95 процентов случаев, когда описанная вами ситуация очень маловероятна / некритична оставьте параллельный ввод (что значительно ускорит работу пользователей).

                                                                                        Собственно смотрите, во всем мире в битвах — версионник (оптимистичные блокировки) / блокировочник (пессимистичные), расшаренный excel / google docs, блокировочные VCS / Git победили оптимистичные блокировки (с иногда опциональными пессимистичными).
                                                                                          0
                                                                                          Но это какая то надуманная проблема. И если она для какой-то информации реально существует на практике, ну так включите для этой информации пессимистичные блокировки, делов-то. А для остальных 95 процентов случаев, когда описанная вами ситуация очень маловероятна / некритична оставьте параллельный ввод (что значительно ускорит работу пользователей).

                                                                                          Вы работаете с деньгами и со строгой отчетностью. Я не могу представить себе ситуацию, когда два человека в одном ДЕНЕЖНОМ документе что-то одновременно правят и данный результат считается НОРМАЛЬНЫМ.
                                                                                          Один получил информацию от руководства о предоставлении скидки на все позиции, второй применил право персональной скидки на 1 позицию и вот она надуманная проблема.
                                                                                          В вашей «надуманной проблеме» я, фиксируя состояние документа, фиксирую и чужие правки, которые я в глаза мог не видеть потому что они тупо на 2-3 странице документа. И подписывая его я фактически подписываю и несу ответственность за чужие правки.
                                                                                          Хочешь испортить жизнь манагеру? Дождись пока он зайдет в документ перед подписью и поставь на 3 странице цены по 1 рублю. Он не увидит, подпишет и будет все ок. Отвечать будет он)
                                                                                            0
                                                                                            Хочешь испортить жизнь манагеру? Дождись пока он зайдет в документ перед подписью и поставь на 3 странице цены по 1 рублю. Он не увидит, подпишет и будет все ок. Отвечать будет он)

                                                                                            Хоть убей не понял этого примера. Так человек же и будет смотреть что подписывает и увидит там цены по рублю и не подпишет.
                                                                                        0
                                                                                        Вы кривите. Сравнение с ГуглДокс некорректно.
                                                                                        В ГуглДокс все видят, кто правит в данный момент какую ячейку. Постоянно. То есть есть информация о том, что кто-то работает в этом документе. В вашей же программе такого не будет.
                                                                                        Так что жду от вас «корректного» примера, где с данными работают без блокировок, как в вашей. Иначе — это «ноу хау» в стиле «пусть сами разгребают».
                                                                                        З.Ы. — безопасность всегда стоит выше эфемерного удобства. Если в системе могут работать десятки человек — без блокировок велик риск, что в один момент они подправят один-другой документ некорректно. И когда это определят и как будут исправлять — песня из матов, сначала в сторону пользователей, ну а как разберутся в чем причина — в вашу сторону.
                                                                                          0
                                                                                          В вашей же программе такого не будет.

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

                                                                                          Кстати в том же ГуглДокс ЕМНИП подсветка того кто правит в данный момент ячейку появилась далеко не в первой версии и работали как-то.

                                                                                          Так что жду от вас «корректного» примера, где с данными работают без блокировок, как в вашей. Иначе — это «ноу хау» в стиле «пусть сами разгребают».

                                                                                          Собственно смотрите, во всем мире в битвах — версионник (оптимистичные блокировки) / блокировочник (пессимистичные), расшаренный excel / google docs, блокировочные VCS / Git победили оптимистичные блокировки (с иногда опциональными пессимистичными).

                                                                                          То что в бизнес-приложениях (не считая SQL, а на верхнем уровне) мало где использовались оптимистичные блокировки, так это потому что реализация их в бизнес-приложениях (как впрочем и везде) ГОРАЗДО сложнее. Но в lsFusion это удалось сделать.

                                                                                          З.Ы. — безопасность всегда стоит выше эфемерного удобства. Если в системе могут работать десятки человек — без блокировок велик риск, что в один момент они подправят один-другой документ некорректно. И когда это определят и как будут исправлять — песня из матов, сначала в сторону пользователей, ну а как разберутся в чем причина — в вашу сторону.

                                                                                          Что значит подправят некорректно? Вот один исправил цену, а второй через пару минут пересчитал все (он то не просматривает старые значения вообще, он записывает новые). Это некорректно?

                                                                                          lsFusion гарантирует, что ни одна проверка целостности не будет нарушена. Если для вас что-то критично, просто добавьте соответствующую проверку, она вам все равно будет нужна даже при однопользовательском вводе. Ну или в крайнем случае включите для КОНКРЕТНОГО процесса пессимистичную блокировку. Зачем мучать пользователей на ВСЕХ процессах?
                                                                                            0
                                                                                            Дадада, всё у вас удалось. Ни у кого в мире не удавалось, но у вас конечно всё есть.
                                                                                            «В принципе можно реализовать, но по опыту проблема реально сильно надуманна» — а по моему опыту проблема очень даже не надуманная. Хотя, возможно, это результат ошибки выжившего. Вы создаете ПО в текущих реалиях, когда многие пользователи уже «научились» на других программах, что так делать нельзя, поэтому пользовательская грамотность слегка другая. 1С создавалась в других реалиях, когда компьютеры еще были в диковинку, поэтому пользователи намного чаще делали ошибки. Но это не значит, что сейчас надо надеяться на грамотность пользователя. Это ошибка в подходе, которая может больно аукнуться.
                                                                                            «Зачем мучать пользователей на всех процессах» — как вы будете определять, в какой ситуации нужна пессимистичная блокировка, а где оптимистичная?
                                                                                            И вообще, мне надоело, что вы вместо ответов на конкретный вопрос начинаете сами себе задавать вопросы и на них отвечать.
                                                                                              0
                                                                                              Дадада, всё у вас удалось. Ни у кого в мире не удавалось, но у вас конечно всё есть.

                                                                                              А я объясню, потому что реализовать одну такую фишку не возможно. Нужно реализовывать весь lsFusion целиком в том виде что есть сейчас. А это очень сложная архитектурно не масштабируемая деньгами задача.
                                                                                              как вы будете определять, в какой ситуации нужна пессимистичная блокировка, а где оптимистичная?

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

                                                                                              И вы упорно игнорируете факт про победу версионников над блокировочниками (скажем у Oracle и Postgres так и не появился блокировочный режим, а у MS SQL появился версионный и его даже 1С частично начал использовать), победу git над блокировочными системами контроля версий, победу google docs над расшаренным excel / word и т.п. Может прокомментируете? Или там типа ошибок на миллион нет (хотя везде есть / могут быть).
                                                                                  0
                                                                                  А если оба дописали примечание в документ, то прав останется последний. При этом первый будет уверен, что записал свои изменения. Вот ровно только что провел такой эксперимент в вашей демо-ERP, и все сработало по данному сценарию. В общем, спорное решение. Могу я предположить, что если кому-то по бизнес-логике понадобится реализовать механизм монопольного редактирования объектов, то он будет выглядеть монструозным и костылеватым, т.к. вы не поддерживаете этого на уровне платформы?
                                                                                    0
                                                                                    Ну вы вырожденный случай выбрали. Скажем если примечания будут строками, то несколько строк отлично добавятся в документ параллельно.

                                                                                    И нет, пессимистичные блокировки тоже делаются очень легко. Тут есть пример (описание системных действий lock, unlock встроенных в платформу)

                                                                                    То есть можно сделать просто:

                                                                                    lock(o);
                                                                                    IF lockResult() THEN
                                                                                         TRY
                                                                                              edit(o);
                                                                                         FINALLY
                                                                                              unlock(o);
                                                                                    ELSE
                                                                                         MESSAGE 'Используется другим пользователем'
                                                                                    

                                                                                    Но на практике это используется очень редко. Когда пользователи привыкли к Google Docs, использовать расшаренный по сети Excel-файл уже никто не хочет.
                                                                                      0
                                                                                      Независимое редактирование «строк документа» можно и в 1С сделать, если что.
                                                                                        0
                                                                                        Но это, согласитесь, костыль на регистрах. Все-таки парадигма 1С — изменение данных цельными блоками. Другое дело, что автор опять делит мир на олдскул и ньюскул, безапеляционно утверждая, что принцип работы 1С — это расшаренный по сети Excel по сравнению с Google Docs.
                                                                                          0
                                                                                          Что значит безапеляционно утверждая? А вы сами этой аналогии не видите?
                                                                                            +2
                                                                                            Нет, не вижу. Лично я вижу разные парадигмы обработки данных и поддержания их целостности у 1С и у вашего решения. В обоих случаях есть плюсы, а есть минусы. Если очень надо, то действительно, как сказал gennayo, очень просто сделать табличную часть документа не в виде табличной части, а в виде подчиненного документа или справочника. И даже достаточно конфигураций, которые именно так и работают. В основном WMS-ки, где, к примеру, сразу множество кладовщиков одну приемку делают. И это тоже очень просто, как дважды два — просто «ПКМ->Добавить» в конфигураторе. А еще есть множество ситуаций, когда над заказом работает пара менеджеров, и в текстовом поле Комментарий пишут важные замечания по заказу. В вашей демо-ERP вот прямо сейчас можно открыть два сеанса, в каждом сеансе по окну одного документа «Заказ (закупка)», допустим, номер 9080111, изменить и сохранить в них одно и то же поле, к примеру «Примечание», и сохранится только последняя правка, а правка первого сохранившего молча пойдет лесом. Базовая парадигма 1С — не допустить такого сценария ни при каких раскладах. Ваша — да и пофиг, если надо — сами лок делайте при открытии. И при этом вы утверждаете, что это прогрессивно.
                                                                                              0
                                                                                              Лично я вижу разные парадигмы обработки данных и поддержания их целостности у 1С и у вашего решения


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

                                                                                              Если очень надо, то действительно, как сказал gennayo, очень просто сделать табличную часть документа не в виде табличной части, а в виде подчиненного документа или справочника. И даже достаточно конфигураций, которые именно так и работают. В основном WMS-ки, где, к примеру, сразу множество кладовщиков одну приемку делают.

                                                                                              Не совсем понял, а как потому эти подчиненные документы «объединяются» в один? А как это потом все редактируется? Это же треш и угар будет. Причем в lsFusion это все из коробки делается.

                                                                                              А еще есть множество ситуаций, когда над заказом работает пара менеджеров, и в текстовом поле Комментарий пишут важные замечания по заказу

                                                                                              Это как раз один вырожденный случай, со строкой, в которую дописывают в конец. Хотя в том же lsFusion, для этого просто делают записи комментариев (так удобнее и с точки логирования например этих изменений), и тогда вводите параллельно без проблем.
                                                                                              Базовая парадигма 1С — не допустить такого сценария ни при каких раскладах. Ваша — да и пофиг, если надо — сами лок делайте при открытии. И при этом вы утверждаете, что это прогрессивно.

                                                                                              Конечно прогрессивно:
                                                                                              Собственно смотрите, во всем мире в битвах — версионник (оптимистичные блокировки) / блокировочник (пессимистичные), расшаренный excel / google docs, блокировочные VCS / Git победили оптимистичные блокировки (с иногда опциональными пессимистичными).
                                                                                            0
                                                                                            Почему на регистрах? Вполне себе и на документах варианты есть. Но да, с точки зрения «фузиновцев» — это костыль.
                                                                                              0
                                                                                              А с точки зрения 1Сцев нет? Ну тогда и наследование можно на if'ах делать. Тоже не костыль. И вообще по такой логике C от Java ничем не отличается.
                                                                                                0
                                                                                                Ну да, ну да. Использование возможностей платформы — это костыль. Кто бы сомневался…
                                                                                      0
                                                                                      Боюсь, это может создать много неявных проблем.
                                                                                      Вот, например, в 1с в документах бывают зависимые реквизиты (например, контрагент и договор контрагента. Договор контрагентам принадлежат контрагенту). Пользовательские формы в 1с построены так, что показывают только договоры контрагента выбранного контрагента, но в 1с то при этом сам документ блокируется. А тут мы получим, что один пользователь изменил контрагент, другой изменил договор — и мы легко потеряли зависимость между ними, потеряв целостность данных.
                                                                                        0
                                                                                        Нет, при проведении сработает ограничение, что выбран договор не того контрагента, после того как пользователь нажмет ОК, данные обновятся и он увидит другого контрагента и сможет выбрать другой договор.

                                                                                        Но опять-таки правило Парето и разница между оптимистичными и пессимистичными блокировками. В 99 процентов удобнее работать параллельно, а в 1 проценте случаев главное чтобы поддерживалась целостность и с большего указывалось в чем проблема ее нарушения. Это дает куда лучший баланс, чем просто все запретить, и слушать крики на весь офис «Маша дай отредактировать документ, когда ты его уже отпустишь».
                                                                                          0
                                                                                          Да, именно так — надо кричать «Маша дай отредактировать документ, когда ты его уже отпустишь». Ибо не заметив, что кто-то параллельно внес правку в открытый тобой документ, можно и счет клиенту не на ту сумму отправить… А потом ищи концы, какая там Маша что в этот момент делала. Так некоторые учетные системы можно превратить в полную помойку.
                                                                                            0
                                                                                            А если Маша зашла в документ просто «посмотреть»? Или я хочу зайти посмотреть? А в 95% случаев документ просматривают, а не правят.
                                                                                              0
                                                                                              Если Маша зашла в документ просто «посмотреть», то он не заблокируется. Блокировка начнет работать только при начале редактирования — то есть при изменении свойства Модифицированность открытого объекта.
                                                                                                0
                                                                                                а это тоже опасно, она открыла документ, смотрит 50000рублей, уходит, наливает чай, возвращается, тыкает печать и идет к принтеру… а там накладная на 50000рублей но на совсем другого контрагента с похожим названием… пока она глядела не меняя документ, его уже ктото изменил (вот не надо только 'обязана сверять'… я уже наслушался такого, когда поток документов по несколько тысяч на человека в сутки, у Маши крыша поедет)
                                                                                                  0

                                                                                                  Дак не запишется документ — напишет про несоответствие версий. Честь Маши не пострадала!

                                                                                                    0
                                                                                                    не запишется кем? при печати документа — его не надо записывать? или предлагаете блокировать запись документа если его ктото открыл?

                                                                                                    че толку открывать документ если он в любой момент может стать неконсистентным… маша нафигачила туда 100500 строк… а оно ему… ой чёто изменилось, перезагрузить?
                                                                                                      0
                                                                                                      Печать документа производится не по данным формы, а по данным объекта из БД.
                                                                                                        0
                                                                                                        конечно, по этому на печать попадет не то что человек видит перед собой в документе
                                                                                                          0
                                                                                                          Да, но уйдет фактическое его состояние.

                                                                                                          Так же нет проблем реализовать контроль на изменение версии объекта перед печатью с предложением перечитать его или автоматическим перечитываением.

                                                                                                          маша нафигачила туда 100500 строк… а оно ему… ой чёто изменилось, перезагрузить


                                                                                                          А вот это уже исключается автоматическим накладыванием объектной блокировки на уровне сервера приложений при начале редактирования объекта.
                                                                                                    0
                                                                                                    Не будет так работать. В большинстве случаев если документ посчитается системой «измененным» — то он потребует перезаписи. А если изменен другим пользователем — то он потребует, чтобы его «перечитали». И тогда Маша увидит измененные данные и печатать будет правильный документ. Рассматривать ситуацию, что сначала Маша распечатала, а потом кто-то этот документ изменил не имеет смысла, потому что это уже не техническая ошибка, а организационная и решается на уровне пользователей, а не программы.
                                                                                                      0
                                                                                                      Рассматривать ситуацию, что сначала Маша распечатала, а потом кто-то этот документ изменил не имеет смысла, потому что это уже не техническая ошибка, а организационная и решается на уровне пользователей, а не программы.

                                                                                                      Ну класс. Причем этот случай ГОРАЗДО более вероятен чем одновременное изменение и печать документа. Собственно в 95% случаев «некорректных» данных будет именно такой сценарий. Так за что тогда борьба если проблема «организационная и решается на уровне пользователей, а не программы».
                                                                                                        0
                                                                                                        То есть вы решили проигнорировать половину сообщения, описывающую реальную проблему, а ответить в своём стиле…
                                                                                                        Мы говорили про необходимость блокировок, когда пользователи «открыли» данные или одновременно их используют. И в примере про «печать» как раз рассматривали ситуацию, когда пользователь сидит в документе, он был изменен, после чего она его печатает (она его не меняла). В этот момент и срабатывает блокировка.
                                                                                                        Обратную ситуацию, когда она сначала распечатала, потом кто-то поменял я просто упомянул, но эта ситуация — не та, ради которой устраивается блокировка. Ту ситуацию ни в одной системе нельзя обойти, только организационно.
                                                                                                        Вы же вместо ответа на основное сообщение переводите фокус на «ситуацию-исключение», как будто это и было основным вопросом. И отвечаете в своём стиле «это никому не нужно».
                                                                                                          0
                                                                                                          Ту ситуацию ни в одной системе нельзя обойти, только организационно.

                                                                                                          Так, а смысл бороться с ситуацией, если вы в 95 процентов случае все равно получите проблему. Это как если бы вероятность смерти от рака уменьшалась бы на 5 процентов, если вы не будете пить, ложится спать в 9, не есть ничего вредного и т.п. Знаете что большинство пользователей сказало бы? Ну его нафиг. То есть опять-таки баланс рисков / возможностей.
                                                                                                            0

                                                                                                            Потому что мы рассматривали ДРУГУЮ ситуацию…
                                                                                                            Все, меня уже не хватает. Либо вы тролли, либо действительно не понимаете о чем речь. Но в любом из этих случаев ваш фузион так и закончится на хабре

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