Растянули резину на кучу сообщений. Вы написали, что async/await в платформе 1С нет. Это неправда и вам по ссылке это доказали (те же фоновые задания). Вы начали писать про то, что это не удобно и не наглядно. Это уже вопрос привычки.
Механизм фоновых заданий существует в платформе с версии 8.1 (2006 год). Вы можете запустить фоновое задание, можете ожидать выполнение одного/нескольких, с таймаутом. В платформе 8.2 (2009 год) появилась возможность работы с временным хранилищем. С помощью него обмениваться информацией как между фоновыми заданиями, так и между клиентом и сервером. Чуть более сложно сделать, чтобы фоновое задание запустилось после окончания транзакции, которая его создала. Чего вам не хватает?
Вы ссылаетесь на некие «слабые» места 1С, которые таковыми не являются. Вот например показать в форме список договоров поставщика: Сама по себе задача идиотская, зачем отображать в форме документа список договоров, когда договор выбырается из подчиненного списка, в который можно передалть с помощью связей параметров выбора текущего контрагента. Далее написан какой-то бред про отображение на форме документа списка других документов и еще поставщика меняет какой-то другой пользователь. Это как? 2 пользователя работают с одним документом? В любом случае параметр добавлять не обязательно, достаточно управлять отобором.
Далее вы пишите, что в ранних версиях 1С не было WYSIWYG. Был, как минимум с 1997 года (версия платформы 7.5).
Далее идет странный опус про привязку к спискам (так и не понял что вы имели ввиду). Вы можете добавить к таблице на форме (которая привязана к данным объекта) добавить дополнительные колонки и заполнять их из запроса, теми же остатками. Динамические списки используются в формах списков, в формах отдельных записей используются крайне редко.
Что значит отсутствует оптимизатор — платформа как минимум оптимизирует запрос, чтобы он не выбирал колонки которые не используются, далее есть оптимизатор самой СУБД
Вы пишите о том что остатки будут «рассчитываться» при каждом открытии. Подбор товаров делается по текущим остаткам, а данные по ним берутся из отдельной таблицы итогов. Также для регистра цен можно использовать таблицу итогов для среза последних.
Что касается непоследственно вопроса про расширение форм — 1С его использует для отдельных элементов отдельных форм (например механизм дополнительных реквизитов и сведений), но вы забываете, что для бизнес-приложения практически невозможно построить красивые диаграммы классов, которые будут всех устраивать. Поэтому в той же Axapta (в которой есть наследование) никаких предметных диаграмм классов для типов документов вы не встретите.
Кроме того вы забываете, что это чаще всего приложения на платформе 1С находятся на поддержке поставщика, то есть периодически ее приходится обновлять. И количество конфликтов при таких наследованиях будет очень большое.
Что касается — посмотрите на форму и покажите такую же — а зачем? Вывести на форму кучу информации из таблиц и навесить на них отборы больших усилий не требует. Но приложения на платформе 1С разрабатываются от документа или АРМ и каждый из них содержит всю необходимую информацию для принятия решения (особенно уклон в эту сторону начался с появлением интерфейса Такси). Сложность приложения оценивается по количество и качеству автоматизируемых бизнес-процессов. Вот например в ERP есть расчет себестоимости с помощью СЛАУ, сейчас в платформе появился объект, который быстро решает СЛАУ. В isFusion такое есть?
Вы тут писали о том, что сообщество 1С очень закрытое — это не так. Мы можете посетить семинар 1С как частное лицо в рамках «Открытого воскресенья» и пообщаться с разработчиками как платформы так и типовых решений. Там вы точно сможете получить ответы на все вопросы из первых уст, а не пытаться найти поддержку на непрофильном форуме.
Вы так часто употребляете в тексте уничижительные обороты, что не сразу понятно в чем заключается ваша претензия. Если вам не нравится подход с асинхронными вызовами — используйте синхронные, платформа это не запрещает при установленном режиме совместимости. У вас претензия к самому workflow на клиенте? Это ваше мнение. Почему вы считаете его единственно правильным? Нет указателя на функцию — и что? Какие задачи это не позволяет решать? Есть функции Выполнить() и Вычислить(), через которые вы можете вызвать все что угодно? Можно создать структуру с параметрами СтрВызов, в качестве одного из параметров определить имя процедуры и затем Вычислить(«СтрВызов.Функция(СтрВызов)»).
я вот нихера не понимаю зачем всех «заставили привыкнуть» к тому, что таблицу значений на сервер надо передавать в виде массива массивов
Откуда у вас возникает потребность формировать на клиенте большие объемы данных, чтобы потом гнать их на сервер?
есть же тонкий клиент — ну доведите его до ума
В чем проблема с тонким клиентом? Я разрабатываю всю новую функциональность на управляемых формах с 2011 года, и у меня не разу не возникало неразрешимых проблем.
Мне некоторые вещи в платформе кажутся избыточными, про качество некоторых типовых решений я вообще молчу. Но в целом количество плюсов в платформе и типовых решениях перевешивает все минусы. Какая альтернатива то? Вот автор поста предлагает isFusion. Но мне разработка интерфейса кодом нафиг не нужна, особенно когда я знаю какие по сложности бывают формы. Даже копать дальше желания нет.
Нужно смотреть на это с другой стороны. Есть некое видение развития платформы со стороны главного разработчика. Оно включает в себя в том числе работу в браузере любого прикладного решения. По поводу неработоспособности я с вами не соглашусь, служба поддержки по платформе работает очень оперативно (не раз в этом убеждался), а вот то что сложность разработки по сравнению с модальным режим — сомнения не вызывает. Но это дело привычки.
Если под асинхронностью понимать возможность одновременного выполнения нескольких потоков кода на клиенте — то такой возможности нет. Но это ограничение браузеров. Но возможность отвязать момент вызова от момента выполнения есть. А на сервере есть фоновые задания — пожалуйста можете создавать сколько угодно.
Возьмите например выбор из списка, нижнее окно заблокируется. Но реализовывать это приходится руками
Не нужно путать окна, блокирующих окно владельца (это нормально и достаточно передать в процедуру открытия формы параметр или в самой форме установить флаг) и вызов метода ОткрытьФормуМодально. 1С отказалась от использования последнего, т.к. он не корректно поддерживается браузерами. Чем вам не нравится реализация async/await в 1С? Как это реализовано у вас?
Если разработку приложения для 1С вести на EDT — формы выгружаются в XML и прекрасно работают с тем же Git. Кроме того платформа позволяет формировать интерфейс кодом, но это при наличие визуального редактора извращение. В том же Django есть поддержка шаблонов и у меня никогда не возникало идеи формировать HTML программно.
А что с серверными вызовами будет происходить во время отключения сервера? Например при нажатии выбрать из списка? И вы же понимаете что хранение всех редактируемых данных создает дикий оверхед, так как их надо гонять туда сюда при большинстве серверных вызовов? И это гораздо хуже чем любой маленький асинхронный вызов.
Просто прервется текущий вызов — выведется сообщение об ошибке и все. Между клиентом и сервером передаются только измененые строки и реквизиты. Если изменений нет ничего кроме параметров для вызываемой функции передаваться не будет.
Это как? Мне надо считать данные на сервере, вызвать диалог, потом обработать данные и в зависимости от условий вызвать другой диалог
В платформе 1С исторически есть поддержка модальных окон, но сейчас это bad practice.
И да у них обоих есть web-интерфейс
Пруфы в студию. В SAP веб приложения создаются на NetWeaver, а Axapta с помощью ASP.NET. С основной функциональностью это не имеет ничего общего.
Попробуйте кодом разработать форму в которой несколько сотен элементов, у каждого куча свойств. Сможете ли вы это поддерживать?
Корректировка формы делается только первом открытии. Разумеется это займет некоторое время, но опять-же не критично. Не понял в чем ограничение? Хотите максимальной скорости и проблемы при обновлении — редактируйте форму поставщика, хотите обычной скорости и без проблем при обновлении — вносите изменения кодом или макетом.
Если захотеть то можно отключить эти обращения, если вы мне ответите зачем?
В платформе 1С клиент хранит все редактируемые данные, поэтому отключение сервера для него вообще не проблема. Вы можете выключить компьютер, потом включить и запостить документ в систему. Во время работы с формой может произойти переподключение вообще к другому серверу.
Ни в SAP ни в Axapta
А разве в них есть веб-интерфейс? Эти решения предназначены для локальной сети, в которой разницы с местом выполнения клиентской логики вы не заметите. Если вам не нравится это разделение — можете каждое клиентское событие (с некоторыми исключениями) передавать на сервер и не думать об этом.
Не нужно путать разработку и кастомизацию. Если я разрабатываю с 0 некоторый документ — мне это разумеется удобней делать с помощью визуального редактора. Если речь идет о кастомизации документа, сделанного поставщиком — с помощью кода или например с помощью макета изменений, как например предлагается тут infostart.ru/public/1085508
Ну, во-первых, далеко не любую. Только при потере фокуса или начале ввода
Давайте на конкретном примере. Укажите документ вашей ERP, где я могу сделать значимое действие без обращения к серверу. Пока я вижу, что после открытия формы документа «Заказ клиента» — клиентское приложение каждую секунду обращается к серверу вообще без какой либо активности.
А вот проблем в разработке создает очень много о чем и сказано в статье.
Нет никаких проблем, разработчик на встроенном языке сам управляет что выполняется на сервере, а что на клиенте и соответственно может управлять объемом передаваемых данных. То есть код на языке 1С для веб-клиента транслируется в javascript, а в остальных случаях выполняется транслированный из встроенного языка p-code.
Про ERP ничего не скажу, но что касается платформы. 3600 рублей за рабочее место это небольшие деньги
Полнофункциональная пользовательская лицензия Navision стоит 3000$, аксапта еще выше
Ну это потому что они с нормальными технологиями не работали
Приведите пример ERP-системы построенной по вашему мнению на нормальной технологии? Неужели isFusion? Разрабатывать формы кодом это простите — анахронизм. Да мне на django веб-приложения проще разрабатывать — там есть хотя бы html шаблон.
На мой взляд написать подобную статью имеет право только человек, который плотно работает с 1С не один десяток лет. Я написал в 2014 году заметку habr.com/ru/post/244885 (которая является ответом на одну из перечисленных вами статей). Могу сказать что из указанного в моей статье перечня — п. 5.5, 5.6 и 5.8 более не актуальны.
Я зашел на ваш сайт и посмотрел демо веб-приложения ERP на базе isFusion. Начать можно с того, что 1С очень много логики работы с формой выполняет на стороне клиента. В вашем решении нажатие на любую кнопку приводит к вызову сервера.
Знаете почему 1С так популярна — потому что за небольшие деньги она предоставляет невероятный объем функциональности. Это касается как платформы, так и флагманской конфигурации — ERP.
Ваша статья понравится хейтерам 1С, коих на данном ресурсе предостаточно. Специалистам по 1С она вряд ли будет интересна, так как многие из вещей которые вы пишите для них проблемой не является.
Если нужно решение on-premise — 1С: Деньги без вариантов — 600 рублей за десктоп + 35 рублей мобильная версия. При наличии рук сможете настроить веб-доступ
На мой взгляд система малофункциональная и неудобная. Веду учет расходов с 2015 года на 1С: Деньги. В десктопной версии ввожу чеки, а в мобильной расходы наличными без чека. Самое сложное это правильно настроить категории и аналитики. Например 1С: Деньги позволяет внутри статьи расходов — содержание имущества можно разбить на ремонт, обслуживание, запчасти, материалы, а все остальное, например мойку или транспортный налог в саму статью. И можно для статьи использовать аналитику имущество.
Кроме того нужна необходимость учета сложных операций. Например привел ребенка на каток, оплатил выход ребенка и тренера на лед кредиткой, другие родители перекинули деньги за тренера тебе на сбер, а ты отдал тренеру деньги налом. То есть в одной операции заняты 3 различных кошклька.
Ваши знания о формах ограничиваются 2010 годом. В управляемых формах ни того ни другого не нужно
Далее вы пишите, что в ранних версиях 1С не было WYSIWYG. Был, как минимум с 1997 года (версия платформы 7.5).
Далее идет странный опус про привязку к спискам (так и не понял что вы имели ввиду). Вы можете добавить к таблице на форме (которая привязана к данным объекта) добавить дополнительные колонки и заполнять их из запроса, теми же остатками. Динамические списки используются в формах списков, в формах отдельных записей используются крайне редко.
Что значит отсутствует оптимизатор — платформа как минимум оптимизирует запрос, чтобы он не выбирал колонки которые не используются, далее есть оптимизатор самой СУБД
Вы пишите о том что остатки будут «рассчитываться» при каждом открытии. Подбор товаров делается по текущим остаткам, а данные по ним берутся из отдельной таблицы итогов. Также для регистра цен можно использовать таблицу итогов для среза последних.
Что касается непоследственно вопроса про расширение форм — 1С его использует для отдельных элементов отдельных форм (например механизм дополнительных реквизитов и сведений), но вы забываете, что для бизнес-приложения практически невозможно построить красивые диаграммы классов, которые будут всех устраивать. Поэтому в той же Axapta (в которой есть наследование) никаких предметных диаграмм классов для типов документов вы не встретите.
Кроме того вы забываете, что это чаще всего приложения на платформе 1С находятся на поддержке поставщика, то есть периодически ее приходится обновлять. И количество конфликтов при таких наследованиях будет очень большое.
Что касается — посмотрите на форму и покажите такую же — а зачем? Вывести на форму кучу информации из таблиц и навесить на них отборы больших усилий не требует. Но приложения на платформе 1С разрабатываются от документа или АРМ и каждый из них содержит всю необходимую информацию для принятия решения (особенно уклон в эту сторону начался с появлением интерфейса Такси). Сложность приложения оценивается по количество и качеству автоматизируемых бизнес-процессов. Вот например в ERP есть расчет себестоимости с помощью СЛАУ, сейчас в платформе появился объект, который быстро решает СЛАУ. В isFusion такое есть?
Вы тут писали о том, что сообщество 1С очень закрытое — это не так. Мы можете посетить семинар 1С как частное лицо в рамках «Открытого воскресенья» и пообщаться с разработчиками как платформы так и типовых решений. Там вы точно сможете получить ответы на все вопросы из первых уст, а не пытаться найти поддержку на непрофильном форуме.
Откуда у вас возникает потребность формировать на клиенте большие объемы данных, чтобы потом гнать их на сервер?
В чем проблема с тонким клиентом? Я разрабатываю всю новую функциональность на управляемых формах с 2011 года, и у меня не разу не возникало неразрешимых проблем.
Мне некоторые вещи в платформе кажутся избыточными, про качество некоторых типовых решений я вообще молчу. Но в целом количество плюсов в платформе и типовых решениях перевешивает все минусы. Какая альтернатива то? Вот автор поста предлагает isFusion. Но мне разработка интерфейса кодом нафиг не нужна, особенно когда я знаю какие по сложности бывают формы. Даже копать дальше желания нет.
Не нужно путать окна, блокирующих окно владельца (это нормально и достаточно передать в процедуру открытия формы параметр или в самой форме установить флаг) и вызов метода ОткрытьФормуМодально. 1С отказалась от использования последнего, т.к. он не корректно поддерживается браузерами. Чем вам не нравится реализация async/await в 1С? Как это реализовано у вас?
Просто прервется текущий вызов — выведется сообщение об ошибке и все. Между клиентом и сервером передаются только измененые строки и реквизиты. Если изменений нет ничего кроме параметров для вызываемой функции передаваться не будет.
В платформе 1С исторически есть поддержка модальных окон, но сейчас это bad practice.
Пруфы в студию. В SAP веб приложения создаются на NetWeaver, а Axapta с помощью ASP.NET. С основной функциональностью это не имеет ничего общего.
Корректировка формы делается только первом открытии. Разумеется это займет некоторое время, но опять-же не критично. Не понял в чем ограничение? Хотите максимальной скорости и проблемы при обновлении — редактируйте форму поставщика, хотите обычной скорости и без проблем при обновлении — вносите изменения кодом или макетом.
В платформе 1С клиент хранит все редактируемые данные, поэтому отключение сервера для него вообще не проблема. Вы можете выключить компьютер, потом включить и запостить документ в систему. Во время работы с формой может произойти переподключение вообще к другому серверу.
А разве в них есть веб-интерфейс? Эти решения предназначены для локальной сети, в которой разницы с местом выполнения клиентской логики вы не заметите. Если вам не нравится это разделение — можете каждое клиентское событие (с некоторыми исключениями) передавать на сервер и не думать об этом.
Давайте на конкретном примере. Укажите документ вашей ERP, где я могу сделать значимое действие без обращения к серверу. Пока я вижу, что после открытия формы документа «Заказ клиента» — клиентское приложение каждую секунду обращается к серверу вообще без какой либо активности.
Нет никаких проблем, разработчик на встроенном языке сам управляет что выполняется на сервере, а что на клиенте и соответственно может управлять объемом передаваемых данных. То есть код на языке 1С для веб-клиента транслируется в javascript, а в остальных случаях выполняется транслированный из встроенного языка p-code.
Полнофункциональная пользовательская лицензия Navision стоит 3000$, аксапта еще выше
Приведите пример ERP-системы построенной по вашему мнению на нормальной технологии? Неужели isFusion? Разрабатывать формы кодом это простите — анахронизм. Да мне на django веб-приложения проще разрабатывать — там есть хотя бы html шаблон.
Я зашел на ваш сайт и посмотрел демо веб-приложения ERP на базе isFusion. Начать можно с того, что 1С очень много логики работы с формой выполняет на стороне клиента. В вашем решении нажатие на любую кнопку приводит к вызову сервера.
Знаете почему 1С так популярна — потому что за небольшие деньги она предоставляет невероятный объем функциональности. Это касается как платформы, так и флагманской конфигурации — ERP.
Ваша статья понравится хейтерам 1С, коих на данном ресурсе предостаточно. Специалистам по 1С она вряд ли будет интересна, так как многие из вещей которые вы пишите для них проблемой не является.
Выход на лед тренера оплачивается катку, а работа тренера самому тренеру
На мой взгляд система малофункциональная и неудобная. Веду учет расходов с 2015 года на 1С: Деньги. В десктопной версии ввожу чеки, а в мобильной расходы наличными без чека. Самое сложное это правильно настроить категории и аналитики. Например 1С: Деньги позволяет внутри статьи расходов — содержание имущества можно разбить на ремонт, обслуживание, запчасти, материалы, а все остальное, например мойку или транспортный налог в саму статью. И можно для статьи использовать аналитику имущество.
Кроме того нужна необходимость учета сложных операций. Например привел ребенка на каток, оплатил выход ребенка и тренера на лед кредиткой, другие родители перекинули деньги за тренера тебе на сбер, а ты отдал тренеру деньги налом. То есть в одной операции заняты 3 различных кошклька.