Вход | Регистрация
    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С. Кто будет начинать того будут блокировать.
   ptiz
 
201 - 07.10.19 - 13:11
(196) - но это же переписка всего решения, всех запросов. Есть же у вас какой-то устоявшийся стандарт на порядок документов, запросы к остаткам? Каков он?
   Salimbek
 
202 - 07.10.19 - 13:33
(201) Вы уверены, что в чужой системе есть проблема 1С-ная с сотней тысяч документов в последней секунде?
   ptiz
 
203 - 07.10.19 - 13:52
(202) Мне интересно: сталкивались ли они с этим и как решали. Пока вижу ответ: "если надо - допилите вот так и вот так". Что странно, учитывая позиционирование системы "для больших".
   Мэс33
 
204 - 07.10.19 - 13:54
(203) кстати, приведенный пример "допиливания" показывает, насколько сильно можно кастомизировать поведение системы. В 1С ты привязан к уже созданным заботливо разработчиками платформы объектам, здесь же, в фузине, ты сам волен менять все, как тебе нужно. )
   Salimbek
 
205 - 07.10.19 - 14:00
(203) А для чего это нужно? Ну вот, например. Манагер "А" посмотрел, что есть такой-то товар в нужном количестве и сделал наряд на сборку заказа. Грузчику прилетело задание - он пошел его собирать. Тут же манагер "Б" посмотрел - что товар тоже есть и сделал второй наряд - но ему пришел отлуп, что товара в нужном количестве нету. Он посмотрел - действительно, количество доступное уже уменьшилось, и пошел смотреть альтернативные варианты. Так для чего нужно получать остатки с точностью до "порядок документов в секунде"?
   ptiz
 
206 - 07.10.19 - 14:02
(205) Перепроведение задним числом.
   Bro
 
207 - 07.10.19 - 14:32
(197) Уточните какие именно его функции. В lsFusion за ее функцию отвечает другие абстракции.
(198) Вместо dropdown используются формы, но платформа сама пробрасывает ввод в фильтр этой формы.
(200) в конечном итоге все сводится к sql, причем минимуму запросов, императивно отчет только рендерится.
   Bro
 
208 - 07.10.19 - 14:35
(201) нет как раз, если был
last = GROUP LAST Document d ORDER dateTime(d), d;
Вы изменяете на
last = GROUP LAST Document d ORDER dateTime(d), order(d), d;

Все запросы где использовалось это свойство "перепишутся сами".
   Asmody
 
209 - 07.10.19 - 15:05
(207) Мне не нужен фильтр. Я хочу значение в поле выбрать из выпадающего списка. Вы же хвалитесь, что у вас жутко редактируемые строки в таблицах.
   Asmody
 
210 - 07.10.19 - 15:08
Вот так можно сделать?
https://i.imgur.com/bTuIK4z.png
   Bro
 
211 - 07.10.19 - 15:11
(209) А чем это отличается от формы под полем ввода? В смысле выпадающий список это просто форма без рамок. И основной фокус редактируемости строк, не в самом процессе редактирования, а в том что список показывается с учетом сделанных изменений, но не сохраненных в базу.
   Asmody
 
212 - 07.10.19 - 15:12
(211) Так я у вас и спрашиваю. Как это сделать в 1С я знаю.
   Bro
 
213 - 07.10.19 - 15:18
(212) Так ничем не отличается, поэтому обычно делается формой. Можно если сильно надо рамки сделать уже.

Может конечно когда-нибудь сделаем специальный стиль формы "dropdown" (без заголовка и линий), но пока смысла не видно зачем.
   Devilment
 
214 - 07.10.19 - 15:29
(213) А мы вот не видим смысла, зачем динамические списки редактировать...
   Asmody
 
215 - 07.10.19 - 15:30
(213) Отличается тем, что Ctrl+Down, Down, Down,...Down, Enter
   Bro
 
216 - 07.10.19 - 15:31
(215) SPACE, down, down, down, CTRL+ENTER.
   Asmody
 
217 - 07.10.19 - 15:52
А так можно сделать? https://i.imgur.com/eJLbyKA.png
   pechkin
 
218 - 07.10.19 - 15:55
(210) а как ты такое сделал? или список форматирвоанную строку принимает нынче?
   pechkin
 
219 - 07.10.19 - 15:56
(216) у вас выбор из формы не по ентеру?
   Ёпрст
 
220 - 07.10.19 - 15:58
(0) не увидел в демке.. радиобуттоны есть ?
   Asmody
 
221 - 07.10.19 - 15:59
(218) Список выбора у элемента УФ понимает
   Bro
 
222 - 07.10.19 - 16:06
(217) С точки зрения контролов пока есть жесткий их выбор. Но тут проблема в том что таких как вы кинули контролов миллионы. Поэтому мы сейчас хитро делаем, реакт прикручиваем для рендеринга, и тогда можно как с отчетами, сохраняешь дизайн и любую React-компоненту вставляешь. Это даст просто дикую гибкость и позволит фронтенд в том числе делать.
(219) По ctrl+enter, так как enter ввод в поле. но можно перегрузить.
(220) Для этого просто BOOLEAN используется
PROPERTIES 'A' = (x()=T.A), 'B' = (x()=T.B), 'C' = (x()=T.B)
При нажатии на checkbox x() меняется на выбранное значение, а второе значение автоматически становится false и снимается
ну и смотри верхний ответ.
   pechkin
 
223 - 07.10.19 - 16:07
(222) Это нужно будет еще и реакт знать?
Однако стек технологий и учебная курва для вашего языка все вышеи выше
   Юрий Лазаренко
 
224 - 07.10.19 - 16:10
(223) А "учебная курва" это что?
   Bro
 
225 - 07.10.19 - 16:11
(223) нет, если вам не нужно будет суперкастомный дизайн, парадигма будет старой ( как сейчас или в УФ) Но если захотеть, можно будет любой фронтенд прикрутить. Вплоть до классического интернет банкинга, за данные (state) при этом будет полностью платформа отвечать.
   pechkin
 
226 - 07.10.19 - 16:12
(224) learning curve
   Юрий Лазаренко
 
227 - 07.10.19 - 16:15
(226) Ишь как...
   pechkin
 
228 - 07.10.19 - 16:17
(227) не читал ты в детстве компьютерру
   Юрий Лазаренко
 
229 - 07.10.19 - 16:23
(228) В детстве я читал "Радио" и "ЮТ для умелых рук". Там такого не было.
   Hillsnake
 
230 - 07.10.19 - 17:33
(224) напомнило Ну Масяня, стерва-курва… (С)
 
 Рекламное место пустует
   Ещё1
 
231 - 08.10.19 - 00:10
(139) Будет здорово если сможете реализовать синтаксис с точкой, т.е. Объект.Свойство вместо Свойство(Объект). Мало того, что многим ООП-стиль более привычен (1С-никам в т.ч.), так ещё и автодополнение можно будет использовать: набрал "Объект." и выпал список свойств.
   Ещё1
 
232 - 08.10.19 - 00:14
(231) И заодно возможность набирать reserved words не КАПСОМ. Можете запретить идентификаторы, совпадающие с зарезервированными словами языка lsFusion, чтобы избежать ошибок. Но это даже набирать тяжело: надо держать левой рукой всё время Shift зажатым, остаётся правая рука для набора текста.
   Злопчинский
 
233 - 08.10.19 - 00:28
? есть какой-нибудь функционал оформления и печати  путевых листов (пусть даже простых)
   Злопчинский
 
234 - 08.10.19 - 00:29
? есть ли самый простейший вариант адрсеного учета - справочное хранение? (без количества, просто справочно в какой ячейке какие товраы хранятся).?
   Злопчинский
 
235 - 08.10.19 - 00:30
есть ли поддержка ордерных складов? или чисто только учетная схема "приход-расход"?
   Злопчинский
 
236 - 08.10.19 - 00:31
полностью ли реализована схема комиссионной торговли (как со стороны комитента, так и комиссионера)?
   Злопчинский
 
237 - 08.10.19 - 00:32
есть ли учет факторинговых операций?
   Злопчинский
 
238 - 08.10.19 - 00:33
есть ли полдная поддержка ВЭД (хотя бы тупо отражение операций по импорту с пошлинами, сборами).
   Злопчинский
 
239 - 08.10.19 - 00:33
как отражаются допрасходы на доставку товара по поступлениям и по отгрузкам?
   Злопчинский
 
240 - 08.10.19 - 00:35
есть ли анализ какие заявки покупателей (входящие заявки на отгрузку от нас-порставщиков покупателям) оплачены?
   _DAle_
 
242 - 08.10.19 - 01:27
(232) Вкратце: ключевых слов у нас довольно много (сейчас около 400), многие из них вполне себе распространенные слова английского языка, запретить их все - это немного жестко. Более того, с текущей схемой мы при расширении языка и добавлении в него новых ключевых слов не нарвемся на потерю обратной совместимости. Возможно, мы сделаем что-нибудь в этом направлении, но там у каждого известного мне решения есть свои минусы.

Насчет набора кода.. Сейчас при наборе кода в IDEA на ключевые слова неплохо вроде бы работает автоподстановка, так что можно набирать начало ключевого слова маленькими буквами и затем нажимать "ввод". В таком случае не нужно вообще трогать shift
   Ещё1
 
243 - 08.10.19 - 01:34
(242) Ясно, спасибо. 400 ключевых слов в языке это конечно жёстко, их же нужно помнить...
   H A D G E H O G s
 
244 - 08.10.19 - 01:36
(242) Есть ссыль на типы данных?
Массивы, структуры, соответствия - вот это все.
   Злопчинский
 
245 - 08.10.19 - 01:39
не понял как идейно сделать:
- есть на визуальной форме документ (тут вроде понятно)
- есть кнопка на форме
- жмакаем на кнопку - хотим получит эксельный файл в котором будет некая печатная форма неких данных (связанных с этим документом, например документ-основание) и эту печформу в формате экселя отправить по почте (автоматом, без всяих вопросов и визуальных форм, предполагаем что все данные есть и настроено).

каким образом формируется эксельная печформа? - запускается форма фузины (без визуального отображения), которая описывает шаблон печформы.. а дальше что - ?
   Злопчинский
 
246 - 08.10.19 - 01:43
(98) "при этом предусмотрев возможность пользователю настраивать что угодно." - то есть я должен написать некий универсальный метаконструктор настроек отображения формы (как пример) - и написать такой метаконструктор на прикладном уровне?
   Злопчинский
 
247 - 08.10.19 - 01:48
(135) то евть для рисования простейшей формы - джун в фузине должен иметь навыки программирования для извлечения и связи данных, составляющих источник для печатной формы? то есть по сути - знать всю фузину?
   МихаилФ
 
248 - 08.10.19 - 04:20
(207) "Уточните какие именно его функции." Кого ЕГО? Вы вообще в курсе за СКД?
   бегинер
 
249 - 08.10.19 - 07:58
(244) такое накопал:
Оператор STRUCT - создание свойства, которое создает структуру.

https://documentation.lsfusion.org/pages/viewpage.action?pageId=7012362
https://documentation.lsfusion.org/pages/viewpage.action?pageId=1572909
   Devilment
 
250 - 08.10.19 - 08:03
(243) Кроме этих четырёхсот ты ещё должен знать много слов из Postgre...
   ProgerVShapke
 
251 - 08.10.19 - 09:02
Может быть вопрос уже был, но лень читать все миллионы веток...
А почему вообще решили, что нужен ещё один конструктор типа 1с?
1С, как мне кажется, держит рынок за счет типовых решений. А конструктор (конфигуратор) это приятный бонус.
Если уж писать систему с нуля, то почему бы не выбрать js,java,python,c# или любой другой "типовой" язык?
Что фузина даёт такого, что на node.js, например, будет делаться через адские муки и миллионы человекочасов?
   Devilment
 
252 - 08.10.19 - 09:15
(251) Более высокий уровень абстракции.
   HeKrendel
 
253 - 08.10.19 - 09:16
Методология учета затрат на себестоимость материалов, товаров, готовой продукции, базы распределения статей затрат
   Devilment
 
254 - 08.10.19 - 09:19
(253) Нет у них такого, для них себестоимость - это цена закупки.
   ProgerVShapke
 
255 - 08.10.19 - 09:28
(252) например?
   Bro
 
256 - 08.10.19 - 09:32
(231) Да, но там есть нюанс с тем что такой синтаксис пересекается с пространствами имен, и еще с парой мелких правил. Хотя пока как видится можно будет добавить, даже не нарушая совместимость, так что я думаю сделаем. Что касается completion, есть CTRL+ALT+W который делает что-то похожее, complete'ит именно выражение в коде, то есть пишите Документ, жмете CTRL+ALT+W и видите все свойства документа, набираете их, IDE сама скобки расставляет. Хотя да не привычно.

Вообще в будущем возможно еще инкапсуляцию и множественное объявление добавим:

CLASS A {
    quantity, stock, date = DATA LONG, Stock, DATE;
}

Но это все синтаксический сахар, и для модульных решений не так критичен.

(232) Уже говорили IDE комплитит, делали так, чтобы не заблокировать всякие распространенные слова вроде sum.
Но вообще есть простой способ, кто-то на хабре подсказал, сделать если module с маленькой то все слова с маленькой. Ну и естественно надо escape'инг идентификаторов будет добавить.
(243) В SAP и SQL емнип их около 1000. С другой стороны completion в каждом месте знает ключевые слова, плюс даже если "библиотечным стилем" делать, вам все равно придется помнить имена классов, методов, параметры и т.п. Плюс возможно мы еще CTRL+Q добавим, чтобы на операторе сразу документация подтягивалась, как в Foxpro когда то было.
   Devilment
 
257 - 08.10.19 - 09:33
(255) Например, они скрывают от тебя взаимодействие клиента с сервером приложения, и сервера приложения - с СУБД.
   _DAle_
 
258 - 08.10.19 - 09:33
(250) Ключевые слова postgresql вам понадобится знать только в редких случаях. Запросы руками в lsfusion не пишутся.
   ProgerVShapke
 
259 - 08.10.19 - 09:36
(257) А в чём это хорошо? То есть платформа сама рулит тем, когда ей ходить на сервер и как, когда ей ходить в СУБД и как. В простейших случаях это прекрасно. Но если возникает проблема оптимизации? Например, расстояние до сервера 10000км. Пинг приличный. Ходить туда при каждом чихе получается долго и дорого, надо как-то оптимизировать клиент-серверное взаимодействие. А как?
   Bro
 
260 - 08.10.19 - 09:37
(244) А они не нужны в lsFusion (по ссылке примеры с коллекциями):
https://habr.com/ru/company/lsfusion/blog/458376/#data
Массив / Список - это свойство (функция) с параметром INTEGER. Map<A, B> это свойство с параметром A и значением B. И т.п.
(245)
FORM myPrintForm
  OBJECTS d=Document
  ....
;

sendSomething(Document doc) {
    PRINT myPrintForm OBJECTS d=doc XLSX TO exportExcelFile;
    EMAIL TO 'myAdress' ATTACH exportExcelFile();
}

FORM documents
    OBJECTS d=Document
    PROPERTIES sendSomething(d)
;
 
 Рекламное место пустует
   ProgerVShapke
 
261 - 08.10.19 - 09:37
(257) И опять же непонятно тогда, а как рассчитывать ресурсы? Например, купим крутой сервер, а платформа начнет всё на клиенте делать. Как решать проблему?
   ProgerVShapke
 
262 - 08.10.19 - 09:39
(257) или например такая ситуация. Мне надо получить какую-то таблицу из СУБД и выполнить некоторые операции. Допустим таблица большая. Тащить её из СУБД на сервер приложения более менее ок, тащить на клиент как-то не очень. Где будут выполнены операции?
   Bro
 
263 - 08.10.19 - 09:43
(249) На самом деле этим функционалом мы очень давно не пользовались. Он вводился как костыль для GROUP MAX STRUCT(f(a),g(a)), но потом необходимость отпала когда GROUP LAST появился - GROUP LAST a ORDER f(a),g(a). Для него я не помню есть ли явные типы и т.п.
(250) Зачем?
(255) https://lsfusion.org/opportunities что из этого может обеспечить java/c# и т.п. из коробки?
(259) На клиенте платформа старается ничего не выполнять (если только явно не попросить). Количество раунд-трип вызовов минимизируется практически до абсолютного минимума, плюс все что можно сделать асинхронно, делается асинхронно.
(261) (262) На клиент ничего не тащится, он считается слабым звеном, так как нестабилен, не может шарить ресурсы с другими процессами и т.п.
   Bro
 
264 - 08.10.19 - 09:46
(262) Более того даже с сервера БД на приложений очень редко что тянется, только если отчет отрендерить и клиенту отдать.
   ProgerVShapke
 
265 - 08.10.19 - 09:48
(263) что вы подразумеваете как "из коробки"? Не из коробки, это нужно накодить причем на языке, который надо ещё выучить.
   Bro
 
266 - 08.10.19 - 09:51
(247) Нет, там одна и та же логика везде. То есть изучаете три оператора, OBJECTS, PROPERTIES, FILTERS (хотя там изучать нечего, просто добавляешь их на форму). И можешь и интерактивные формы создавать, и печатные, и с CSV, XML, JSON и т.п. работать.
(265) Из коробки значит сделали
FORM f
    OBJECTS d=Document, dd=DocumentDetail
    PROPERTIES date(d), sum(d), любыеВычислимыеДанные1(d), любыеВычислимыеДанные2(dd)
    FILTERS document(dd) = d
;
А дальше оно все само. И ввод обеспечивает, и форму обновляет при изменении любых данных и при сохранить нажать в базу все записывает. И все в 4 строках кода.
   Ещё1
 
267 - 08.10.19 - 10:16
(256) В Delphi к примеру если нужен идентификатор, совпадающий со служебным словом, ставим перед ним знак "&": https://imgur.com/a/Q0bSBzy Для справки, в Delphi "всего" 64 служебных слова.

Чтобы посмотреть параметры функции/метода, либо место определения идентификатора - просто наводим на него мышкой. Можно также во всплывающей подсказке показать выдержку из справки по этому идентификатору (Help Insight).

При наборе имени объекта и "." сразу же появляется выпадающий список его свойств. Можно продолжать набор, и список будет фильтроваться. Также можно вручную вызвать автодополнение нажатием Ctrl-Space: https://imgur.com/a/czvTsCe

Аналогично при наборе имени метода/функции и "(" сразу же всплывает списки параметров для всех вариантов этого метода/функции, с учётом перегрузок. Т.е. Delphi IDE очень хорошо заточено на ручной набор кода.

Понятно, что всё сразу сложно осилить, но это важно с учётом ориентации lsFusion на ручной набор кода, а не визуальный дизайн.
   NoFusion
 
268 - 08.10.19 - 10:21
(266) А можете максимально подробно, как для новичков, объяснить что делает этот код и что при этом происходит на сервере приложения и в СУБД?
   vitkhv
 
269 - 08.10.19 - 10:23
Читаю таблицу Сравнение платформ по возможностям и сразу в глаза бросается, что 1С не работает в ORM стиле?
А к какому стилю вы отнесете такие обращение к объектам БД?:
ПоступленияУТ = Документы.ПоступлениеТоваровУслуг.Выбрать(НачалоДня(ДатаНач), КонецДня(ДатаКон));
Пока ПоступленияУТ.Следующий() цикл
КонецЦикла;
   Bro
 
270 - 08.10.19 - 10:28
(267) Вы видимо не видели что уже сделано в IDEA. Там это все есть, и completion и подсветка ошибок и куча чего еще

То есть пишете f(A a, B b) = набираете и она сама начинает подставлять только свойства с классами A или B, приоритезировать варианты и т.п. Да когда синтаксис "обратный" с композициями проблема, если нужно x(t(a)), то x не будет комплитится. Соответственно можно набирать сначала t, оно комплитится, а потом жать ctrl+alt+w и набирать x. Не очень привычно, и да при синтаксисе с точкой процесс эргономичнее был бы (но это допсинтаксис мы его доделаем)

Единственное до чего пока руки не дошли до CTRL+Q (помощь по синтаксису), но сделаем.
(268) Объявляет форму с двумя объектами (по умолчанию списками):
Документ и Строка документа.
Добавляет показатели на форму (в оба списка)
Показывает строки только верхнего выбранного документа.
(269) Там специальный тип Doc-style под 1С выделен, как микс. Но вообще конечно там надо переделать, по сути и Axapta и SAP и 1C это SQL-style, у них есть ORM-style но на практике он очень мало используется.
   ДенисЧ
 
271 - 08.10.19 - 10:28
(269) В таблице сравнения с 1с - сплошная ложь. Не надо её читать.
   NoFusion
 
272 - 08.10.19 - 10:32
(270) Еще подробнее, прямо построчно. Что такое d, Document и так далее. Откуда форма берёт данные? Что делает Filters?
   vitkhv
 
273 - 08.10.19 - 10:33
(270) Довольно часто он используется на практике, когда нужно накидать что-то быстро, не важна производительность и особенно часто его любят использовать при COM соединениях (что мне потом отдают на оптимизацию).
7.7 - так это вообще торжество ORM, там фактически только ORM.
Ну и по остальным пунктам куча вопросов критических, особенно отсутствие чистого SQL в запросах.
   vitkhv
 
274 - 08.10.19 - 10:45
(270) А 8.x все манипулирование данными INSERT, UPDATE суть ORM.
   Bro
 
275 - 08.10.19 - 10:54
(272) Document - класс. d - имя объекта. Читает из базы. Фильтрует показываемые объекты на форме. Вот тут достаточно простой пример с пояснениями целиком
https://documentation.lsfusion.org/pages/viewpage.action?pageId=2228240
Тут по частям.
https://documentation.lsfusion.org/pages/viewpage.action?pageId=60555450

>> 7.7 - так это вообще торжество ORM, там фактически только ORM.
Для 7.7 - отдельная колонка (смотрите внимательнее).

>> особенно отсутствие чистого SQL в запросах.
Вот тут да, 1С надо в левую колонку к SAP переместить

>> А 8.x все манипулирование данными INSERT, UPDATE суть ORM.
Поэтому полностью в колонку к САП и Аксапта не переместишь. По сути чтение - SQL, запись - ORM. Но чтение все же важнее записи, так что все же в колонку SQL-style пойдет.
   NoFusion
 
276 - 08.10.19 - 11:56
(275) То есть d - это набор экемпляров класса Document, получается?
   Bro
 
277 - 08.10.19 - 11:58
(276) вроде того. но d - имя. Можно его не задавать и обращаться Document, но это просто неудобно.
   NoFusion
 
278 - 08.10.19 - 12:05
(277) То есть, получается, в момент открытия формы из БД будут выбраны все документы с нужными реквизитами одним запросом, или платформа определит, что на форму помещается, условно, 20 записей, и при скролле для новых документов, появляющихся на форме, будет новый запрос к БД?
   Bro
 
279 - 08.10.19 - 12:08
(278) Нет естественно, не все, то что влезет на экран + следующую страницу. По мере перемещения текущей записи дочитает остальные. Но можете поставить PAGESIZE 0 тогда все считает и на сервер лазить не будет.

Тут кстати важный момент сначала запросом читаются объекты, потом одним запросом свойства. Это позволяет "протолкнуть считанные объекты" в запрос свойств и считать их только для видимых объектов.
   NoFusion
 
280 - 08.10.19 - 12:16
(279) А управлять количеством выбираемых записей можно программно, или платформа сама считает от разрешения экрана? И, если, допустим, у каждого документа по 100 тыс. детальных записей, в каждой по 30 полей, серверу БД не поплохеет от такой выборки?
   Bro
 
281 - 08.10.19 - 12:22
(280) Опция PAGESIZE я же написал. Но по умолчанию платформа сама автоматически рассчитывает его от разрешения экрана. То есть чтобы влезло в грид + страница сверху / снизу для pagedown и pageup.
   NoFusion
 
282 - 08.10.19 - 12:28
(281) Понял, я думал только либо 0, либо платформа сама. А на второй вопрос каков ответ?
   Bro
 
283 - 08.10.19 - 12:33
(282) Про 100 тыс. детальных записей?

Ну так она считает первые 50 только, а остальные 99500 не будет. Или я не понимаю в чем вопрос?
   NoFusion
 
284 - 08.10.19 - 12:37
(283) Вот у нас на экране - 50 документов, у каждого по 100 тыс. детальных записей - вопросы:
1. Сколько детальных записей будет считано.
2. Сколько детальных записей будет считано, если в документе есть вычисляемое на лету свойство - количество детальных записей.

Если ответ на оба вопроса одинаковый, то откуда тогда возьмется количество детальных записей
   Bro
 
285 - 08.10.19 - 12:48
(284) То есть вы не про мой пример, а про:

count = GROUP SUM 1 BY document(DocumentDetail d);
FORM
   OBJECTS d = Document
   PROPERTIES (d) count
;

Она считает 50 записей документов. При подсчете count протолкнет туда предикат и в запросе будет что-то типа:
SELECT COUNT(*) FROM documentDetail dd JOIN view.id=dd.document GROUP BY dd.document
В этом случае, SQL сервер скорее всего количество записей индекса прочитает, но да в худшем случае пробежит по всем.

Но есть магия, добавляете в count MATERIALIZED:

count = GROUP SUM 1 BY document(DocumentDetail d) MATERIALIZED;

И все она достанет это поле прямо из базы. И к documentDetail обращаться не будет. И инкрементально будет сама обновлять count (причем опять таки не обращаясь к documentDetail, добавилась одна запись, просто count увеличит на единицу)
   NoFusion
 
286 - 08.10.19 - 13:03
(285) Понятно, а где нибудь в документации это подробно описано? Если нет, то стоит описать, так как это достаточно неочевидные вещи, ведь, получается, неудачно выбранное для вывода в шапку группировочное свойство по детальным записям может создать в некоторых случаях проблемы.
   Bro
 
287 - 08.10.19 - 13:10
(286) в документации естественно описано, но в разделе физическая модель. Собственно разработчики могут не заниматься premature оптимизацией управляя физической моделью. Теоретически этим может условный dba заниматься. Конечно было бы круче если бы платформа сама расставляла материализации (как и индексы, расположение в таблицах) в зависимости от статистики использования, но это дело будущего.
   NoFusion
 
288 - 08.10.19 - 13:14
Ладно, пошли дальше - допустим, у нас форма вида master - detail, где  в detail  - строки детальных записей. В этом случае, получается, будет считано тоже 50 детальных записей? А если, допустим, в detail мы захотим изменить сортировку - считаются во временную таблицу на сервере СУБД все детальные записи, из них будет выбрано 50 первых по порядку сортировки, и только они уедут на сервер приложения и затем на клиент? А на СуБД временная таблица будет уничтожена?
   NoFusion
 
289 - 08.10.19 - 13:15
(287) Сама хорошо, конечно, но для начала неплохо было бы хотя-бы предупреждение разработчику выдавать в таких случаях, что, например, неплохо было бы это свойство материлизовать.
   HeKrendel
 
290 - 08.10.19 - 14:04
С Себесом инфы не подвезли? А не то ваши ИНсерты прямо очень интересны и за 4к сообщений уже немного поднадоели
   CrushBy
 
291 - 08.10.19 - 14:17
(290) Это вопрос к конфигурации, а не платформе. Как сделаете, так и будет.
   Bro
 
292 - 08.10.19 - 14:18
(253) (290) В платформе? Нет. Это вообще ветка про платформу.
(288) Причем тут временная таблица? Она сразу делает запрос с LIMIT'ом, если есть индекс СУБД пробежит по первым 50 записям и вернет их. Нет, сделает sort внутри (никакой времянки все равно не будет), но это уже к СУБД вопрос.
На сервер приложений, а дальше клиент только 50 едут.
(289) Ну вы заранее не знаете, как часто будет форма использоваться, сколько записей будет считываться и т.п. То есть эта задача эквивалентно автоматическому определению материализаций.
   NoFusion
 
293 - 08.10.19 - 14:28
(292) В теории да, а вы с профайлером всё это гоняли для всяких разных случаев? Если нет, то тоже было бы неплохо погонять и результаты выложить, всё полезнее, чем с 1С-никами сраться :))

А про второй вопрос - ничего вам не мешает запилить режим проверки конфигурации, с варнингами для разработчика, если платформе что-то покажется подозрительным, даже если это разработчик так задумал :)) Некий упрощённый вид статического анализатора.
   NoFusion
 
294 - 08.10.19 - 14:29
(291) А как вы будете СЛАУ решать на вашей платформе?
   CrushBy
 
295 - 08.10.19 - 14:32
(294) Если понадобится, то на Java или PostgreSQL в отдельном модуле. В нем появятся новые свойства и действия, которые потом разработчик при желании сможет использовать.
   NoFusion
 
296 - 08.10.19 - 14:33
(295) И сколько времени, думаете, у вас это займёт в человекочасах, ну хоть примерно?
   Bro
 
297 - 08.10.19 - 14:44
(296) ну минут 10:
http://commons.apache.org/proper/commons-math/userguide/linear.html
https://mvnrepository.com/artifact/org.apache.commons/commons-math3/3.2

В pom прописывается

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.2</version>
</dependency>

И вперед, математическая библиотека по подсчету чего угодно уже в проекте
   Мэс33
 
298 - 08.10.19 - 14:46
(297) кстати тестами покрываете продукт?
   Ещё1
 
299 - 08.10.19 - 14:47
У вас в команде кто-нибудь пользуется тёмной темой оформления в IDEA? Низкий контраст текста по-умолчанию, без поднастройки никак. https://imgur.com/a/keKf99A

Всплывающие подсказки пока отсутствуют, те что есть - неинформативны ("Implicit declaration"?).

Свёртывание блоков кода не работает, или я не знаю как его готовить (в IDEA новичок). Ведь пометки типа //#game - //#game end для свёртывания кода?

В модуле HockeyStats мне кажется есть небольшая ошибка, надо исправить идентификатор
CONSTRAINT hostTeam(Game team) = guestTeam(team)...
на
CONSTRAINT hostTeam(Game game) = guestTeam(game)...

Есть ли специализированный форум для комьюнити lsFusion для общения? Всё-таки mista.ru не совсем то. Если только хозяева этого сайта не решили расширить сферу деятельности.
   NoFusion
 
300 - 08.10.19 - 14:49
Ладно, идём дальше. Я могу на основании xsd-схемы как-то сгенерировать класс, например, и вывести его на форму? Или всё руками делать надо?
  1  2  3  4  5  6  7  8  9  10  11   

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