Вход | Регистрация
    1  2  3  4  5  6  7  8  9  10  11   

Конкретные вопросы по lsFusion

Ø [длинная ветка, 14.10.19 - 21:06]
Конкретные вопросы по lsFusion
Я
   Bro
 
06.10.19 - 20:21
Здесь только вопросы по lsFusion, без оценок и срача, что в сторону lsFusion, что в сторону 1С. Кто будет начинать того будут блокировать.
   NoFusion
 
301 - 08.10.19 - 14:51
(299) Хозяева сказали - "пусть расцветают все цветы", так что - кто его знает :))
   Bro
 
302 - 08.10.19 - 14:52
(299) Да, темной темой пользуются у нас мало кто, надо будет подстроить, спасибо.

Там warning'ов и ошибок много поддерживается, Implicit declaration один из них, да сейчас изменим название. Например при записи на несоответствие типов. Или что вы под всплывающими подсказками имеете ввиду?

Да, наверное, сейчас глянем.

Мы используем slack.lsfusion.org. Но вот и на мисте теперь :)
   Bro
 
303 - 08.10.19 - 14:53
(300) Пока сделана в IDE генерация по XML и JSON формы и свойств. Но есть куча готовых генераторов по XSD - XML. То есть генерите XML, а потом остальное.
   NoNoFusion
 
304 - 08.10.19 - 14:58
(303) Пальцем покажи, где именно, плиз.
   _DAle_
 
305 - 08.10.19 - 15:02
(299) >Свёртывание блоков кода не работает, или я не знаю как его готовить (в IDEA новичок). Ведь пометки типа //#game - //#game end для свёртывания кода?

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

>Есть ли специализированный форум для комьюнити lsFusion для общения?

Заходите в наш slack: lsfusion.slack.com
   Ещё1
 
306 - 08.10.19 - 15:02
(295) А не рассматривали возможность вместо собственного языка lsFusion использовать Java, но со своими добавками, типа LINQ в C#? Разработчиков на Java пруд пруди, им только въехать в специфику бизнес-приложений и СУБД.
   NoNoFusion
 
307 - 08.10.19 - 15:05
(305) Так там регаться надо хрен пойми в чём, сделаёте уж в Телеге, как все нормальные люди :))
   _DAle_
 
308 - 08.10.19 - 15:09
(307) telegram - instant messenger, slack - это исходно корпоративный чат. slack намного больше подходит для обсуждений и обмена исходным кодом (как минимум).
   Bro
 
309 - 08.10.19 - 15:13
(304) В меню сверху: LSF -> Generate FORM
(306) Язык очень сильно отличается. Ну прям вот совсем. Он гораздо декларативнее тех же Java и C#. И действия в нем это 10-15% всего кода. А в Java и C# по сути 97%

Ну и скажем:
FOR f(A a, g(c(B b))) DO
    t(a) <- b;
непонятно как бы выглядел.

То есть это было бы скрещивание ежа с ужом.

(307) Там веб-версия есть где можно ничего не ставить, но может да, надо еще и мессенджеровый канал сделать
   _DAle_
 
310 - 08.10.19 - 15:18
(306) Это долгий разговор, который обычно называется "DSL vs eDSL". Если вкратце, то у нас в платформе есть много абстракций, которых нет в java, и даже с очень продуманным java-интерфейсом задания этих абстракций, будет намного менее удобно. Более того, java-программистам все равно нужно для начала понять "парадигму", а это одинаково что с DSL, что с eDSL.
Вообще, если уж делать eDSL, то точно не на java - это один из худших языков для этого, тут хотя бы Kotlin нужен, да и то.. В java часть вещей была бы в строковых константах, да и не было бы такой поддержки IDE, как сейчас есть у языка lsfusion. Это если вкратце, тема, конечно, куда обширнее для обсуждения, начиная с того, что вообще платформа не для java-программистов предназначена.
   _DAle_
 
311 - 08.10.19 - 15:25
(305) Ошибся с ссылкой. slack.lsfusion.org
   edem911
 
312 - 08.10.19 - 16:29
Главный вопрос жизни, вселенной и всего такого: Сколько стоит ERP lsFusion, та что в демо-доступе?
   Джо-джо
 
313 - 08.10.19 - 16:30
(312) 0
   CrushBy
 
314 - 08.10.19 - 17:27
(312) Она коммерческая. В ней еще нету локализации под российское законодательство, так что прайс назвать не могу. Платформа - бесплатна и может использоваться в коммерческих решениях.
   МихаилФ
 
315 - 08.10.19 - 18:08
(314) Опа, так в ней еще и нету ничего... а чего же мы тут все обсуждаем?
   IamAlexy
 
316 - 08.10.19 - 18:11
(315) убийцу 1С вестимо..
   PR
 
317 - 08.10.19 - 18:15
(315) Для размытых неконкретных вопросов OFF: lsFusion vs 1C
   Asmody
 
318 - 08.10.19 - 23:18
Наконец-то осилил обе статьи с описанием языка на Хабре.
Что могу сказать?
Вы весьма крутые и очень упоротые. И, кажется, начинаю по-немногу вкуривать идеологию языка. Замешать в кучу декларативное и функциональное программирование – это смело. Мозговыворотно, но очень смело.
Вообще, чувствуется под всем этим серьезная академическая работа. Я такой подход на уровне _концепций_ только в университетской среде встречал.
В общем это – снимаю шляпу!
   Злопчинский
 
319 - 08.10.19 - 23:20
(263) "На клиенте платформа старается ничего не выполнять (если только явно не попросить)."
- внезапно выясняется, что на клиенте все-таки не только чистый рендеринг, но еще какая-то чисто клиентская работа может выполняться (не будем говорит что это тождественно 1С на клиенте), но все же...
то есть - при необходимости - можем управлять клиентом вручную?
   Злопчинский
 
320 - 08.10.19 - 23:26
Вопрос: если есть чел готовый "заехать" под фузину и начать на ней прогать как джун с возможным выходом в мидла/синьора, причем только удаленно и только под вас (ну по крайней мере на начальный длительный период, а то и на постоянку? причем сильный как программист и незамутненный 1Сом и силен в вопросах использования БД и всякое такое) - вы готовы его взять и платить ему? отвечать можно в личку в телегу @Dobrop или скайп Zlopun. Спасибо.
   _DAle_
 
321 - 09.10.19 - 01:33
(318) Спасибо, что потратили наверняка довольно много времени на прочтение этих статей, все же это непросто прочитать их целиком. Только хотел сказать, что статей с описанием языка на Хабре три:
Логика предметной области: https://habr.com/ru/company/lsfusion/blog/458376/
Логика представлений: https://habr.com/ru/company/lsfusion/blog/460141/
Физическая модель: https://habr.com/ru/company/lsfusion/blog/460887/
Уж не знаю, обрадует это вас или расстроит :)
   Ещё1
 
322 - 09.10.19 - 01:46
Посидел тут вечерком с IDEA и накидал решение для тестовой задачи http://luxsoft.by/rabota-v-komande/
Решение минималистическое, только по указанным явно требованиям в задании.
Вот тут: https://pastebin.com/JuReq5Lv

Что хочу сказать, из плюсов:

1. Минимум дубляжа в коде. Один раз описываешь объект со свойствами (таблица со столбцами в терминах БД) - и всё, больше никаких самоповторов, никаких копирований из базы в форму, из формы в какие-то внутренние структуры для обработки и т.п.

2. Если ориентируешься теории реляционных баз данных, отлично знаешь SQL, знаком с функциональным подходом в программировании - то проблем не будет. Иначе придётся попотеть и вспомнить или изучить.

3. Из 1. и 2. следует, что работая с lsFusion приходится больше думать и анализировать, чем печатать и копировать куски кода. Но зато код получается компактным.

4. После компиляции получаешь сразу готовые программы под Windows и Web. Иди и устанавливай клиенту.

Минусы также есть. Но это не серьёзные проблемы, а скорее мелкие недостатки, вызывающие раздражение. Они есть и в IDE при наборе текста и отладке, в документации, и в скомпилированной клиентской программе. Возможно, часть из них вызвана непривычностью как языка, так и IDEA, а часть вполне объективны. Мы разбалованы качественными IDE типа Delphi и Visual Studio, с подробнейшей документацией, с большими коммьюнити и тоннами примеров кода. Так что lsFusion есть куда стремиться.
   Ещё1
 
323 - 09.10.19 - 01:51
(322) Забыл ещё добавить плюс

5. При доработке проекта под себя можно писать код в новых модулях, добавляя свойства в классы (поля в таблицы в терминах БД), дополняя готовые формы приложения, при этом не меняя старый код. Т.е. с точки зрения 1С-овцев, можно дополнять конфигурацию поставщика, не изменяя её, а только дополняя/заменяя, где это необходимо заказчику.
   Злопчинский
 
324 - 09.10.19 - 02:17
(321) не забудьте перенести на сайт в раздел типа "практика программирования" (я выше писал пожелание)
   Злопчинский
 
325 - 09.10.19 - 02:22
(322) было бы хорошо, чтобы накидал это же задачу-решение на 1С8.
и даже может бы сравнил их по собственным ощущениям процесса разработки. затрат времени (с учетом знаний каждого инструмента), удовлетворенности результатом и прочее еще.
было бы полезно.
   Злопчинский
 
326 - 09.10.19 - 02:24
(322) возможно не в тему, но как это решение задачи в итоге визуально выглядит?
оно самодостаточное для визуализации или плагин к уже готовому тестовому примеру?
   НиколаевГ
 
327 - 09.10.19 - 07:52
(322) О, ты меня прям вдохновил один мини-проектик на фузине сделать :))
   НиколаевГ
 
328 - 09.10.19 - 07:56
Фузиновцы, как у вас подключить устройство, которое в винде видится как COM-port, выставить параметры порта, и при открытии определенной формы ждать события от устройства, по которому обработать и записать в БД полученные из порта данные? Есть что-то готовое, чтобы не с нуля писать?
   Salimbek
 
329 - 09.10.19 - 08:51
(328) Я спрашивал на счет работы с Торговым оборудованием - ответ был такой:
" Торговое оборудование только в десктоп клиенте. Там очень забавно сделано, десктоп-клиент абстрактный (одинаковый для всех), но умеет забирать и classload'ить классы с сервера. Поэтому на сервере на java есть классы работы с оборудованием, например:
https://github.com/lsfusion-solutions/erp/blob/master/erp-logics/src/main/java/lsfusion/erp/region/by/machinery/cashregister/fiscalshtrih/FiscalShtrih.java "
Тут: Очередной убийца 1С - lsfusion, Часть 3
   Salimbek
 
330 - 09.10.19 - 08:53
+(329) Т.е., чисто теоретически, даже если в фузине нет ничего такого, что тебе хочется, то можно по аналогии написать на Java и обвязать вокруг фузиновским кодом.
 
 Рекламное место пустует
   НиколаевГ
 
331 - 09.10.19 - 08:59
(330) Для такой фигни на Java что-то выглядит как из пушки по воробьям. К тому-же, у меня не стандартное устройство, а самоделка, которая в 1С работает через NativeAPI драйвер сканера штрихкода.
   Asmody
 
332 - 09.10.19 - 09:06
Но ребусы, типа "RECURSION 1 AND child IS ItemGroup AND parent = child STEP 1 IF parent = parent($parent)" - это ж чокнуться можно!
   Ещё1
 
333 - 09.10.19 - 09:07
(325) На 1С это выглядело бы как создание нескольких зависимых справочников с формами выбора и просмотра, и пары документов с формами ввода. Хотя можно было бы ещё добавить регистр для накопления статистики по хоккейным матчам, но на такой мелкой задаче это overkill и выход за рамки поставленной задачи.

(326) Я всё сделал в отдельном модуле (по ссылке), не меняя исходный модуль. Т.е. в проекте "Турнирная таблица" к демонстрационному модулю HockeyStats, прикладываем написанный мной модуль Plus, компилируем и запускаем. Я специально сделал отдельным модулем чтобы посмотреть, получится ли так. Потому что в 1С мы знаем при обновлении платформы часто сложно совместить свои наработки с новой конфигурацией поставщика. А когда весь свой код лежит отдельно, проблем нет.
   Ещё1
 
334 - 09.10.19 - 09:13
(327) Я тоже думаю, может в Фузине попробовать сделать простенькое Web-приложение для размещения заказов клиентов, с импортом-экспортом в нашу 1С УТ. Когда время свободное появится...
   Asmody
 
335 - 09.10.19 - 09:15
(322) [следует, что работая с lsFusion приходится больше думать и анализировать, чем печатать и копировать куски кода. Но зато код получается компактным. ] - это вообще хорошее свойство функциональных и декларативных языков. Приходится думать в терминах "что должно получиться в результате", а не "как это сделать по шагам". Традиционное программирование, да и "жизненный опыт" в целом затачивает мышление на императивный стиль. И перестраиваться весьма не просто.
   Asmody
 
336 - 09.10.19 - 09:17
Парни, вам надо со стороны веб не попсовый React прикручивать, а что-нибудь такое же мозговыкрутательное, типа elm.
   Ещё1
 
337 - 09.10.19 - 09:20
(332) Да, это рекурсия как она сделана в SQL. С наскока не понять. Вот пример для PostgreSQL: https://habr.com/en/post/269497/
   Bro
 
338 - 09.10.19 - 09:37
(318) Так получилось, что в команде есть крутые информатики, крутые математики, а еще на них деньги блин надо зарабатывать на конкурентном бедном рынке. И это вылилось в условия, где как раз академические подходы не прокатят, а соревноваться с крупняками "в ширину" бесмысленно. Пришлось идти в глубину: никаких дублирующих абстракций, все должно быть максимально выверено и четко, четкий стек, каждое понятие строится на предыдущем, не переписывать то что есть, а использовать все готовое, ну и т.п.
   Bro
 
339 - 09.10.19 - 09:39
(319) Для десктопа есть клиентские действия, но они используются только для оборудования. В вебе они не работает, но там такая песочница что и не разгонишься. В будущем подключим реакт причем практически бесшовно для тонкой фронтендовой настройки (что кстати в SAP/Axapta/1С практически нереально реализовать).
   Bro
 
340 - 09.10.19 - 09:40
(320) Я более того скажу, мы ищем таких людей: https://news.tut.by/press/656172.html
   Paint_NET
 
341 - 09.10.19 - 09:41
>(что кстати в SAP/Axapta/1С практически нереально реализовать)

Вы не спецы ни по чему из перечисленного, зачем такие бессмысленные и глупые заявления? Вот тупо не писать то, что в скобках - никак?
   НиколаевГ
 
342 - 09.10.19 - 09:41
(340) Вопрос был про удалёнку :)
   Ещё1
 
343 - 09.10.19 - 09:44
(336) "Добей меня танцем!" (С) Дети лейтенанта Шмидта. :)
   Джо-джо
 
344 - 09.10.19 - 09:45
(340) (340) На базе платформы разработано и первое крупное бизнес-приложение для торговли — lsFusion ERP. Сейчас это решение успешно внедрено на многих крупных предприятиях торговли и сферы услуг. Программа оптимизирована и подтверждена возможность одновременной работы в ней более тысячи пользователей. На сегодня мы — лидеры в сегменте рынка автоматизации розничных сетей в РБ и работаем с лидерами

А где можно посмотреть ваше портфолио? Список этих крупных предприятий и розничных сетей
   Джо-джо
 
345 - 09.10.19 - 09:53
+отзывы от топов по выполненным проектам
   Bro
 
346 - 09.10.19 - 09:59
(322) Если бы вы привыкли к IDEA, вопросов бы не было, там все по аналогии. Например Structure или Hierarchy, ну и вообще все остальное (нестандартное там Design, Dependencies, нюансы в дебаггере и т.п.).
(325) Мы скорее сделаем обратное, возьмем эту штуку:
https://github.com/1C-Company/dt-demo-configuration
и сделаем ее на lsFusion и статью на хабре выложим (или на инфостарте, но не уверен что там можно)
(328) CrushBy ответит. Знаю что с COM'ом периодически интегрировались. Там есть готовые модули функции.
(335) То что перестраиваться не просто, есть такое. Но это скорее сводится к возможности и желанию учиться. Я периодически когда пишу на lsFusion, ощущения - очень забавные (я то на Java в основном пишу). Но академический интерес в нашей стране штука редкая. Возможно на западе с этим получше.
(336) Я с elm плохо знаком (надо будет глянуть). Но реакт как будто создан для lsFusion. Реакт обеспечивает реактивность на клиенте, а lsFusion на сервере. Вот пример (если не видели, кстати к той же hockeystats демке подключается):
https://codesandbox.io/s/1y0o894rx4
(332) Ну да, она на самом деле не проще SQL'ых. И это я когда писал уровни разработчиков тут самый высокий уровень, даже мне тяжело дается (хотя я в ее реализации участвовал). Но на практике берут основные примеры использования и опытным путем меняют под задачу. Кстати ее прикол в том что она очень хорошо инкрементируется (оптимизируется ее выполнение), на уровне GROUP SUM (а это самые хорошо инкрементируемые операторы)
(341) Я просто представляю какой уровень декларативности (абстрагирования для этого нужен). Хотя да, скорее всего погорячился. Извиняюсь.
(342) Пока у нас опыта мало (хотя как раз с российскими проектами так и работаем). Но готовы рассматривать.
(344) https://luxsoft.by/klienty/ и в новостях те что в процессе. Мы делали пару бумажных отзывов для какого-то тендера, говорили о том, чтобы выложить на сайт (не знаю сделали или нет). Но самый лучший реф - это личный отзыв, и если реально кому интересно, можем дать в личку.
   НиколаевГ
 
347 - 09.10.19 - 10:08
(346) Про COM-port вопрос принципиальный, если с этим какие-то проблемы, например на Java писать надо :), то не будет у меня проектика :)
   CrushBy
 
348 - 09.10.19 - 10:23
(347) В общем, в самой платформе этого нет, но есть в ERP.

Нужно будет использовать 3 файла :
https://github.com/lsfusion-solutions/erp/blob/master/erp-logics/src/main/lsfusion/daemon/ScannerDaemon.lsf

Там объявляются параметры ком-портов и добавляется действие scannerDaemon, исходный код которого вот здесь :
https://github.com/lsfusion-solutions/erp/blob/master/erp-logics/src/main/java/lsfusion/erp/daemon/ScannerDaemonAction.java

Оно пересылает на клиент Java класс, который там выполняется :
https://github.com/lsfusion-solutions/erp/blob/master/erp-logics/src/main/java/lsfusion/erp/daemon/ScannerDaemonClientAction.java

Внутри этого класса есть метод connect, который запускается, обрабатывает события с COM-порта (по сути просто считывает оттуда что пришло) и вызывает метод :
eventBus.fireValueChanged("SCANNER", value);
Собственно, предполагается, что на Java изменяется внутренний обработчик, чтобы принять данные с ком-порта, преобразовать, если надо и вызвать нужное событие.

Дальше просто на уровне lsFusion при объявлении свойства добавляется метка EVENTID 'SCANNER', и с точки зрения разработчика, событие из ком-порта (сканера) будет равносильно тому, что пользователь на форме отредактировал это свойство на значение  value.
   Bro
 
349 - 09.10.19 - 10:26
(348) Я кстати задумался почему эти классы не в платформе в Utils. Надо будет перенести туда.
   CrushBy
 
350 - 09.10.19 - 10:30
(348) Точнее неправильно выразился, писать в Com порт есть модуль в платформе :
https://github.com/lsfusion/platform/blob/master/server/src/main/lsfusion/utils/Com.lsf

А вот, чтобы читать пока нет.

(349) Да, можно. Только там различные устройства любят слать всякую ерунду, или присылать данные с задержками в произвольном порядке. Непонятно, что считать завершением ввод с COM-устройства. Так что в ряде случаев все равно придется пользоваться Java. Но, какой-то простой случай можно поддержать.
   НиколаевГ
 
351 - 09.10.19 - 10:31
(348) Сложно как-то, а есть готовый коду уже на языке платформы, без необходимости с вызовами явы копаться.
   pechkin
 
352 - 09.10.19 - 10:31
(350) а как сканеры штрихкодов у вас работают?
   НиколаевГ
 
353 - 09.10.19 - 10:36
(350) Я знаю, что мне с ком-порта придёт, мне просто надо пробросить в форму всё, что приходит с него.
   CrushBy
 
354 - 09.10.19 - 10:44
(352) Собственно это и есть в ERP обработчик событий со сканеров для подключения сканеров.

(353) Так вот конкретно это Java действие как раз это и делает. Оно просто слушает COM-порт. Видит, что пришел какой-то символ (event.isRXCHAR()) . Ждет 50 миллисекунд (так как сканнер может не сразу все прислать) (Thread.sleep(50)), а потом считывает весь буффер (portBytes = serialPort.readBytes()), и вызывает событие изменения свойства на все, что считал (eventBus.fireValueChanged(SCANNER_SID, barcode.trim())). Если Ваше устройство так и работает, то в Java коде ничего править не придется. Просто подключаете в проект эти 3 файла и пользуетесь. Для начала постройте интерфейс, в котором будет свойство, куда пользователь сможет вводить вручную. А потом просто к его объявлению в конце добавьте EVENTID 'SCANNER'. И тогда при событии с COM-порта туда "запишется" считанное значение, как будто пользователь ввел его вручную.

Да, и все это работает только в Desktop-клиенте.
   НиколаевГ
 
355 - 09.10.19 - 10:51
(354) То есть, по сути, у вас работа с ком-портом в режиме эмуляции клавиатуры организована. Т.е. чтобы получить данные в поле, надо чтобы фокус ввода на этом поле был?
   pechkin
 
356 - 09.10.19 - 10:53
(355) нет, ты не правильно понял
   НиколаевГ
 
357 - 09.10.19 - 10:54
(356) Возможно, я в яве ничего не понимаю, от слова совсем :)
   CrushBy
 
358 - 09.10.19 - 10:56
(355) Там не в Java вопрос. Java просто шлет на специальную "шину" событие. Дальше платформа на форме находит видимое свойство с соответствующим EVENTID и вызывает для него то же событие, что ручное изменение пользователем. При этом не важно, где находится фокус на форме (но важно, чтобы форма была активной и свойство было видимым).
   Bro
 
359 - 09.10.19 - 11:02
(358) >>свойство было видимым
Вот это кстати не факт, но надо смотреть.
   Bro
 
360 - 09.10.19 - 11:18
(322) Вот зачем вы выложили правильное решение (совсем детали я после посмотрю, но в целом вроде ок). У нас же тестовое задание :(

Но кстати что интересно. Класс Player вы назвали 'СоставЫ команд', а Goal - 'Гол'. Очень часто те кто присылают решение, называют классы во множественном числе, это весьма забавно с точки зрения того что у людей происходит в голове. Потому как сам класс называют в одиночном числе, так как
player = DATA Players (Game) выглядело бы странно.
 
 Рекламное место пустует
   Ещё1
 
361 - 09.10.19 - 11:26
(360) Я на самом деле сделал для вас услугу: можете сравнивать мой код с присылаемым от конкурсантов. Ведь задачу можно решить многими способами, зато любителей списывать не думая сразу можно вычислить и отсеять. :) Тем более что решение не самое идеальное, писал на коленке, пробуя разные подходы в платформе. Например, можно было бы сделать всё в одном окне, но сделал отдельное окошко для бомбардиров турнира, чтобы попробовать.

Я видел этот момент со множественным числом. Чего-то подумалось, что список игроков с подписью "Игрок" выглядел бы странно, переделал подпись на ту, как в задании.
   CrushBy
 
362 - 09.10.19 - 11:37
(361) Да, на самом деле, решение все равно неполное. Обычно мы еще просим настроить дизайн формы (чтобы вводились голы в одной основной форме). Плюс еще в нем нету связи голов для матча и голов, введенных вручную. То есть счет может быть 3:2, а голов будет введено 4. Там тоже есть много вариантов решения (начиная, через CONSTRAINT, событие, изменения способа подсчета голов и т.д.).
   Ещё1
 
363 - 09.10.19 - 13:21
(362) Да, я знаю. Вчера поздно вечером писал, не было времени все CONSTRAINTS прописать, и красиво расположить на форме. Но я же не для конкурса писал, а чтобы понять "что за зверь такой lsFusion".

Если интересно, пара моментов с точки зрения стороннего наблюдателя, что вспомнил, в произвольном порядке.

IDE и язык

- При переименовании модуля (Refactor - Rename) название в заголовке MODULE остаётся.
- В языке есть подстановочные поля (или свойства, не знаю как правильно в терминах lsFusion). Типа teamName 'Команда' (Player player) = name(team(player)); IDE выводит на лету для них тип и вставляет в редактор ("-> STRING[30] ="). Эта вставка не всегда обновляется при редактировании свойства. Пару раз пришлось закрыть - открыть проект.
- При наборе выражений типа "name(team(player(goal)))", после набора "(" IDE иногда невпопад вставляет скобку ")". Возможно, это зависит от способа набора, потому что мне с ООП-бэкграундом проще идти от уже заданного в левой части объекта "goal", потом посмотреть его определение и добавить связующее свойство "player(goal)", потом опять сбегать в определение и добавить следующее свойство в цепочке "team(player(goal))", и наконец выбрать то что нам надо "name(team(player(goal)))".
- Почему в CONSTRAINT используем оператор "=", а в FILTERS - "=="?
- Если в модуле есть ошибка, IDE подчёркивает её красной волнистой линией. Но когда делаем Recompile или Build, проект компилируется, внизу написано "Loaded classes up to date. Nothing to reload." И на этом всё. IDE не переходит на строку с ошибкой и не выделяет её цветом. Ошибка обнаруживается только в момент запуска сервера командой Run или Debug. Причём её нужно искать в консоли, среди прочих строк.
- По стилю написания, зачем-то свойства в примерах описываются в одну длинную строку. В IDE Right Margin'ы не просто так сделаны. И не у всех очень широкие рабочие мониторы.

Клиентское приложение

- Мелкий текст в клиентском приложении, не всем подходит. Если в Web-клиенте в браузере это не проблема (в Опере увеличить масштаб), то в Windows-клиенте простого решения не нашёл.
- В процессе разработки 2 раза слетело содержимое таблицы Player (после перезапуска приложения). Кнопку Save перед остановкой сервера нажимал. В зависимой от неё Goal вместо игроков появлялись "Not defined". Не разобрался, с чем связано.
- Если в одной из открытых форм (в одном клиентском приложении) есть зависимые данные, то они обновляются только после проталкивания изменений в основном окне в базу кнопкой Save. В моём примере форма "Таблица бомбардиров" обновлялась, только после сохранения изменений в форме "Турнирная таблица". Причём мало было переключиться на форму "Таблица бомбардиров", нужно щёлкнуть по таблице "Лучшие бомбардиры" в любом месте.
- Пользователь может открыть множество одинаковых форм. Можно ли как-то вместо открытия нового экземпляра формы переключать его на уже открытый?
- Набираем данные в таблицу клавиатурой. Как, редактируя ячейку со связанным списком значений, открыть окно выбора значения из списка? Клик мышкой работает, а с клавиатуры? Пробовал Enter, Ctrl-Enter, F4 как в 1С не работает. Оказалось надо просто нажать в этом поле любую алфавитно-цифровую клавишу. Почему так сделано - непонятно. Ведь нажатие алфавитно-цифровой клавиши в обычной ячейке приведёт к замене текста в ней на введённый символ. Т.е. при быстром наборе таблицы нам надо помнить, где просто текст или число, а где связанный список.
- В выпадающем списке подбора можно делать произвольные манипуляции с данными: удалять, редактировать. Это неправильно и чревато случайными ошибками. Окошко выбора должно быть максимально простым, со списком без возможности редактировать, сохранить в Excel и т.п.
- Нажатие кнопки Delete под таблицей приводит к немедленному удалению строки. Это неправильно. Случайное такое нажатие удалит не только сроку в текущем справочнике, но и все ссылки на удалённое значение во всех справочниках и документах. Представьте, в течение одной сессии вы набрали много данных, нажали случайно Delete - и слетела информация в куче связанных документов, в том числе проведённых. Да, если вовремя заметишь неладное, можно нажать кнопку Cancel в окне и вернуться к тому, что было. При этом придётся набирать всё заново.

Не воспринимайте эти замечания как "наезд". Это скорее предложения как сделать лучше с точки зрения программиста и пользователя.
   Ещё1
 
364 - 09.10.19 - 13:45
(363) Вообще, что касается редактирования табличных данных, можно посмотреть как это сделано в Excel, Access. Это программы, которыми сейчас пользуются везде в офисах, их знают даже секретарши - скопируйте внешний вид и поведение, и пользователи будут аплодировать. Возьмём Access: черезстрочное выделение цветом, лёгкое изменение ширины столбца мышкой, перетаскивание столбцов, сортировка и фильтр спрятаны в маленьких кнопках в заголовке (не загромождается экран), текущая запись, общее количество, кнопка отключения фильтра внизу. Можно добавить сумму, среднее значение как в Excel.

Многое можно также почерпнуть из 1С. Да, у них устаревшие подходы в разработке и древний язык. Но вот над GUI они очень хорошо поработали. Если скрестить одно с другим получится бомба.
   Злопчинский
 
365 - 09.10.19 - 13:52
(340) "собеседование в офисе компании" - это обязательное условие? удаленно никак?
   Злопчинский
 
366 - 09.10.19 - 13:54
А как идейно выглядит такая штука у вас как
допустим, список товаров, визуальная форма. Идем по списку курсором, на визуальной форме для текущего товара показывается картинка товара?
   Злопчинский
 
367 - 09.10.19 - 13:57
минипредложение: как-то с терминологией определиться: чтобы когда говорим\пишем "форма" - имеем в виду визуальную форму, а не FORM (можно и FORM писать но неудобно в обсуждениях раскладку переключать), упомянутый выше "схема" было бы проще для обозначения ваших FORM.
   Злопчинский
 
368 - 09.10.19 - 13:58
кстати, можно ли у вас сохранить старое FORM в платформе для совместимости, и юзать синоним типа SHEMA?
   Злопчинский
 
369 - 09.10.19 - 13:59
а поддерживает ли платформа позиционирование в в визуальных списках по первым набираемым буквам в текущей колонке?
   _DAle_
 
370 - 09.10.19 - 14:02
Небольшие пометки по пунктам к IDE.

>- При переименовании модуля (Refactor - Rename) название в заголовке MODULE остаётся.

Дело в том, что пока у нас нет такого требования, чтобы имя файла совпадало с именем модуля.

>- Почему в CONSTRAINT используем оператор "=", а в FILTERS - "=="?

В качестве оператора сравнения у нас можно использовать и "==", и "=" (что мне лично, например, не нравится).

>- Если в модуле есть ошибка, IDE подчёркивает её красной волнистой линией. Но когда делаем Recompile или Build, проект компилируется, внизу написано "Loaded classes up to date. Nothing to reload." И на этом всё. IDE не переходит на строку с ошибкой и не выделяет её цветом. Ошибка обнаруживается только в момент запуска сервера командой Run или Debug. Причём её нужно искать в консоли, среди прочих строк.

Для того, чтобы получить список всех ошибок, найденных IDE, можно использовать команду LSF|show errors (ctrl+alt+shift+e).
   _DAle_
 
371 - 09.10.19 - 14:04
(363) Да, забыл написать, спасибо большое за перечисленные моменты.
   Ещё1
 
372 - 09.10.19 - 14:11
(369) Нет, в lsFusion либо начнётся редактирование текущей ячейки, либо откроется окошко подбора значения из списка. Поэтому я и написал (364)
   _DAle_
 
373 - 09.10.19 - 14:18
(368) Да, теоретически это возможно.
   Bro
 
374 - 09.10.19 - 14:24
>>- В языке есть подстановочные поля (или свойства, не знаю как правильно в терминах lsFusion). Типа teamName 'Команда' (Player player) = name(team(player)); IDE выводит на лету для них тип и вставляет в редактор ("-> STRING[30] ="). Эта вставка не всегда обновляется при редактировании свойства.

Вообще оно обновляется после редактирования при переходе на другую строку. Но посмотрим, спасибо, может там действительно баг.

>>-При наборе выражений типа "name(team(player(goal)))", после набора "(" IDE иногда невпопад вставляет скобку ")". Возможно, это зависит от способа набора, потому что мне с ООП-бэкграундом проще идти от уже заданного в левой части объекта "goal", потом посмотреть его определение и добавить связующее свойство "player(goal)", потом опять сбегать в определение и добавить следующее свойство в цепочке "team(player(goal))", и наконец выбрать то что нам надо "name(team(player(goal)))".

Да есть такое. Сверху я отвечал. Есть CTRL+ALT+W, но к этому нужно конечно привыкать. Ну и может просто сделаем при вводе точки, чтобы она комплитилась как при CTRL+ALT+W и при ENTER оборачивалось в скобки (пока кстати выглядит самым реальным вариантом).
   Bro
 
375 - 09.10.19 - 14:31
>>- Если в модуле есть ошибка, IDE подчёркивает её красной волнистой линией. Но когда делаем Recompile или Build, проект компилируется, внизу написано "Loaded classes up to date. Nothing to reload." И на этом всё. IDE не переходит на строку с ошибкой и не выделяет её цветом. Ошибка обнаруживается только в момент запуска сервера командой Run или Debug. Причём её нужно искать в консоли, среди прочих строк.
   Bro
 
376 - 09.10.19 - 14:32
Тут нужно понимать что Build чисто java классы build'ит, к lsFusion это никакого отношения не имеет, у него фазы build'а как класса нет. В этом смысле это "скриптовый" язык
   Злопчинский
 
377 - 09.10.19 - 14:46
(374) давайте уже пора выставлять вознаграждения за баги\помарки. или вы как херовая 1С все на юзерах и разработчиках тестировать будете? пойдете по нехорошему пути 1С? или как лидеры отрасли - типа как гугл и прочие - вознаграждение за ошибки найденные? если деньгами трудно - ничего, я, например, на билет от москвы до бреста в купейном соглашусь ;-)
   Ещё1
 
378 - 09.10.19 - 14:48
(370) > Для того, чтобы получить список всех ошибок, найденных IDE, можно использовать команду LSF|show errors (ctrl+alt+shift+e)

OK сделал LSF - Enable meta, LSF - Show errors.
Показала "ошибки":
14:44    (HockeyPlus) Main.lsf(14:60): Ambiguous reference
14:44    (HockeyPlus) Main.lsf(62:83): Ambiguous reference
14:44    (HockeyPlus) Plus.lsf(6:58): Ambiguous reference
А реальную ошибку (я набил мусор "***" в пустую строку) не показала.
Да и обычно компилятор сам тебя тыкнет в ошибку в коде, да ещё выделит цветом. Я ж пишу, избалованы мы хорошими IDE.
   Bro
 
379 - 09.10.19 - 14:48
>- Мелкий текст в клиентском приложении, не всем подходит. Если в Web-клиенте в браузере это не проблема (в Опере увеличить масштаб), то в Windows-клиенте простого решения не нашёл.
В Администрирование -> Доступ -> Пользователи есть Размер шрифта, % Можно его задать.
>- Если в одной из открытых форм (в одном клиентском приложении) есть зависимые данные, то они обновляются только после проталкивания изменений в основном окне в базу кнопкой Save. В моём примере форма "Таблица бомбардиров" обновлялась, только после сохранения изменений в форме "Турнирная таблица". Причём мало было переключиться на форму "Таблица бомбардиров", нужно щёлкнуть по таблице "Лучшие бомбардиры" в любом месте.
То что после сохранения только видно, то в этом собственно и смысл. Про обновление это в 3.beta пофиксили (возможно надо было во 2 влить, но это не критиичный баг).
   Bro
 
380 - 09.10.19 - 14:50
>- Пользователь может открыть множество одинаковых форм. Можно ли как-то вместо открытия нового экземпляра формы переключать его на уже открытый?
Переключается режимом, в той же ERP демке включено
   Bro
 
381 - 09.10.19 - 14:52
>- Набираем данные в таблицу клавиатурой. Как, редактируя ячейку со связанным списком значений, открыть окно выбора значения из списка? Клик мышкой >работает, а с клавиатуры? Пробовал Enter, Ctrl-Enter, F4 как в 1С не работает. Оказалось надо просто нажать в этом поле любую алфавитно-цифровую клавишу. >Почему так сделано - непонятно. Ведь нажатие алфавитно-цифровой клавиши в обычной ячейке приведёт к замене текста в ней на введённый символ. Т.е. при >быстром наборе таблицы нам надо помнить, где просто текст или число, а где связанный список.
Там когда вы жмете кнопку сразу открывается форма и выставляется фильтр, чтобы можно было нажать enter и отфильтровать то что надо. И там не алфавитно-цифровой, например пробел тоже подойдет. И как раз аналогия с текстом и числом, не надо помнить что там именно, вы либо в это поле вводите, либо в фильтр. Как раз симметрия получается, но видимо вопрос привычки.
   Bro
 
382 - 09.10.19 - 14:53
>- В выпадающем списке подбора можно делать произвольные манипуляции с данными: удалять, редактировать. Это неправильно и чревато случайными ошибками. >Окошко выбора должно быть максимально простым, со списком без возможности редактировать, сохранить в Excel и т.п.
Ну тут философский вопрос. Случайную ошибку там не так просто допустить. Но если вы подменяете диалог (а это часто бывает), просто не добавляйте туда эти кнопки.
   Bro
 
383 - 09.10.19 - 14:56
>- Нажатие кнопки Delete под таблицей приводит к немедленному удалению строки. Это неправильно. Случайное такое нажатие удалит не только сроку в текущем справочнике, но и все ссылки на удалённое значение во всех справочниках и документах. Представьте, в течение одной сессии вы набрали много данных, нажали случайно Delete - и слетела информация в куче связанных документов, в том числе проведённых. Да, если вовремя заметишь неладное, можно нажать кнопку Cancel в окне и вернуться к тому, что было. При этом придётся набирать всё заново.

Дело в том, что для "глобальных" объектов обычно DELETE идет в новой сессии (NEWSESSION), а в этом случае логика немного другая. А для "локальных" DELETE не так критичен. Но тут да, возможно надо понастраивать будет логику по умолчанию.
   Bro
 
384 - 09.10.19 - 14:57
>Можно добавить сумму, среднее значение как в Excel.

Ну это как раз есть, что касается остального. Нужно было соблюсти баланс между Excel и бизнес-приложениями. Мы старались получить что-то посередине, но возможно да, нужно было больше акцентов в сторону Excel / Access. Но тут надо еще фидбек пособирать.
   Bro
 
385 - 09.10.19 - 14:59
(365) Можем рассмотреть и удаленно. Хотя такого опыта мало, надо будет пообсуждать.

(366)
image = DATA IMAGEFILE (Sku);
EXTEND FORM sku
      PROPERTIES image(s) PANEL
;
Собственно в ERP в товарах так и сделано
   Ещё1
 
386 - 09.10.19 - 15:00
(374) Спасибо. Непривычно, но CTRL+ALT+W работает как надо. Всяко лучше чем бегать по коду и искать определение.
   Bro
 
387 - 09.10.19 - 15:02
(368) Можно. Если слово новое проблем с обратной совместимостью не возникает. Тут согласен было два варианта:
- Схема
   Представления:
   - Форма
   - Отчет
   - Экспорт

- Форма
   Представления:
   - Интерактивное
   - Статичное
       - Печатное
       - Структурированное

Второе чище, но менее привычно. Тут решили пойти "hard way".
   Bro
 
388 - 09.10.19 - 15:04
(378) Там хитро, так как граматика сложная, как recovery'ся после грамматических ошибок. Во многих случаях recover нормальный, но его можно только императивным путем улучшать, что мы постепенно и делаем. В IDE GrammarKit это не из коробки (и не уверен что из коробки это теоретически можно сделать).
   Bro
 
389 - 09.10.19 - 15:17
>давайте уже пора выставлять вознаграждения за баги\помарки. или вы как херовая 1С все на юзерах и разработчиках тестировать будете? пойдете по нехорошему пути 1С? или как лидеры отрасли - типа как гугл и прочие - вознаграждение за ошибки найденные? если деньгами трудно - ничего, я, например, на билет от москвы до бреста в купейном соглашусь ;-)

:) У нас есть отговорка - open-source. Но давайте флуд лучше в другое теме :)
   _DAle_
 
390 - 09.10.19 - 15:23
(378) Да, я, видимо, не учел, что синтаксические ошибки туда могут и не попасть. Но ведь хотя бы красным в самом исходнике должно было пометить: https://imgur.com/a/2bfi4H1 ?
   Ещё1
 
391 - 09.10.19 - 15:24
(381) Задумка понятна, но видимо не до конца отполировано.
Смотрите на примере, я стою на ячейке Имя игрока, и хочу ввести туда "Иванов" из списка. Начинаю набирать:
- "и" - всплывает список для выборки
- "в" - над списком всплывает окошко Filter Игрок = Value
- "анов" - и ничего не происходит. Почему? Потому что во всплывшем списке 1-м столбцом идёт ID записи, а имя - только 2-м. Платформа автоматически начинает поиск по ID.

OK закрываю окошко фильтра, сдвигаюсь в столбец Имя игрока, начинаю набирать "иванов" Enter --> пусто. Почему? Потому что автоматически условия фильтра стоит "=", а не "Start with" или лучше "Contains".
   НиколаевГ
 
392 - 09.10.19 - 15:34
(391) Во блин ты в бетатестеры записался :))
   Ещё1
 
393 - 09.10.19 - 15:41
(379) > В Администрирование -> Доступ -> Пользователи есть Размер шрифта, % Можно его задать.

Ага, спасибо. У меня английский язык, поэтому Administration - System - Security - Users, таблица Custom user. Тоже есть момент. Я поставил себе 300%, сохранил, перезапустил программу. Буквы огромные, пошёл туда же уменьшать до приемлемых. А в окошке редактирования Custom user левая панель не скруллится. Табом видно что идёт переход по полям, но на экране не видно строки Font Size. Хорошо заметил в этом окошке справа вверху кнопку развернуть, после этого строка Font Size выехала наполовину из-под нижней грани окна программы...
   pechkin
 
394 - 09.10.19 - 15:46
А как авто тестирование происходит?
   pechkin
 
395 - 09.10.19 - 15:46
юниты там, бдд и тд итп
   Ещё1
 
396 - 09.10.19 - 15:53
(382) > Ну тут философский вопрос. Случайную ошибку там не так просто допустить. Но если вы подменяете диалог (а это часто бывает), просто не добавляйте туда эти кнопки.

Нет, диалог выбора не подменял, это всё тестирую на Хоккейном турнире. Т.е. все эти кнопки по умолчанию.

Я б советовал воспользоваться опытом 1С и добавить во все справочники и документы отдельный флажок ПометкаУдаления, наравне с Проведено для документов. Что даёт: при удалении элемента справочника или документа они не удаляются совсем из базы, а лишь помечаются на удаление. Окончательное удаление может сделать администратор через обработку "Удаление помеченных объектов", которая проверяет наличие ссылок на удаляемые строки во всей базе. Ну либо использовать какой-то свой механизм. У нас десятки раз было, что пользователи случайно помечали товары на удаление, а потом удивлялись почему при их выборе программа ругается. Но пометить - не значит удалить, всегда можно вернуть обратно без последствий.
   Злопчинский
 
397 - 09.10.19 - 15:56
(392) мы его теряем!
   Ещё1
 
398 - 09.10.19 - 16:07
(390) Да, волнистой линией первый символ помечает. Я это указал в (363).
Я понимаю, что это не так и просто, но если каким-то образом IDE видит ошибки и помечает линией, наверное как-то можно перед запуском проекта в них тыкнуть носом. Не ожидая попытки старта и остановки сервера. Но это так, рассуждения в слух...
   Ещё1
 
399 - 09.10.19 - 16:08
(392) Счас накидаю хлопцам, пусть шлифуют. :)
   Злопчинский
 
400 - 09.10.19 - 17:04
У них там от стада обезьян запросы на доработку всего что в голову взбредет обезьянам идёт мутным потоком с Ниагарский водопад, думаешь они будут отвлекаться на платформу?
Если до этого баги не воввлазили в разработке - то у них там не разработка а муть
  1  2  3  4  5  6  7  8  9  10  11   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.