Вход | Регистрация
    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С. Кто будет начинать того будут блокировать.
 
 
   Bro
 
1 - 06.10.19 - 20:21
Вопрос от бегинер:
подскажите по платформе (то что это не бизнес-задача не надо спорить, чисто вопрос по возможностям компонентов платформы):
можно создать данные не хранящиеся в БД ( в физ. табличках постгри) и вывести их в грид?

1) создать 2д массив, без хранения в бд: а(1,1)=2;a(1,2)=4;a(2,1)=3; и т.д.
2) описать форму на которой будет грид у которого данные не из БД а из этого 2д массива - который храниться в жизни реалтайма
3) где почитать о программной работе с гридом:
3.1 узнать кол-во выделенных строк
3.2- программно отсортировать
3.3- программно отфильтровать/установить отбор
3.4- заморозить-зафиксировать нескол. колонок
3.5- программно скрыть/отобразить строку
3.6- программно раскрасить ячейку, а не всю строку грида

ответьте по пунктам желательно что есть что нет

т.е. каковы именно функц. возможности компонента UI вашего "gridview"

4) Jasper Reports  - аналогично, можно этот 2д массив вывести отчет?, т.е. выводить в отчет данные которых нет в БД, не ручками в редакторе прописать текстом - набрать массив, а программно вывести 2д массив в отчет.
   Красный рассвет
 
2 - 06.10.19 - 20:21
Хай, Бро
   H A D G E H O G s
 
3 - 06.10.19 - 20:25
Какие СУБД поддерживаются и где скачать сервер приложений?
   H A D G E H O G s
 
4 - 06.10.19 - 20:26
Есть ли аналог внешних обработок?
   Bro
 
5 - 06.10.19 - 20:29
1. Первичные свойства могут быть локальными, тогда они в базу не идут. Их можно в Администрирование ->Интерпретатор или где угодно создавать (например lsfusion.org/try). То есть делаете:

a = DATA LOCAL LONG (LONG, LONG);

// выведет все параметры а и их значения
FORM a
    OBJECTS (i1=LONG, i2=LONG)
    PROPERTIES VALUE(i1), VALUE(i2), a(i1,i2)
    FILTERS a(i1,i2)
;

// можно сделать хитрее, i2 закинуть в колонки выдаст матрицу 10x10 в ней будут значения
FORM a
    OBJECTS i1=LONG
    PROPERTIES VALUE(i1)

    OBJECTS i2=LONG
    PROPERTIES a(i1,i2) COLUMNS (i2) HEADER (i2)
    FILTERS iterate(i1,1,10), iterate(i2,1,10)
;

run() {
    a(1,2) <- 5;
    a(4,2) <- 7;
    a(1,3) <- 9;

    SHOW a;
}

все хранится в жизни риалтайма, как вы говорите.
   Bro
 
6 - 06.10.19 - 20:36
3) например так:

// выведет галочку отметки и поле на форму с количеством отмеченных записей
selected = DATA LOCAL BOOLEAN (INTEGER, INTEGER);
EXTEND FORM b
    PROPERTIES selected(i1)
    PROPERTIES 'Кол-во отм.'=(GROUP SUM 1 IF selected(x))
;

но есть предопределенные операторы по работе с текущими фильтрами, порядками и т.п. например:
https://documentation.lsfusion.org/pages/viewpage.action?pageId=35520946

countAll = GROUP SUM 1 IF [FILTER b.i1](x); // показывает количество записей с учетом текущих фильтров в гриде i1
   Bro
 
7 - 06.10.19 - 20:41
3.2-3.3 Нужно опять таки понимать что вся работа декларативна, если нужно добавить сложный фильтр, делается

filterX = DATA LOCAL BOOLEAN();
EXTEND FORM z
    FILTERS NOT filterX() OR (f(a,g(b)) + (GROUP SUM 1 IF h(c) = a) > 5)
;

соответственно если в где угодно будет
filterX() <- TRUE;
фильтр сразу включится, сбросите в NULL выключится

есть еще группы фильтров, которые может выбирать пользователь:
https://documentation.lsfusion.org/pages/viewpage.action?pageId=3866671

С порядками с большего все похоже, но есть нюансы, могу потом рассказать
   Bro
 
8 - 06.10.19 - 20:43
3.4 к сожалению пока нет, так как ни свинговые не gwt гриды такого почему-то не поддерживают (то есть в мире почему-то не принято ими пользоваться). Странно конечно, но посмотрим может сами добавим в ближайшее время. Ну и в реакте явно есть компоненты, когда его подключим проблема уйдет автоматически.
   Bro
 
9 - 06.10.19 - 20:45
3.5 Смотрите вы можете сделать
run() {
    a(1, x) <- NULL;
}

и тем самым по сути ряд с 1 удалится. Можно сделать
deleted = DATA LOCAL BOOLEAN (LONG);
EXTEND FORM a
    FILTERS NOT deleted(i1)
;

Тогда если где угодно написать
deleted(3) <- TRUE;

строка 3 по сути удалится.
   Bro
 
10 - 06.10.19 - 20:46
3.6. Делаете

EXTEND FORM a
   PROPERTIES a(i1,i2) BACKGROUND RGB(255,0,0) IF g(i1) + h(i2) > 5
;

И она подсветит красным все ячейки у которых g(i1) + h(i2) > 5
   Лефмихалыч
 
11 - 06.10.19 - 20:47
(0) чтобы было без оценок и срача, не надо было вам с них начинать. А то "я сначала высрусь сообществу на голову, а потом буду за культуру бытия агитировать". Иди уже теперь в жопу с вещами.
   Bro
 
12 - 06.10.19 - 20:48
4. Просто вместо SHOW a, делаете PRINT a. И форма выводится на печать. К базе никаких обращений не будет (забыл сказать что LOCAL'ы во временных таблицах будут, то есть обращения будут но не к базе). Могу подробнее рассказать, что именно по отчетам интересует.
   Bro
 
13 - 06.10.19 - 20:50
(3) Пока есть адаптеры к PostgreSQL и MS SQL. Но в продакшне пока MS SQL не тестировали (к сожалению желающих пока не было, когда есть бесплатный PostgreSQL).

Скачать тут:
https://documentation.lsfusion.org/pages/viewpage.action?pageId=18645035

Смотря что интересует, если для разработки раздел разработка, если для выполнения - раздел выполнение.
   Злопчинский
 
14 - 06.10.19 - 20:54
Правильно ли понял, что если на форме есть поля, и надо по факту ввода в поле сделать какой-то простой арифметический пересчет (ну например ндс выделить), то все вычисляется на сервере? клиент только и сключительно рендеринг формы и ничего иначе?
   CrushBy
 
15 - 06.10.19 - 20:55
(14) Да.
   Bro
 
16 - 06.10.19 - 20:56
(4) Любые действия выполняют функцию внешних обработок:

run() {
}

Для того чтобы их выполнить есть функция EVAL, то есть :

INPUT f=TEXTFILE DO // запросили файл
    EVAL STRING(f); // выполнили код в нем, предполагается что внутри есть действие run

Также есть Администрирование -> Интерпретатор, который по сути этот EVAL и делает. Там можно ввести код и выполнить, как в условном SQL Management Studio (правда без подсветок и всего такого).

(14) Да. Идеологически очень к React близко.
   Bro
 
17 - 06.10.19 - 20:57
(16) В интерпретаторе скрипты можно сохранять обзывать и т.д. и т.п.
   Злопчинский
 
18 - 06.10.19 - 20:58
(15) если все считается на сервере - то вычисления пишутся на языке фузины? или надо что-то писать в терминах скриптов/процедур СУБД?
   CrushBy
 
19 - 06.10.19 - 20:59
(14) Более того, все такие вычисления выполняются исключительно на сервере БД, а не на сервере приложений. Сервер приложений занимается в основном "компиляцией запросов" и другими техническими функциями.
   CrushBy
 
20 - 06.10.19 - 21:00
(18) Нет, все только на языке фузины. Дальше это все "компилируется" в SQL запросы и выполняется на сервере БД.
   Злопчинский
 
21 - 06.10.19 - 21:03
про язык программирования
"Каждый модуль состоит из последовательности инструкций"
- где посмотреть полный перечень допустимых инструкций
- каков вообще синтаксис языка? (могу тупить, привычного описания синтаксиса что-то не увидел)
- есть вообще что-то типа Синтакс-Помощника по языковым конструкциям (типа как в 1С)?
   Злопчинский
 
22 - 06.10.19 - 21:06
(20) вдогонку к предыдущему вопросу про язык
- если все пишетяс на языке фузины - перечнь встроенных функций где посмотреть (типа как в 1С: Цел, Окр, СтрДлина, Сред, СокрЛП итд)..?
- какие примитивные типы данных есть? (не реквизиты/поля бд и форм), а именно типа как в 1С - Дата, Число, Строка итд..?
   CrushBy
 
23 - 06.10.19 - 21:07
(21) Допустимые инструкции. https://documentation.lsfusion.org/pages/viewpage.action?pageId=2228688 Там же описан синтаксис.

Да, что-то похожее есть в IDE. Вот тут есть GIF'ки : https://habr.com/ru/company/lsfusion/blog/465573/
   Devilment
 
24 - 06.10.19 - 21:08
(5) Это что, если мне надо дерево вывести на форму - мне его вручную собирать надо?
   Bro
 
25 - 06.10.19 - 21:09
   Злопчинский
 
26 - 06.10.19 - 21:10
(23) увидел сам уже. как-то малость непривычно - в самом начале описания языка идет какая-то куча кода в качестве примера (что нихрена непонятно), а раздел инструкций слева в меню...
   Bro
 
27 - 06.10.19 - 21:12
(24) нет просто его объявить:
https://habr.com/ru/company/lsfusion/blog/460141/#tree
и тут:
https://habr.com/ru/company/lsfusion/blog/468047/
дальше все само.
(26) там есть отдельно описание понятий словами (раздел Парадигма) и описание синтаксиса (раздел Язык)
Вообще предполагается что изучается Парадигма, а в язык уже за подсказками лазится, когда уже все понятия знаешь.
   Devilment
 
28 - 06.10.19 - 21:15
(27) Это из данных базы, понятно как соберется. А из внешних данных (преcловутый xml), которые в базу не надо писать - как?
   Злопчинский
 
29 - 06.10.19 - 21:16
(27) нехорошо ссылаться на левые ресурсы при описании языка и общепринятых сущностей. все-таки лучше работу с деревом, таблицей значений, структурой (еще что-то?) описать на самом сайте продукта.
Те же самые примеры-статьи на хабре имхо лучше если они будут дублироваться из первоисточника на сайте.
   ПросТак
 
30 - 06.10.19 - 21:16
Злоп, неужели тебе интересно разбираться в фузине?
 
 
   Devilment
 
31 - 06.10.19 - 21:18
(30) Ему просто скучно... У меня вот был практический интерес, а платформа у них не может того, что мне надо :((
   CrushBy
 
32 - 06.10.19 - 21:18
(29) Согласен. Возможно, перенесем. Просто там немножко другой формат - статьи, которые не очень соответствуют документации. В документации также есть в разделе HowTo немного про деревья :
https://documentation.lsfusion.org/pages/viewpage.action?pageId=46367457
   Злопчинский
 
33 - 06.10.19 - 21:18
так как все вчисления в т.ч. и данне для отображения "делаются" на сервер - есть готовые инструментальные средства на языке фузины для популярных сущностей? например, разобрать и отобразить XML на форме? есть ли встроенные инструменты верификации сформированного иксемеля по схеме?
   Злопчинский
 
34 - 06.10.19 - 21:20
Можно ли в списках/таблицах форм фузины делать одну строку в виде "многострочного моноблока из нескольких строк" (для предотвращения скроллинга на узких экранах)?
   Bro
 
35 - 06.10.19 - 21:24
(33) Для работы с XML используются те же формы. То есть SHOW a, PRINT a, EXPORT a, IMPORT a. Механизм один и тот же.
В формате how/to tutorial:
https://habr.com/ru/company/lsfusion/blog/460141/#struct
и тут:
https://documentation.lsfusion.org/pages/viewpage.action?pageId=60555456

Более техническая информация тут:
https://documentation.lsfusion.org/pages/viewpage.action?pageId=29884537
   Devilment
 
36 - 06.10.19 - 21:24
(33) О, нас двое, которым это надо :)) И я даже догадываюсь, почему :))
   CrushBy
 
37 - 06.10.19 - 21:24
(33) В GUI, который формируется именно на фьюжене есть только Деревья (TREE), Таблицы (GRID) и свойства (что-то вроде объекты ввода). Плюс различные типы контейнеров, в которые их можно помещать. С визуальной точки зрения XML можно отобразить только используя их.

Разбор XML, как и JSON идет через оператор IMPORT, который берет XML и записывает их в свойства. Вот тут немного примеров, правда для JSON :
https://documentation.lsfusion.org/pages/viewpage.action?pageId=55935068
https://documentation.lsfusion.org/pages/viewpage.action?pageId=46367614

Встроенных в язык верификаций нет, но есть функции, которые принимают на вход 2 строки (xml и xsd) и записывают в специальное свойство результат проверки.
   Bro
 
38 - 06.10.19 - 21:25
(33) Для верификации есть готовое действие внутри платформы
   CrushBy
 
39 - 06.10.19 - 21:25
(34) Нет. На данный момент нельзя.
   Злопчинский
 
40 - 06.10.19 - 21:27
(39) хреново. это чаще востребовано чем раскраска... появится когда нибудь?
   Bro
 
41 - 06.10.19 - 21:27
(34) Нет, парадоксально, но я даже на реакте таких компонент не видел. Видимо считается что двухэтажные строки тяжело читать, так как весь смысл таблицы рушится.
   Злопчинский
 
42 - 06.10.19 - 21:29
(37) "но есть функции, которые принимают на вход 2 строки (xml и xsd) и записывают..."
- где перечнь функций (которых возможностей нет в языке) с описанием вход-действие-выход? эти функции написаны на чем-то внешнем? (не на фузине)...? если да - то какой набор функций таких идет в установочном пакете?
   CrushBy
 
43 - 06.10.19 - 21:29
(40) С нашей стороны это поддержать несложно. Проблема в нижележащих технологиях. В desktop'е используется JTable из Swing, в веб клиенте - не помню какой компонент. Ни тот, ни другой не поддерживают многострочных строк. Компонентов, которые это позволяют в природе очень мало (что в десктопе, что в вебе). Возможно, в какой-то момент мы изменим компоненты для отображений на другие, которые это поддерживают. Но это не в ближайшей перспективе.
   Злопчинский
 
44 - 06.10.19 - 21:31
(41) читать легко, так как текущая такая многоэтажная строка выделяется сеlектом. конечно, при массовой ручной работе это может быть затруднительно, есть такое. Будет ли такая возможность, хотя бы опционально?
   Devilment
 
45 - 06.10.19 - 21:31
(37) Это что за дичь: Для создания JSON с вложенными тэгами нужно создать форму с соответствующими объектами, связанными через конструкцию FILTERS. На основе зависимостей между ними создается JSON с соответствующей структурой.
Как форма связана с экспортом в JSON?
   Злопчинский
 
46 - 06.10.19 - 21:31
(44) ответ в (43), ок
   CrushBy
 
47 - 06.10.19 - 21:32
(42) Они написаны на Java. Мы их включаем в модули, написанные на языке lsFusion вместе с Java классами, которые их реализуют. Пока описания на documentation.lsfusion.org нет.
Вот тут большинство находится, но есть и другие. Как правило, все сводится к простой функции от параметров, которые записывают результат в свойство с предопределенным именем. Например, тут :

https://github.com/lsfusion/platform/blob/b35fba224014487217c91517b5047e6cf508a461/server/src/main/lsfusion/system/Utils.lsf

(41) Bro, сам же сказал без оценочных суждений и начал тут.
   Злопчинский
 
48 - 06.10.19 - 21:33
(45) да, поддерживаю.
для меня вполне понятно, когда на вход обработки я получаю массив данных без физуального отображения и сериализую его в джсон.
получается что в фузине ряд действий нельзя просто" сделать не имея "вспомогательной" визуальной формы?
   CrushBy
 
49 - 06.10.19 - 21:34
(45) Можно рассматривать JSON, как форму определенной структуры. Это не очень легко сначала понять, но после нескольких примеров обычно люди понимат. Плюс в IDE есть возможность автоматически сгенерировать структуру форму по шаблону JSON.
   CrushBy
 
50 - 06.10.19 - 21:35
(48) Для плоского JSON (простого массива) будет простая форма (с одним объектом грубо говоря). Это нужно для случая сложного JSON'а. Посмотрите пример 4 вот здесь :
https://documentation.lsfusion.org/pages/viewpage.action?pageId=46367614
   Злопчинский
 
51 - 06.10.19 - 21:36
(47) полуофф: нехорошо. получается фузина достаточно бедна для работы с кучей необходимого. и либо делать самому страдая и потея (хотя это сделано давно кемто) либо лазить по левым источникам и хрен чего там внутри.
.
отсюда вопрос: планируется ли наращивать функциональность языка для работы с разными типами данных рахными сущностями? или по крайней мере включать в поставку набор стандартизированных функций для популярных операций/сущностей? (типа как БСП в 1С)
   Devilment
 
52 - 06.10.19 - 21:37
(49) Что такое "форма" в вашей парадигме тогда? Или в разных случаях под формой подразумеваются разные сущности?
   CrushBy
 
53 - 06.10.19 - 21:37
(48) И эта форма не совсем визуальная. По сути она объявляет структуру. Ее при желании можно отобразить, но фактически она будет использоваться только для экспорта/импорта. Это сделано, так как по сути JSON и XML - это просто один из видов представления формы.
   Злопчинский
 
54 - 06.10.19 - 21:38
(50) извините, не понимаю.
получается что для некоторых действий которые в принципе не требуют визуального отображения - трансформация одних данных в другие - мне обязательно надо делать визуальную форму? это ограничения\парадигма платформы или как?
   CrushBy
 
55 - 06.10.19 - 21:39
(52) Нет. Всегда одно и тоже. Это набор объектов (OBJECTS) со свойствами (PROPERTIES), которые связаны друг с другом через фильтры (FILTERS).
   CrushBy
 
56 - 06.10.19 - 21:40
(54) Она не визуальная, так как вы не настраиваете в ней дизайн. Вы объявляете структуру формы. См (55).
   Злопчинский
 
57 - 06.10.19 - 21:40
(52) присоединяюсь к вопросу.
в 1С (ну по крайне мере в 77)
форма
- это сущность для какихто визуальных действий
- или контейнер для кода без визуального отображения.
   CrushBy
 
58 - 06.10.19 - 21:41
(54) Это не ограничения - это смысл парадигмы в общем-то. Я понимаю, что это очень необычно, так как аналогов этому нигде нет. Но в этом и есть отличие lsFusion от всего другого. Хорошо это или плохо можно оценить только после использования.
   Злопчинский
 
59 - 06.10.19 - 21:41
(56) детализируйте плиз более формально определение "форма"
   Devilment
 
60 - 06.10.19 - 21:41
(53) То есть, форма существует только на сервере приложения, и программист управляет тем, будет ли она отображена на клиенте?
   Devilment
 
61 - 06.10.19 - 21:43
(53) Интересный подход. А что тогда делать с двоичными данными в xml?
   Злопчинский
 
62 - 06.10.19 - 21:43
(58) офф: вы заблуждаетесь ;-) все уже до вас проходили: точно так же форма как обычно визуальная сущность могла еще в 77 использоваться для неких вспомогательных действий, а т.ч. и с полями и обьектами на форме, но без визуализации.
   CrushBy
 
63 - 06.10.19 - 21:44
(60) В lsFusion вы вообще не оперируете сервером и клиентом - для вас это "прозрачно". Поэтому рассматривать форму в таком контексте, я думаю не стоит.
   Злопчинский
 
64 - 06.10.19 - 21:45
эээ. поясните.
у нас внезапно нарисовалась в фузине трехзвенка?
- клиент (только рендерит форму)
- сервер приложений (что такое это в фузине?)
- сервер БД
.
??
илия что-то неправильно понимаю?
   CrushBy
 
65 - 06.10.19 - 21:46
(62) Возможно, тут скорее инновационность в способе ее задания, а не в том, что она существует без визуализации.

(61) Поясните, о каких двоичных данных идет речь ? Base64 ?
   Злопчинский
 
66 - 06.10.19 - 21:47
(63) дайте более-мене формальное определение формы. что это такое и для чего используется. а то как-то непонятно.
 
 Рекламное место пустует
   CrushBy
 
67 - 06.10.19 - 21:47
(64) Технически там трехзвенка была всегда и есть. Клиент - тонкий и занимается только отображением и обработкой пользовательского ввода. Просто логически, когда вы разрабатываете на lsFusion вы вообще об этом не знаете и ничем не управляете. Все делается автоматически платформой.
   Devilment
 
68 - 06.10.19 - 21:48
(63) Я про то, как устроено внутри. В 1С, например, форма одновременно может существовать на клиенте и на сервере, и изменения формы на клиенте не всегда приводит к взаимодействию с сервером.
   Devilment
 
69 - 06.10.19 - 21:49
(65) Всё, что может быть в CDATA
   CrushBy
 
70 - 06.10.19 - 22:09
(68) В lsFusion абсолютно другой принцип работы с формами, поэтому тут не очень легко сравнивать. С точки зрения текущей реализации могу для понимания сказать, какие данные где хранятся.

Во-первых, все таблицы в lsFusion - это динамические списки в терминологии 1С.

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

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

Все изменения, сделанные пользователем, но не сохраненные в базу данных хранятся во временных таблицах на сервере БД. Именно таким образом достигается возможность редактирования в динамических списках. То есть вы изменили, проскроллировали дальше. Этих данных уже ни на клиенте, ни на сервере нету. Но они есть во времянках на сервере БД.

Если что-то подробнее нужно, то пишите - расскажу.
   CrushBy
 
71 - 06.10.19 - 22:11
(69) Не очень понимаю, почему они бинарные. Это просто данные примитивных типов. Вы просто объявляете на форме свойства с такими же именами, и когда идет IMPORT/EXPORT, то в них соответственно запишется или считается.
   CrushBy
 
72 - 06.10.19 - 22:17
(66) К сожалению, достаточно тяжело дать простое и точное определение формы. Это как с определением предела в математике (для любого эпсилон больше 0 существует дельта больше 0 и т.д.). То есть понятие предела вроде как простое, а точное определение - сложное.

Наиболее простое и близкое определение я приводил выше :
Это набор объектов (OBJECTS) со свойствами (PROPERTIES), которые связаны друг с другом через фильтры (FILTERS).

Таким образом объявленная форма может использоваться в 3х случаях :

# Отображение пользователю (так называемое Интерактивное представление). Будет автоматически сформирован дизайн. Дальше он настраивается при помощи инструкции DESIGN.
# Формирование печатной формы JasperReports (Печатное представление). Тоже есть автоматическая формирование шаблона, но дальше нужно рисовать нужный шаблон в JasperSoft Studio.
# Собственно импорт экспорт JSON/XML. Изначально хотели сделать отдельные абстракции. Но в рамках борьбы с лишними абстракциями Bro решил натянуть сову на глобус и задействовать для этого логику формы. В этом есть определенный смысл, но есть и недостатки. Плюс в том, что разработчику не нужно учить новые абстракции.
   tty12
 
73 - 06.10.19 - 22:27
(72) По моему мнению, в таком случае, полностью теряется понятие "Форма".
Под формой вы понимаете набор структурированных данных - если угодно, то некую таблицу). Которая может выступать источником данных для Формы (в нормальном понимании), а также отчета и (для меня это странно) источником/приемником, служащим для обмена данными.
   CrushBy
 
74 - 06.10.19 - 22:32
(73) Тогда уж не таблицу, а несколько таблиц, связанных друг с другом. Да, можно было бы использовать какой-то другой термин, но учитывая, что он используется чаще всего именно для форм, то был выбран такой. Кроме того, он короткий - 4 буквы всего :) А как бы назвали Вы ? Источник данных - странно звучит, да и это не источник данных. Это именно объекты (сущности) объединенные по определенному принципу.
   CrushBy
 
75 - 06.10.19 - 22:32
(74) Точнее связанные по определенному принципу.
   Asmody
 
76 - 06.10.19 - 22:34
Нормальных отчетов у вас нет, я так понимаю?
   Злопчинский
 
77 - 06.10.19 - 22:35
(70) "Все изменения, сделанные пользователем, но не сохраненные в базу данных хранятся во временных таблицах на сервере БД."
- двое одновременно "взяли" некий набор данных на редактирование. Например, условный пример. Юзер1 и Юзер2 получили обьект со значением 50.
Юзеру2 увеличил значение на 10.
Юзер1 увидит это изменение, или по крайней мере при записи своих измененйи будет уведомлен о том что данные изменены?
(пример вырожденный, в реальности может быть более сложное типа если юзеры прочитали одновременно еще неизмененный обьект, если один юзер изменил обьект, другие изменения других юзеров должны блокироваться) - как такое разруливается?
   CrushBy
 
78 - 06.10.19 - 22:36
(76) Мы не разделяем формы на Формы и Отчеты. Просто у любой формы может быть печатное представление, которое может выводиться на печать или экспортироваться в Excel, Word и т.д.
   Злопчинский
 
79 - 06.10.19 - 22:38
(76) нету у них. среда для автоматизации неполная. средставми платформы без привлеченяи левых сущностей хрен что напечатаешь. так я понял.
   Злопчинский
 
80 - 06.10.19 - 22:39
"напечатаешь" = "печатное представление"
   tty12
 
81 - 06.10.19 - 22:40
(74) В первую очередь - ваша "Форма" это набор данных.
То, что вы из нее делаете любую сущность - крайне странно, т.к. этот набор данных может подходить для отчета, но слишком избыточен для элемента справочника или наоборот и это лишь одна из вариаций...
Я правильно понял,что ваша "Форма" - абстрактный набор данных, из которого вы лепите, что хотите?
   CrushBy
 
82 - 06.10.19 - 22:42
(77) Во-первых, в lsFusion нет понятия изменение объекта. Есть понятие Добавить/Удалить объект и понятие изменение значения свойства (которое может быть как для одного объекта, так и для нескольких объектов). При желании можно в какой-то момент времени (например, при открытии) запоминать старые значения свойств и сравнивать их с новыми при сохранении, при этом выдав сообщение. Но пока это придется делать вручную. Но есть возможность устанавливать что-то вроде "семафоров". То есть при открытии формы просто вешать на нее блокировку и не давать другим пользователям заходить на редактирование.

(79) Я же просил - в соседнюю ветку.
   CrushBy
 
83 - 06.10.19 - 22:43
(79) И вы неправильно поняли. Все печатается исключительно при помощи средств lsFusion.
   CrushBy
 
84 - 06.10.19 - 22:45
(81) Это не набор данных. Набор данных - это конкретное подмножество данных. А тут именно схема данных. Приблизительно такая же разница, как между XML (набор данных) и XSD (схема).
И, на самом деле, "схемы" у форм, отчетов и JSON/XML похожи.
   tty12
 
85 - 06.10.19 - 22:50
(84) Тоесть "Форма" Это описание структуры данных, она же схема?
А почему вместо Form не использовали Schema? На две буквы больше? - да, но, кмк, логически более правильно для понимания программистом.
   CrushBy
 
86 - 06.10.19 - 23:02
(85) Да, кстати, вот только что придумал термин получается :) Но тогда бы пришлось объявлять сначала SCHEMA, а затем FORM, что немного бы усложнило логику задания форм, хотя в 90% случаев схема бы создавалась ради формы. А сейчас они совмещены по сути. Так что да, возможно имело бы смысл. Возможно в дальнейшем сделаем такое разделение.
   Garykom
 
87 - 06.10.19 - 23:04
(43) >В desktop'е используется JTable из Swing, в веб клиенте - не помню какой компонент. Ни тот, ни другой не поддерживают многострочных строк.

Вы ипанулись. Извините других слов нет ибо глобальные незнания свинга.
http://www.java2s.com/Code/Java/Swing-Components/MultiLineTable.htm
   tty12
 
88 - 06.10.19 - 23:13
Еще один вопрос, связанный с задачкой про "установку наценок" (это где про наценку на группа товаров.
1. Этот механизм у вас реализован?
2. Как у вас увязаны цены, на которые вы делаете наценки, с ценами, которые высвечиваются для конечного клиента в заказе? Тоесть, есть первоисточник - входящая цена на товар, есть наценка, есть покупатель. Опишите логику формирования конечной цены для покупателя во Фьюжне. Пока скидки/акции и т.д. откинем.
   Asmody
 
89 - 06.10.19 - 23:21
(88) Да чего откинем-то?
Резать - так резать.
Пусть будет несколько видов цен, включая динамические. В валюте. До 4х дес.знаков. А сумма по документу рассчитывается в рублях по курсу, который зависит от организации и способа оплаты. До двух знаков. С отнесением разниц на самую дорогую строку с обратным пересчетом цены.
   tty12
 
90 - 06.10.19 - 23:26
(89) Ну вот. Подсказал. Я к этому и вел. 8)
   CrushBy
 
91 - 06.10.19 - 23:31
Не превращайте, пожалуйста, ветку в срач. Для этого есть соседняя.

(88) Поясните, пожалуйста, вопрос. Есть статья - в ней реализована конкретная логика. Что значит реализован у вас механизм ?
Вы пишете "у вас увязаны цены". У вас - это где ? В платформе нету таких понятий, как цена, наценка и т.д.
   CrushBy
 
92 - 06.10.19 - 23:34
(87) Также замечу, что для оскорблений есть соседняя логика.
В этом классе, они подменяют логику рендеринга. То есть отобразить не проблема. Там будут большие вопросы с редактированием и навигацией, если вы знаете, как реализован там JTable, который они используют.
   Garykom
 
93 - 06.10.19 - 23:36
(92) И редактирование и навигацию тоже можно перекрыть, да возможно выглядеть это будет визуально не очень красиво (сдвижки и прочие артефакты) но вполне реально.
   Asmody
 
94 - 06.10.19 - 23:37
(89)+ добавим жиру:
Пользователь, в зависимости от роли и подразделения, не может ставить некоторые виды цен. Но иногда может (есть признак у клиента, либо в самом документе). Но если выбрано доп.соглашение, то цены должны пересчитаться в обратную в у.е. из рублей в доп.соглашении и не могут меняться.
   tty12
 
95 - 06.10.19 - 23:37
(91) Эта тема называется "Конкретные вопросы по lsFusion".
Вот конкретный вопрос:
Есть входящая цена - цена поступления.
Через какие механизмы, а точнее какие средства (не программистские, а пользовательские) существуют в демобазе, к которой вы предоставили доступ, для формирования отпускной цены для конечного покупателя? Интересуют все вариации, предусмотренные платформой и данной демобазой.
   CrushBy
 
96 - 06.10.19 - 23:41
(93) Реально, но будет криво - уже пробовали на базе JTable много чего. Пока принято решение забить, так как выигрыш неочевиден. Если хотите с этим поспорить. то в соседнюю ветку.
   Asmody
 
97 - 06.10.19 - 23:41
(94)+ а если в доп.соглашении нет товара, то цену брать по виду в договоре. А если там нет вида цен, то любую, которая доступна пользователю.
   CrushBy
 
98 - 06.10.19 - 23:44
(95) Можете на платформе реализовать любую логику, при этом предусмотрев возможность пользователю настраивать что угодно. Как сделано в демобазе - не принципиально. Это лишь одна из возможных конфигурации и к платформе отношения не имеет.
   Asmody
 
99 - 06.10.19 - 23:49
Мы же можем к полю таблицы динамический список выбора прицепить? Зависящий от значений в других колонках? И запретить ручное редактирование поля в таблице, а когда надо - разрешить?
   CrushBy
 
100 - 06.10.19 - 23:52
(99) Что значит список выбора ? Для редактирования или что имеется ввиду ?
  1  2  3  4  5  6  7  8  9  10  11   

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь во втором сообщении вам дадут решение, а в двадцатом дадут правильное решение. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.