Вход | Регистрация
    1  2  3  4  5  6  7  8  9  10  11   
О жизни... :: lsFusion

OFF: lsFusion vs 1C. Раунд 9

Ø [длинная ветка, 26.11.19 - 10:37]
OFF: lsFusion vs 1C. Раунд 9
Я
   CrushBy
 
14.11.19 - 09:51
Ветка для холивара, троллинга, остроумия и оскорблений. Помните, что тонкий троллинг и просто оскорбление - это разные вещи. Переход на личность - признак слабого ума и дурного воспитания.
В красному углу ринга бесплатная и открытая платформа lsFusion (LGPL лицензия). "Убийца 1С" (c) ПростоГен
Сайт : https://lsfusion.org/ . Блог : https://habr.com/ru/company/lsfusion/ . Документация : https://documentation.lsfusion.org/
Пример сложной системы, построенной на ее базе : https://demo.lsfusion.org/erp . Логин : guest, Пароль : guest .

На бой была вызвана статьей "Почему не 1С" : https://habr.com/ru/company/lsfusion/blog/468415/

Демка клона Odoo (в разработке) : https://demo.lsfusion.org/mycompany . Ссылка на GitHub : https://github.com/lsfusion-solutions/mycompany

Для получения наживы для троллинга есть отдельная ветка : Конкретные вопросы по lsFusion. Часть 2.

Предыдущая ветка : OFF: lsFusion vs 1C. Раунд 8
   Ник080808
 
101 - 14.11.19 - 14:39
(96) что делать с сложными условиями в левом соединении? вот у меня таблица А и Таблица В. Нужно выбрать все записи из таблица А и те записи из таблицы В которые соответствуют условиями:
1) А.С=В.С;
2); В.Проведен = Истина;
3) В.Статус = Перечисление.Статусы.Утвержден;
   Пузан
 
102 - 14.11.19 - 14:39
(100) "И что-то вторую форму я совсем не понял. А что такое Представление? И почему обращение идет Справочник.Контрагенты.КонтактнаяИнформация, если КонтактнаяИнформация это регистр? Она сама умеет связывать? Но тогда по какому измерению? А если их там несколько и несколько именно контрагентов.". Тебе не понять этого чуда!
   Ник080808
 
103 - 14.11.19 - 14:40
(100) кто те сказал что она регистр? в если Справочник.Контрагенты.КонтактнаяИнформация то это тогда табличная часть)
   terraByteG
 
104 - 14.11.19 - 14:41
(73) А Краш и на работе себя ведет как блаженный? Или только для этого форума свой актерский талант развивает?
Просто вот хоть кто-то нормально общаться пытается.
   Flyd-s
 
105 - 14.11.19 - 14:41
(100), [Так в этом и смысл, что не прочитавшего основы SQL.]
А зачем?

[А что такое Представление?]
Это из типовой конфигурации вытащил запросом, там поле называется представление, может называться как угодно

[КонтактнаяИнформация это регистр]
Если регистр, то будет левое
   Bro
 
106 - 14.11.19 - 14:50
(101) Что в результате должно получится то?
EXPORT (IF isPosted(s) AND status(s) = 34 THEN contactInfo(s)) WHERE s IS Supplier;
(105)
[А зачем?]
Ну начнем того что реляционная алгебра не самая простая штука. А вот остаток больше 5 или нет на остатке, куда проще понять и читать. С этим даже бухгалтер справится, а если вы ей про левые соединения начнете втирать, сами представляете что будет.
[Если регистр, то будет левое]
Фух, а то я испугался что она условия соединения угадывать будет.
   Flyd-s
 
107 - 14.11.19 - 15:03
(106), [реляционная алгебра не самая простая штука.]
Уже есть армия разработчиков знающих SQL


[А вот остаток больше 5]
"ВЫБРАТЬ
    ПартииТоваровОстатки.Номенклатура КАК Номенклатура
ИЗ
    РегистрНакопления.ПартииТоваров.Остатки КАК ПартииТоваровОстатки
ГДЕ
    ПартииТоваровОстатки.КоличествоОстаток > 5"

Здесь что сложного?

[С этим даже бухгалтер справится]
Я не бухгалтер, но я вообще с трудом понимаю смысл написанных кодов в фузине
   тарам пам пам
 
108 - 14.11.19 - 15:11
(96) WHERE NOT currentBalance(sku, stock) > 5
Чем оно отличается от WHERE currentBalance(sku, stock) < 5 ? Мне вот вообще нихрена не очевидно.

Судя по
Нет, не изменится, все от WHERE зависит. WHERE NOT currentBalance(sku, stock) > 5 даст левое соединение, а currentBalance(sku,stock) > 5 внутреннее.

подозреваю, что в первый вариант попадет вся номенклатура из справочника, а во второй - только та номенклатура, которая есть в остатках. Ну т. е. один хрен нужно знать, когда писать NOT >, а когда <. Чем это отличается от необходимости знать виды соединений, хрен его знает.
   ГНиколаев
 
109 - 14.11.19 - 15:20
(107) Да уже выяснили, что Бро паталогически не может вразумительно объяснять и писать код, понятный кому-либо, кроме его приятелей - фузиновцев.
   тарам пам пам
 
110 - 14.11.19 - 15:24
(108) UPD: вместо "меньше" имеется в виду "меньше или равно"
   CrushBy
 
111 - 14.11.19 - 15:35
Да уж, читаю вот эту ветку и офигеваю :
Кто-то использует ERP? Каковы перспективы?

Где хваленые методисты 1С ? Купил и дальше только настраивай, так ?
   CrushBy
 
112 - 14.11.19 - 15:37
(111) И таких же веток после появления фузины стало же валом. Кто гнал, что в зарубной задаче там что-то не так ? А как же во флагманском продукте ?
[Ошибки найдены не только в кудире - он вообще не работал и не работает. Из последнего - в счет-фактуре нельзя поменять значение поля "партнер", там выводится только "контрагент". А в список документов выводится "Партнер". В результате в списке документов мы видим одного контрагента, а в документе - другого. При вводе РКО на основании ПКО сумма копируется только в реквизит "сумма", а "расшифровку платежа" забыли, ее надо заново вручную набивать. До этого вдруг перестали формироваться проводки в авансовых отчетах, сломался управленческий баланс, да я могу перечислять еще очень долго. В одном из релизов не открывался документ "поступление товаров" - выдавал ошибку и программа вываливалась.
Ну и самое веселое - это переходить с одной подсистемы на другую. Учет ОС например у нас до июля ведется в одном разделе, а после - в другом, соответственно в конфигурации два набора документов по учету ОС - 2.2 и 2.4 и два отчета - для старых документов и для новых. Просто шедеврическое решение. Ладно, я могу еще долго рассказывать...]
   Bro
 
113 - 14.11.19 - 15:41
(108) Ну currentBalance < 5 означает что остаток определен (то есть товар есть на остатках) и меньше 5. А не больше 5, соответственно или нет товара на остатках или его меньше 5. В любом случае это булева алгебра которой учат со школы (а то и рождения). В отличии от реляционной алгебры, которой учат только отдельных программистов.
   Bro
 
114 - 14.11.19 - 15:42
(107) Ну а теперь запишите нет на остатках или меньше 5. И поймете разницу.
   CrushBy
 
115 - 14.11.19 - 15:42
Еще вот это понравилось :
[И главное, обновление с исправлением одних ошибок создает другие ошибки там где их не было. Последнее письмо в вольном переводе так звучит "счет-фактуру мы править не будем, потому что боимся что-нибудь сломать". Из чего я делаю вывод что проект подыхает - архитектора толком нет, а разработчики боятся уже что-то вносить чтобы не огрести.]

И про качество УТ (я собственно на демке там находил багов достаточно) :
[Для тех кто в танке - УТ11 (и, видимо ЕРП) состоит из "мелких багов" полностью. Что резко усложняет использование программы, а во многих случаях делает ее нерабочей.
В нашей УТ11 серьезных доработок буквально парочка. Все остальное - это исправление этих самых "мелких багов". Из-за чего конфигурация, по сути, переписана уже почти наполовину.]
   Bro
 
116 - 14.11.19 - 15:43
(109) Ну тарам пам пам отлично похоже все понял. Так что видимо все таки от способностей зависит.
   ГНиколаев
 
117 - 14.11.19 - 15:45
(111) А у вас вообще ничего нет даже приблизительно сопоставимого ... Совсем нет...
   PR
 
118 - 14.11.19 - 15:46
(72) Чувак, я тебя огорчу, в "EXPORT name(Supplier s), contactInfo(s) WHERE s IS Supplier" ты на птичьем языке написал, что у тебя соединение двух таблиц по s = Supplier, а вот то, что соединение левое, да, не указано, поэтому остается только надеяться, что это так, потому что в случае, если оно полное или внутреннее, то задача будет решена некорректно
   ГНиколаев
 
119 - 14.11.19 - 15:47
(116) Ага, так понял, что в (108) написал - "Мне вот вообще нихрена не очевидно"
   Flyd-s
 
120 - 14.11.19 - 15:48
(114), всё равно получится простейший запрос понятный любому кто изучил основы SQL.
   PR
 
121 - 14.11.19 - 15:49
+(118) И поэтому мои вопросы прежние:
1. Где у вас отсутствие декларативного описания запроса, все то же, что и в 1С, только другим синтаксисом?
2. В чем выгода вашего птичьего языка по сравнению с языком запросов?
   ГНиколаев
 
122 - 14.11.19 - 15:49
(121) Так выгода в количестве строчек же...
   Ник080808
 
123 - 14.11.19 - 15:50
(112) че ты все время врешь? тебе кто то сказал что ложь=маркетинг?) таких веток было 100500 до фузины и будет 100500000 когда фузину похоронят а вас отправят в тюрьму за мошенничество
   CrushBy
 
124 - 14.11.19 - 15:54
(117) Есть конечно : https://demo.lsfusion.org/erp . Там все это тоже есть, просто тоже не работает :)
   ГНиколаев
 
125 - 14.11.19 - 15:56
(124) Врёшь опять, конечно. Нет у вас там КУДиР и МСФО с бюджетированием. Даже в неработающем виде нет.
   CrushBy
 
126 - 14.11.19 - 15:57
(125) Так и в 1С:ERP это не работает. А у нас 3 строчки дописать - и готово.
   PR
 
127 - 14.11.19 - 15:59
(82) Тут как раз не понадобится
Вот тут у нас как раз платформа сама подвяжет левое соединение, просто исходя из того, что мы через точку обращаемся или к ссылочному полю
   CrushBy
 
128 - 14.11.19 - 15:59
(125) И в неработающем виде - это гораздо хуже, чем вообще отсутствие. Спросите у людей, которые 3 года выбросили в урну, вместо того, чтобы внедрять что-то работающее. На фузине за год можно было сделать работающее в разы лучше.
   Пузан
 
129 - 14.11.19 - 16:01
Мне еще подход фузиновцев по поводу 2+2+=5 понравился. Типа они так делают, потому что бывшая уборщица тетя Глаша, а сегодня она поднялась по социальному лифту до менеджера, сказала что так оно и есть. Завтра эту тетю или выгонят или посадят, а потом нормальные управленцы спросят почему так реализовали. Я бы на месте нормальных управленцев отказался бы от услуг таких автоматизаторов. Но это я.
   PR
 
130 - 14.11.19 - 16:02
(96) Капец
То есть мы в 1С пишем по-человечески, а вы как-то по-птичьи через жопу, но при этом у вас лучше, а у нас хуже?
Л — логика
 
 Рекламное место пустует
   CrushBy
 
131 - 14.11.19 - 16:04
Цитата оттуда:
[Косвенно связан с сахарной промышленностью. Многие заводы работают на полностью самописных учетных системах (1С-ких). В них реализован производственный и опер. учет. Все остальное - это БП, ЗУП и так далее.

Так что не ждите чуда из коробки - пишите свое.]

Никому голая платформа не нужна ? Правильно, я понимаю ?
   Flyd-s
 
132 - 14.11.19 - 16:04
(129), у них только кодеры в команде, думают за них заказчики
   Flyd-s
 
133 - 14.11.19 - 16:06
(131), сколько таких заводов по стране - один или два?
   PR
 
134 - 14.11.19 - 16:07
(111) Ну вот нахуя ты опять что-то невпопад серанул, придурок?
   PR
 
135 - 14.11.19 - 16:12
(114) Да у вас вообще как-то странно
Вроде туалетная бумага и ей жопу подтирают, но у вас на ней еще и важные телефоны записаны, ну типа не пропадать же добру
Запрос — это запрос
Проверка при записи — это проверка при записи
С какого бы перепуга пихать их все в одно место?
Может туда еще напоминания пользователю запихнуть?
Себестоимость можно посчитать заодно, ну чтобы уж не вставать лишний раз
   PR
 
136 - 14.11.19 - 16:14
(122) Так даже этого нет, я смотрю
Разве что в единичных случаях и чаще всего в самых простых
   Bro
 
137 - 14.11.19 - 16:17
(120) Ну так напишите, чтобы наглядно было. И простейший он, если условие простое. А если условие будет (A ИЛИ B И C) ИЛИ Д, там типы соединений будет расставить мягко говоря не тривиально. Не говоря уже о том что ошибиться раз плюнуть.

Ну и опять таки не все знают и любят реляционную алгебру. А булеву знают все и она куда проще.
   Flyd-s
 
138 - 14.11.19 - 16:22
(137)
"ВЫБРАТЬ
    ПартииТоваровОстатки.Номенклатура КАК Номенклатура
ИЗ
    Справочник.Номенклатура КАК Ном
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваров.Остатки КАК ПартииТоваровОстатки
        ПО (ПартииТоваровОстатки.Номенклатура = Ном.Ссылка)
ГДЕ
    ЕСТЬNULL(ПартииТоваровОстатки.КоличествоОстаток, 0) < 5"

20 секунд в конструкторе.

Сложные условия также сложны будут в фузине
   PR
 
139 - 14.11.19 - 16:22
(137) В нашем тексте запроса хотя бы сразу понятно, что с чем как соединяется
А в вашем что чуть посложнее и вообще тушите свет, без поллитры не разберешься
Это не говоря уже о том, что ты 1С дальше примитивных запросов и не нюхал
А ты открой какой-нить запрос в 1С посложнее, тогда разговор будет другой, думаю
   Пузан
 
140 - 14.11.19 - 16:22
(137) Не знаю как у вас, а в России в дискретная математика считается простым предметом и преподается на первых курсах ВУЗов, так что никто не испугался.
   PR
 
141 - 14.11.19 - 16:26
(140) И не говори
Я вообще думаю, что многим проще объяснить соединение таблиц, чем булеву алгебру
Берешь всех контрагентов и к ним прибавляешь контактную информацию из другой таблицы
Если КИ нет, то будет одна запись с пустой КИ
Если КИ несколько, то будет несколько записей

А теперь надо объяснить то же самое, только через булеву алгебру
Что важно, по человечески
Бро?
   PR
 
142 - 14.11.19 - 16:28
Я на работу людей не беру, если они не знают, что такое левое соединение
А вот про использование булевой алгебры при написании запросов как-то не догадался спрашивать
И так зарплатная ветка потеряла интерес, а так вообще свел бы выхлоп к гарантированному нулю, думаю
   Bro
 
143 - 14.11.19 - 16:28
(138) Да но в этом и фокус, что сложность растет как снежный ком. То что в фузине сложно в 1С будет практически нереализуемо.
То есть я сейчас дам условие: Задолженность > 0 И НЕ Поставлено < 10 ИЛИ НЕ Остаток > 7 И НЕ Контрагент.ВЧерномСписке и все в разных регистрах и вы убьетесь типы соединений продумывать. А на булевой алгебре я вам уже все объяснил.
   Bro
 
144 - 14.11.19 - 16:29
(142) Булеву алгебру даже дети знают. Тебе : Яблоко и Пойти в кино или не Пойти на каток. Что вы там спрашивать собрались.
   Пузан
 
145 - 14.11.19 - 16:29
(138) Пусть напишут получение контактной информации (например номера телефона) по дисконтной карте, если владельцем карты может быть сотрудник организации или стороннее физ. лицо или контрагент и все это разные сущности (потому что так надо) и у одних это реквизит справочника, а двух других хранится  в РС но в разных и у физ. лица может быть только факт. адрес, а юр. лица если заполнен то факт. адрес, а если нет, то юр. адрес. И чтобы все было по-фузиновски - без явных запросов в коде.
   PR
 
146 - 14.11.19 - 16:30
(143) Да нет, нихрена ты ничего не объяснил
Что такое Задолженность?
Что такое Поставлено?
Что такое Остаток?
Какой именно Контрагент ВЧерномСписке?
   ГНиколаев
 
147 - 14.11.19 - 16:31
(128) Да знаем мы вашу историю про идиота-директора Гомельлифта, знаем. Не начинай снова.
   PR
 
148 - 14.11.19 - 16:32
(144) Не надо ля ля, я про булеву алгебру первый раз услышав за день до вступительного экзамена в ВУЗ
И булева алгебра — вещь более абстрактная, чем две таблички, которые можно нарисовать
Я же говорю, объясни на пальцах по-человечески (141)
   Flyd-s
 
149 - 14.11.19 - 16:33
(143), ничего не понял в задаче. Как связаны задолженность и остаток. У нас есть таблица с остатками по контрагентам?
   Bro
 
150 - 14.11.19 - 16:34
(146) Ресурсы из разных регистров. Допустим ВЧерномСписке это реквизит ну или тоже ресурс регистра.
   Bro
 
151 - 14.11.19 - 16:35
(149) Нет, это все разные регистры, соединяемые по измерению контрагент (остальные измерения допустим константы).
   Flyd-s
 
152 - 14.11.19 - 16:37
(151), как мы остатки товаров соединим с задолженностью, если в остатках нет контрагентов?
   PR
 
153 - 14.11.19 - 16:38
(150) Блять, _из каких_ именно регистров? По чему именно соединение? Или Фузина настолько уменая, что ей говоришь "Поставлено" и она такая "Ни слова больше! Все понятно!"?
Вы уже задрали записывать текст запроса на птичьем языке, а потом бить себя пяткой в грудь, что съкономили 10 байт из-за своей птичьей записи
   GedKo
 
154 - 14.11.19 - 16:38
(113) >Ну currentBalance < 5 означает что остаток определен (то есть товар есть на остатках) и меньше 5. А не больше 5, соответственно или нет товара на остатках или его меньше 5. В любом случае это булева алгебра которой учат со школы (а то и рождения). В отличии от реляционной алгебры, которой учат только отдельных программистов.

простому глупому пользователю нечего делать ни в запросах 1с, ни в выражениях фузины. абсолютно совсем нечего делать.
   Flyd-s
 
155 - 14.11.19 - 16:39
[И НЕ Поставлено < 10 ИЛИ НЕ Остаток > 7 ]
И НЕ < 10 вместо И>10 ломают мозг
   PR
 
156 - 14.11.19 - 16:40
(151) А если у меня соединение сложнее, чем по контрагенту?
А если там вообще сначала нужно что-то во временной таблице посчитать, потому что там напрямую не соединишь, а потом уже соединять?
И как мне потом разбирать ваш текст на 500 символов, что он вообще нахрен делает?
Какая-то нулевая читабельность, билет в один конец
   Bro
 
157 - 14.11.19 - 16:41
(152) остатки денег на счету. Млин какая разница. Я для примера привел, там в УТ сотни регистров с пересекающимися измерениями.
(154) Ну кстати сложно сказать. С EXCEL'ем то люди разбираются композиции, условия и формулы пишут. Сейчас как раз думаем подключить простенький конструктор выражений.
(155) Ну разницу я объяснял. Что нужны и контрагенты по которым ничего поставлено в принципе не было. Но не суть, запишите как хотите.
   Bro
 
158 - 14.11.19 - 16:43
(156) А нахера вам вообще в запрос лезть. Для оптимизации вам тормозящих узлов плана хватит, а там будут конкретные предикаты.

Вот вы к примеру все типы узлов планов СУБД знаете? Спорим, что нет, но вас же это не колышет, как это все внутри работает.
   Ник080808
 
159 - 14.11.19 - 16:43
(143) шо там убиваться то, если это стандартный запрос в 1с?)
   PR
 
160 - 14.11.19 - 16:45
(158) Эээ... я понял
Чукча не читатель, чукча писатель
Написал один раз что-то, если не работает, то никто не смотрит готовое, пишут снова с нуля
Ну прикольно, че, я же говорю, билет в один конец, потому что читабельность нулевая
 
 Рекламное место пустует
   PR
 
161 - 14.11.19 - 16:46
(158) Ты не поверишь, я никогда в жизни за почти 20 лет не изучал план запроса, даже не знаю, как его посмотреть
И, самое главное, мне это практически не мешает писать эффективные запросы в 1С
   GedKo
 
162 - 14.11.19 - 16:48
(157) >Ну кстати сложно сказать. С EXCEL'ем то люди разбираются композиции, условия и формулы пишут. Сейчас как раз думаем подключить простенький конструктор выражений.

еще раз: "простому глупому пользователю нечего делать ни в запросах 1с, ни в выражениях фузины. абсолютно совсем нечего делать."
продвинутым - в 1с есть консоль запросов с конструктором, причем очень качественным. в фузине - хз.

а вот людей, которым интеллекта не хватает понять соединения в запросах, я б к разработке ПО не подпустил бы. ни на каком языке.
даже если там запросов нет =)
   Многолетний Апельсин
 
163 - 14.11.19 - 17:00
(143) Справочник контрагентов - главной таблицей, к ней левым соединением все остальные показатели. В чем тут можно убиться?
   Flyd-s
 
164 - 14.11.19 - 17:08
(157), левое соединение по контрагенту к таблице контрагентов столько раз сколько таблиц мы используем
   Bro
 
165 - 14.11.19 - 17:17
(163) тогда при отборе по контрагенту ни один индекс использоваться не будет. Смотрите статью почему не sql. Ну и допустим у вас теперь два ключа контрагент и склад. Будете декартово произведение строить и все левыми соединениями соединять? Опять таки производительность представляете?
   PR
 
166 - 14.11.19 - 17:24
(165) Бро ты слабоумный что ли или у вас с Крашем целенаправленная политика прикидываться недоразвитыми?
Отбор по контрагенту не только в ГДЕ делается, но и в параметрах соединения
При двух полях двойное условие соединение
И, самое главное, пусть даже в 1С все тухло и печально, а Фузина тогда что, вместо SQL запроса сама все в уме что ли посчитает? Или точно так же сгенерит в итоге какой-то SQL запрос, который, по-твоим словам, в принципе не может быть оптимальным?
   Многолетний Апельсин
 
167 - 14.11.19 - 17:30
(165) Ну во первых есть свойство "индексировать" у полей объектов, в том числе у измерений регистра. Оно очень сильно помогает ускорить выборки.
Во вторых сдается мне что вы не понимаете что соединение будет виртуальных (аналог материализованных представлений) а не обычных таблиц, и там по каждому показателю будет по одной строке.
   CrushBy
 
168 - 14.11.19 - 17:31
Читаем вот здесь :
https://habr.com/ru/company/lsfusion/blog/458774/

Задача с 2мя звездочками. На фузине :
SELECT Person a, Person b, Person c WHERE
    likes(a, c) AND NOT friends(a, c) AND
    (friends(a, b) OR friends(b, a)) AND
    (friends(b, c) OR friends(c, b));

На SQL :
WITH PersonRelationShipCollapsed AS (
  SELECT pl.PersonAID
        ,pl.PersonBID
        ,pl.Relation
  FROM #PersonRelationShip      AS pl
  
  UNION

  SELECT pl.PersonBID AS PersonAID
        ,pl.PersonAID AS PersonBID
        ,pl.Relation
  FROM #PersonRelationShip      AS pl
)
SELECT
   pl.PersonAID
  ,pf.PersonBID
  ,pff.PersonBID
FROM #Persons                      AS p
--Лайки                      
JOIN PersonRelationShipCollapsed  AS pl ON pl.PersonAID = p.PersonID
                                 AND pl.Relation  = 'Like'                                  
--Друзья                          
JOIN PersonRelationShipCollapsed  AS pf ON pf.PersonAID = p.PersonID
                                 AND pf.Relation = 'Friend'
--Друзья Друзей                  
JOIN PersonRelationShipCollapsed  AS pff ON pff.PersonAID = pf.PersonBID
                                 AND pff.PersonBID = pl.PersonBID
                                 AND pff.Relation = 'Friend'
--Ещё не дружат                  
LEFT JOIN PersonRelationShipCollapsed AS pnf ON pnf.PersonAID = p.PersonID
                                   AND pnf.PersonBID = pff.PersonBID
                                   AND pnf.Relation = 'Friend'
WHERE pnf.[PersonAID] IS NULL

Что же проще и понятнее....
   Flyd-s
 
169 - 14.11.19 - 17:35
(168), от переменных a, b и c глаза кровоточат. А что за функция friends?
   CrushBy
 
170 - 14.11.19 - 17:38
(169) Ну что один человек дружит с другим человеком. В табличке это будет храниться как одна запись с двумя ключами (которые ссылаются на справочник людей).
   CrushBy
 
171 - 14.11.19 - 17:39
(169) Собственно в статье есть вся доменная логика задачи (на фузине) :
CLASS Person;
likes = DATA BOOLEAN (Person, Person);
friends = DATA BOOLEAN (Person, Person);
   PR
 
172 - 14.11.19 - 17:41
(168) Конечно второй вариант, его хоть читать можно, а первый сначала нужно разархивировать в читабельный вид
   PR
 
173 - 14.11.19 - 17:41
(169) Некогда объяснять, суй помидоры в жопу
   CrushBy
 
174 - 14.11.19 - 17:51
(172)
Вот запрос на фузине :

SELECT Department d, employeesId(d), taxSum(d) WHERE salarySum(d) > 100000 AND countEmployees(d) < 10 AND countGenders(d) = 2;

Вывести (SELECT) все отделы (Department d), список сотрудников (employeesId(d)), сумму налогов(taxSum(d)), у которых (WHERE) сумма зарплат больше 100000 (salarySum(d) > 100000), кол-во сотрудников меньше 10 (countEmployees(d) < 10) и кол-во различных полов равно 2 (countGenders(d) = 2).

Уберите скобки и будет предложение на русском языке. Вы согласны, что простота определяется не длинной запросов, а близости к русскому языку? То есть когда человек получает задачу на русском языке, то ему гораздо проще транслировать ее в lsFusion, чем на SQL.
   CrushBy
 
175 - 14.11.19 - 17:52
(168) Вот постановка той задачи. Необходимо найти возможных кандидатов на дружбу. Более формализовано нужно найти всех людей A, B, C таких, что A дружит с B, а B дружит с C, A нравится C, но A не дружит с C.

SELECT Person a, Person b, Person c WHERE
    likes(a, c) AND NOT friends(a, c) AND
    (friends(a, b) OR friends(b, a)) AND
    (friends(b, c) OR friends(c, b));

Что тут непонятного ?
   PR
 
176 - 14.11.19 - 17:53
(174) Какое нахрен на русском?
Вывести все отделы, список сотрудников — это уже непонятно
Вывести их объединение, левое соединение, правое соединение, полное соединение, внутреннее соединение или что вообще нахрен?
   Flyd-s
 
177 - 14.11.19 - 17:54
(170), и она прям в платформу встроена?
   CrushBy
 
178 - 14.11.19 - 17:55
(176) Если не умеете удалять скобки, то вот предложение на русском без скобок :
Вывести все отделы, список сотрудников, сумму налогов, у которых сумма зарплат больше, кол-во сотрудников меньше 10 и кол-во различных полов равно 2.
Это корректное выражение с точки зрения русского языка ? А теперь напишите на своем псевдо-SQL.
   CrushBy
 
179 - 14.11.19 - 17:57
(177) Кто встроена ? Это просто пример доменной логики и запрос, который нужно реализовать. Я же доменную логику выше описывал.
   Flyd-s
 
180 - 14.11.19 - 18:00
(179), я вижу функцию в которую передаются два параметра ,я не понимаю откуда она взялась, что туда передается и что она возвращает.
   PR
 
181 - 14.11.19 - 18:00
(174) >>Вы согласны, что простота определяется близостью к русскому языку?
Нет, не согласен, русский язык велик и могуч, а тут требуется простота, четкость и однозначность
То есть SQL язык вполне подойдет, просто и понятно
А в твоем случае на русском все слова вроде понятны, но смысла в них нет, куча вопросов, что с этими словами делать
А уж в случае фузиновского птичьего языка сначала вообще все разархивировать нужно, а потом уже пытаться это прочитать
   Flyd-s
 
182 - 14.11.19 - 18:06
Пока код фузины напоминает регулярные выражения
   CrushBy
 
183 - 14.11.19 - 18:07
(182) Пока он напоминает русский язык : (174) (175)
   CrushBy
 
184 - 14.11.19 - 18:08
(180) Блин, ну все SQL'щики прекрасно поняли о чем речь. В логику 1С справочники/документы/регистры это никак не пролазит.
   Flyd-s
 
185 - 14.11.19 - 18:09
(184), что в friens()?
   CrushBy
 
186 - 14.11.19 - 18:11
(185) На языке фузины - это функция от двух параметров. На уровне БД - это таблица с двумя ключами, которые ссылаются на справочник людей, и в которой есть поле boolean, которое TRUE, если человек с первым ключом дружит с человеком со вторым ключом. Понятно ?
   Flyd-s
 
187 - 14.11.19 - 18:14
(186), это понятно. Непонятно почему для SQL в качестве примера приводится полный запрос, а в фузине за скобки выносится. И непонятно чем этот запрос в фузине лучше SQL, кроме количества строк
   Bro
 
188 - 14.11.19 - 18:18
(187) ну я так и про sql могу сказать, чем он лучше ассемблера. Ну кроме того что проще короче и понятнее.
   Flyd-s
 
189 - 14.11.19 - 18:20
(188), написание аналогичного запроса на ассемблере понятнее не будет
   PR
 
190 - 14.11.19 - 18:30
Радетели за интеграцию в мировые стандарты написания кода без всякий птичьих самопалок, двигают свой вырвиглазный язык запросов, непонятно, имеющий ли и какие преимущества перед языком запросов SQL
Капец
   Salimbek
 
191 - 14.11.19 - 19:23
(187) Потому что именно так и устроен их язык, в этом их "фишка". Т.е. вместо концепции 1С - "мы имеем таблицу с полями А,Б,С" используется концепция С - это функция от А и Б => С(А,Б)
При этом ты изначально описываешь С(А,Б) и при этом сама фузина создает таблицу с полями А,Б,С - форму к ней (пофиг на дизайн) и дает возможность забивать туда данные
   Salimbek
 
192 - 14.11.19 - 19:25
(188) Блин, вам бы в этой фузине еще сделать нативную поддержку Регистров Правил и было бы совсем удобно.
   Flyd-s
 
193 - 14.11.19 - 20:15
(191), проблема в том, что система выполняет какие-то неявные действия, чтобы понять что произойдёт нужно сначала мысленно перевести код в данные, но Бро считает что делать это намного сложнее чем понять соединения таблиц
   Flyd-s
 
194 - 14.11.19 - 20:15
в смысле проще, опечатка
   Flyd-s
 
195 - 14.11.19 - 20:16
кстати, откуда появился sql- подобный запрос, раньше были только функции и где посмотреть описание этого языка?
   Bro
 
196 - 14.11.19 - 21:31
(192) Нативную в смысле оператором, типа:

LEDGER SkuLedger (Sku sku, Stock stock) SUM balance;

Который будет синтаксическим сахаром и будет создавать абстрактный класс и свойства + группирующие свойства:

CLASS ABSTRACT SkuLedger;
dateTime = ABSTRACT DATETIME (SkuLedger);
sku = ABSTRACT Sku (SkuLedger);
stock = ABSTRACT Stock (SkuLedger);
balance = ABSTRACT NUMERIC (SkuLedger);

balance = GROUP SUM balance(SkuLedger s) BY sku(s), stock(s);
balance = GROUP SUM balance(SkuLedger s) IF dateTime(s) <= DATETIME d BY sku(s), stock(s), d;
balance = GROUP SUM balance(SkuLedger s) IF dateTime(s) <= DATETIME dTo AND dateTime(s) >= DATETIME dFrom BY sku(s), stock(s), dFrom, dTo;

В принципе уже сейчас можно сделать такой метакод (возможно даже он уже есть в платформе, если нет то стоит добавить):
@defineLedger(SkuLedger, Sku, sku, Stock, stock, balance);

Но согласен оператором красивее. Собственно и агрегации были когда-то метакодом, потом стали оператором. Другое дело что по сравнению даже с агрегациями у регистра в IDE магии еще больше будет, так как слово balance по факту будет сразу три свойства создавать. Но с другой стороны почему нет, создам чуть позже задачу.
   Bro
 
197 - 14.11.19 - 21:33
(193) А зачем вам вообще думать о таблицах, оперируйте функциями как в школе на математике. Функциям то с класса 5-го обычно учат или даже раньше и они проще для понимания. Логике условий еще раньше. А реляционную алгебру только в универе и то только на ИТ специальностях учат.
   Flyd-s
 
198 - 14.11.19 - 22:31
(197), отличное понимание матана в универе не помогает мне сейчас понимать фузинофункции. //Правда закончил я универ 9 лет назад
   Salimbek
 
199 - 14.11.19 - 22:32
(196) Нет, Регистр Правил это немного иная сущность. Лучше посмотреть на оригинальную концепцию тут: http://web.archive.org/web/20070301074427/https://www.kint.ru/library/developer/register/p110/
   _DAle_
 
200 - 14.11.19 - 23:12
(118) >ты на птичьем языке написал, что у тебя соединение двух таблиц по s = Supplier

Нет, вообще, это не так. "s IS Supplier" - это всего лишь проверка на принадлежность объекта классу, которая в данном случае была нужна. Здесь вообще нет указания на то, лежат ли name и contactInfo в одно таблице или в разных (может быть и так, и так, от этого выражене не поменяется).
  1  2  3  4  5  6  7  8  9  10  11   

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