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

Killer 1s Application

[piter3, 03.07.20 - 22:09]
Killer 1s Application
Я
   Гений 1С
 
22.06.20 - 11:40
Народ, я вот подумываю о том, чтобы написать убийцу 1С. Ну не самому, а наняв товарищей.
Но сперва хочу спросить, а на чем бы вы (кроме 1С) реализовывали вот подобные задачи:

1. Небольшую программу для учета личных финансов (для единоличного пользования).
2. Небольшую программу для учета прихода-реализации-списания товаров на складе (для бизнеса на 3-4 пользователя).

Как понятно из задачи, это приложения с базой данных.

Т.е. на чем сейчас с точки зрения уровня развития IT имеет смысл это реализовывать? Неужели на модном Питоне?
И какой движок баз данных использовать?

Единственное требование к разработке - это чтобы оно получилось тиражным и работало оффлайн. Т.е. если у вас 5-6 клиентов, то чтобы каждый получил апдейт, который сделает нужные изменения в структуре базы данных. И чтобы этот апдейт не приходилось писать вручную, сравнивая базу прошлой и текущей структуры, и чтобы можно было пропустить несколько релизов, т.е. по сути в апдейте была бы нужная структура БД, а обновление бы подгоняло БД под эту структуру?

Может уже есть готовые решения кроме 1С и я зря туплю?
   Bro
 
701 - 27.06.20 - 11:13
(699) на той, что логично все делать на оптимистичных блокировках. Потом в крайних случаях менять физмодель. А в крайних крайних
ОТДЕЛЬНЫХ случаях использовать пессимистичные (FOR UPDATE). А не выплескивать с водой ребенка.
   Конструктор1С
 
702 - 27.06.20 - 11:19
(701) ну ладно, давай тогда на конкретном примере. Допустим, у тебя интернет-магазин. 100 человек одновременно пытаются купить товар, которого в наличии всего 10 единиц. Как ты представляешь отработает оптимистическая блокировка в этом случае?
   Конструктор1С
 
703 - 27.06.20 - 11:22
(701) и как ты собрался отделять крайние-крайние случаи от некрайних?
   Serginio1
 
704 - 27.06.20 - 11:25
(656) >> да ну, SQL знают все, linq никто.

Ну если бы это было так, то никто бы и не смотрел

http://catalog.mista.ru/public/448668/
http://catalog.mista.ru/public/403524/
http://catalog.mista.ru/public/393228/
http://catalog.mista.ru/public/402038/
http://catalog.mista.ru/public/402433/

Можешь кстати открыть голосование по языку и БД. И посмотреть, за какие языки проголосуют.
Даст пищу для ума
   Ненавижу 1С
 
705 - 27.06.20 - 11:42
(698) для розничной торговли там вообще ничего блокировать не надо
   Конструктор1С
 
706 - 27.06.20 - 12:31
(705) почему?
   pechkin
 
707 - 27.06.20 - 12:39
(706)  А что по твоему там нужно блокировать?
   pechkin
 
708 - 27.06.20 - 12:39
блокировка нужна когда мы остатки ЧИТАЕМ в транзакции
   Конструктор1С
 
709 - 27.06.20 - 12:54
(708) ну вот ты и сам ответил
   Bro
 
710 - 27.06.20 - 13:12
(702) Первая транзакция пройдет, остальные перестартуют (если им вообще хватит ядер стартовать) после чего опять одна пройдет, остальные перестартуют и в конечном итоге все пройдут. В принципе все будет тоже самое что в блокировочнике, только лишнее процессорное время сьестся. С дедлоками все конечно неприятнее (но и у блокировочников та же беда), но в таких случаях нормальные платформы просто cool down делают (начинают sleep ать процессы с большим числом дедлоков).

Но чтобы избежать всего этого просто можно добавить измерение например регион заказа и все само распараллелится (в 1с конечно непонятно как добавить измерение только в расход, но в других технологиях такой проблемы нет). Ну или FOR UPDATE может платформа вставить по желанию разработчика (но нам например изменения физмодели всегда хватало).
   Bro
 
711 - 27.06.20 - 13:19
(703) очень легко, эмпирически. Делаешь первое приближение, запускаешь, видишь много update conflict убираешь материализацию, раскладываешь в разные таблицы или добавляешь измерение / пессимистичный режим для показателя (но последнее очень очень редко надо). Теряется согласованность - наоборот (хотя справедливости ради на практике чаще добавляют лишние материализации чем их не хватает).

В любом случае это все можно и лучше делать не на стадии разработки, а в продакшне, чтобы не заниматься premature оптимизацией (одна из главных ошибок в программировании).
   Bro
 
712 - 27.06.20 - 13:22
(708) в версионнике (оптимистичных блокировках) не нужна, там логически транзакция работает с состоянием на момент старта транзакции (то есть все что сделано после этого транзакцией не учитывается). То есть идеи неявное упорядочивание транзакций по времени их старта.
   Bro
 
713 - 27.06.20 - 13:24
(710) регион заказа в смысле например регион в котором находится покупатель (или первая буква его имени)
   Ненавижу 1С
 
714 - 27.06.20 - 13:27
при конкурентной борьбе за товар тоже резервирование можно делать короткими по-строчными транзакциями
собственно так оно в корзину и попадает в интернет магазинах, как только перенесли в корзину
но это не про модель 1С, где документ или весь или ничего
   Полован
 
715 - 27.06.20 - 13:28
(710) А ты понимаешь, что обсуждать такие вещи в теме Фиксина-покорителя ларьков нелепо?
   Полован
 
716 - 27.06.20 - 13:28
(714) Не модель 1С, а модель типовых от 1С :)
   Sserj
 
717 - 27.06.20 - 13:33
(705) Ну вообще то это скажем так "лукавство" :)
Даже если и не контролируются отстатки, то на уровне СУБД все равно будет блокировка, так как регистр физически состоит из 2 таблиц движения и остатки, в движения просто добавится строка а вот в остатки будет уже update и соответственно блокировка.
   Ненавижу 1С
 
718 - 27.06.20 - 13:49
(717) в модели 1С
есть другие модели
по-моему тот-же Axelot свой WMS строит без регистров остатков в течении оперативного дня
(716) согласен отчасти, но все равно модель платформы тоже не дает большого выбора
   Serginio1
 
719 - 27.06.20 - 14:40
Казалось бы зачем тут дискуссия про блокировки вообще в топике написано
1. Небольшую программу для учета личных финансов (для единоличного пользования).
тут вообще блокировки не нужны
2. Небольшую программу для учета прихода-реализации-списания товаров на складе (для бизнеса на 3-4 пользователя).
А с этим пессимистическая блокировка не криминал.

Вы не в ту степь ушли
   H A D G E H O G s
 
Модератор
720 - 27.06.20 - 14:52
Все, я устал, я терпел поток этого бреда, но нет.
   Ненавижу 1С
 
721 - 27.06.20 - 14:52
(719) не ну так-то Excel (google-таблицы) никто не отменял
   Конструктор1С
 
722 - 27.06.20 - 15:51
(711) вот ты и сам начинаешь понимать, насколько это нелепо. Тупое молотилово заведомо неуспешными транзакциями будет медленнее, чем установка блокировок
   Конструктор1С
 
723 - 27.06.20 - 15:53
(712) не смешивай снапшоты с оптимистическими блокировками
   Serginio1
 
725 - 27.06.20 - 17:09
(721) Когда вышла 1С 7.0 она работала на dbf файлах. В основном она была однопользовательская и по сети дико тормозила (пока Цитрикс не начали использовать)
И тогда ведь тоже был Эксель!
   Гений 1С
 
726 - 27.06.20 - 20:32
(725) тогда еще и Аксесс был, причем на нем реально автоматизировали. ггг.
(720) слабак
   jbond
 
727 - 28.06.20 - 08:41
(678) батенька, у вас 1С головного мозга.

Это еще хуже, чем делфи головного мозга.
   ДенисЧ
 
728 - 28.06.20 - 09:13
(727) Вот взял и опустил Ежова... Он тебе не простит ))
   Конструктор1С
 
729 - 28.06.20 - 09:34
(0) "чтобы оно получилось тиражным и работало оффлайн"

MS Access или его аналоги из бесплатных офисных пакетов стоят чуть ли не на каждом компьютере. И что, захватили они мир?
   Гений 1С
 
730 - 28.06.20 - 09:34
https://youtu.be/Pv1UWWaWvhk
Объясняю, зачем нужно писать Free RAD
 
 Рекламное место пустует
   Гений 1С
 
731 - 28.06.20 - 09:34
(729) они не умеют тиражировать БД, они не умеют формализовать БД до уровня прикладных объектов. А вот 1С захватило "весь мир" ибо умеет
   ДенисЧ
 
732 - 28.06.20 - 09:38
(731) А ты умеешь?
   Гений 1С
 
733 - 28.06.20 - 09:43
(732) для того и пишу Фри РАД чтобы уметь
   pechkin
 
734 - 28.06.20 - 09:51
1с захватило не весь мир а только пост ссср
   pechkin
 
735 - 28.06.20 - 09:52
ну и одного рад не достаточно
нужна еще конфа в комплекте приличная
читай ветки фузины. там про это каждый второй говорит
   pechkin
 
736 - 28.06.20 - 09:54
кстати куба чем не понравилась?
фатальный недостаток?
ил. ты вообще не изучал-сравнивал то что есть?
   Гений 1С
 
737 - 28.06.20 - 11:05
(735) потому что фузина - это не о RAD, это о ERP. Я же веду речь о "чистом" RAD. оно может существовать и без ERP. захотел я например, написать прогу для учета книжек дома, херакс - использую RAD. Т.е. RAD это в первую очередь для самописок, хотя можно и для небольших конф использовать, типа Магазьки.
(736) А Кубу возможно изучить? Имхо, там слишком сложная учебная курва и нет описания миссии
   Serginio1
 
738 - 28.06.20 - 11:26
(600) Просто посмотри как работать с WPF. Да порог вхождения чуть выше чем для Windows.Forms, зато возможностей значительно больше
https://habr.com/ru/post/427325/
https://metanit.com/sharp/wpf/1.php
https://social.msdn.microsoft.com/Forums/vstudio/en-US/25fb2c46-8298-4f4f-a653-c3abc405b1a8/dynamically-adding-controls-to-grid?forum=wpf
   Полован
 
739 - 28.06.20 - 11:55
(737) Так фузина наоборот позиционирует себя как платформу для самописок, у них и учебные примеры про это :)
   acht
 
740 - 28.06.20 - 12:14
(737) > и нет описания миссии

Нашему гению дарим мы: https://www.cuba-platform.ru/learn/quickstart/studio/

Платформа CUBA - это фреймворк с открытым кодом, цель которого - унификация разработки корпоративных приложений. Фреймворк сочетает в себе проверенные решения для построения информационных систем уровня предприятия и высокоэффективные инструменты разработки, все это значительно ускоряет процесс создания приложений.

Можешь себе слово в слово скопировать
   Serginio1
 
741 - 28.06.20 - 13:23
(740) Про Linq посмотрел запрос на Кубе
Long sessionsSameTime = dataManager.loadValue("select count(s) from planner_Session s where " +
           "(s.startDate between :dayStart and :dayEnd) " +
           "and s.speaker = :speaker " +
           "and s.id <> :sessionId", Long.class)
           .parameter("dayStart", dayStart)
           .parameter("dayEnd", dayEnd)
           .parameter("speaker", session.getSpeaker())
           .parameter("sessionId", session.getId())
           .one();

А вот как выглядит на Linq
var count = items.Where(s =>
                        s.startDate>=dayStart
                        && s.startDate<=dayEnd
                        &&  s.speaker = speaker
                        && s.id != sessionId).Count();

Можно упростить https://docs.microsoft.com/ru-ru/dotnet/api/system.linq.queryable.count?view=netcore-3.1
var count = items.Count(s =>
                        s.startDate>=dayStart
                        && s.startDate<=dayEnd
                        &&  s.speaker = speaker
                        && s.id != sessionId);
   Serginio1
 
742 - 28.06.20 - 13:24
Где items
from db.planner_Session
   Serginio1
 
743 - 28.06.20 - 13:30
(742) Причем можно расширять синтаксис Linq для IQueryable
https://stackoverflow.com/questions/1447635/linq-between-operator

Чем кстати и интересен Linq2DB https://linq2db.github.io/ что можно расширять синтаксис для более сложных запросов
   Serginio1
 
744 - 28.06.20 - 13:33
   Гений 1С
 
745 - 28.06.20 - 13:37
(740) у меня несколько иная миссия
   Конструктор1С
 
746 - 28.06.20 - 14:03
(731) умеют. Любой может сохранить БД как шаблон и продавать. БД Access может даже под скулем работать
   jbond
 
747 - 28.06.20 - 17:25
(728) программисты на русском языке - это самые русские программисты в мире! Индусы кодящие в абапе за миску с супом в немецких САПах  и омерикосовских Java и Oracle нам завидуют!
   ДенисЧ
 
748 - 28.06.20 - 18:01
(747) Вам? Ты не примазывайся
   Гений 1С
 
749 - 28.06.20 - 20:52
(746) Че, серьезно. А если внесли в БД доработку. например, добавили новую таблицу. Ну-ка расскажи, как ты будешь в Аксессе дистрибьютить такое изменение, "знаток"
   rogachev
 
750 - 28.06.20 - 21:38
А для чего Гений тебе писать убийцу 1С?
   Кирпич
 
751 - 28.06.20 - 21:54
(750) Да не будет он ничего писать. У него квалификации нету. Разве что надеется найти лоха, который всё сделает, а он будет на этом пиариться.
   Ненавижу 1С
 
752 - 28.06.20 - 22:07
+(751) сейчас попробует по разным языкам пройтись и объявит очередной кризис it
   Конструктор1С
 
753 - 29.06.20 - 09:14
(749) ты наверно шутишь? Так-то Access это СУБД, которая прекрасно умеет работать в таблицами базы данных. К тому же у него под капотом очень мощный VBA
   pechkin
 
754 - 29.06.20 - 09:45
кстати почти типовой хибернейт от жавы умеет реструктуризацию
   Гений 1С
 
755 - 29.06.20 - 18:38
(752) я в видео все объяснил. что-то не понятно?
(753) еще раз спрашиваю - как тиражировать базу в Access на несколько клиентов. Чтобы изменения у тебя в шаблоне повторялись у них в рабочей базе (изменения в структуре БД и в коде форм)? Внимательно слушаю. Ну и потом в Аксессе нет виртуализации прикладных объектов - чисто голые таблицы, разумеется
   ПрестарелыйЗаяц
 
756 - 29.06.20 - 18:42
(755) "изменения в структуре БД" - скрипты создания таблиц не предлагать?
   Гений 1С
 
757 - 29.06.20 - 18:44
(756) смеешься? представь, что ты будешь ручками писать скрипты для обновления УТ 10.3.1 на УТ 10.3.2. гггг. Шалун... Ну несерьезно.
Потому и кризис в ИТ, что кодеры привыкли, что все связанное с БД долгое, кропотливое и потому дорогое.
RAD есть только в 1С. А остальные скрипты и прочий "ассемблер"
   ПрестарелыйЗаяц
 
758 - 29.06.20 - 18:47
(757) Какими ручками ты о чем вообще? Ты делал когда то пакеты обновлений софта?
   Гений 1С
 
759 - 29.06.20 - 18:51
(758) чтобы говорить о "не ручками", надо говорить о конкретных системах. итак, пакеты обновления софта где, для какой субд, в какой IDE
   ПрестарелыйЗаяц
 
760 - 29.06.20 - 19:09
(759) Попробуй, хоть иногда, почитать первоисточники.
 
 Рекламное место пустует
   Конструктор1С
 
761 - 29.06.20 - 19:17
(755) внезапно, аксесс может автоматически обновляться:
https://www.youtube.com/watch?v=-ETzZWVwZxo

ЗЫ небольшие БД могут годами не обновляться. Даже в наше время можно встретить людей, работающих в древнелохматых самописках на делфях или фокспро
   Конструктор1С
 
762 - 29.06.20 - 19:19
(757) ты же сам пишешь про "небольшую программу для учета", причем тут УТ?
   Гений 1С
 
763 - 29.06.20 - 22:04
(762) потому что даже небольшая программа учета состоит из мириада таблиц и полей.
(761) даже не сомневаюсь.
(760) о чем речь? Не о Кнуте надеюсь, или может о Ритчи?
   Злопчинский
 
764 - 29.06.20 - 22:09
харэ трындеть.. за это время уже бизнес-план можно было налабать и венчурам продаться
   Гений 1С
 
765 - 29.06.20 - 22:15
(764) прости, мой друг, фриланс отвлекает от "Линукса"
   Злопчинский
 
766 - 29.06.20 - 22:16
(765) ну так ты определись.. или кадилом махать или трусы в рясу заправлять...
   Злопчинский
 
767 - 29.06.20 - 22:17
смотри: забиваешь на фриланс, кладешь года два на проект. потом за год монетизируешь, через три года - ты миллионер!!!
   Гений 1С
 
768 - 30.06.20 - 08:43
(767) слишком рискованно, спасибо.
   Ненавижу 1С
 
769 - 30.06.20 - 09:22
Декларативное описание форм было еще в Delphi в dfm файлах думаю с первой версии
   Гений 1С
 
770 - 30.06.20 - 10:01
(769) ничто не ново под луной, ты должен понимать. Вопрос не в том, чтобы изобрести велосипед, а в том, чтобы грамотно его собрать из имеющихся деталей. йо?
   Гений 1С
 
771 - 30.06.20 - 10:02
(769) ибо если все готово, то где RAD?
   H A D G E H O G s
 
772 - 30.06.20 - 11:24
(771) RAD - не в формах, а в компонентах. И да, RAD от Delphi (Visual Studio, Android Studio, ряд можно продолжать) тихо курит в сторонке в сравнении с 1С.
   Ненавижу 1С
 
773 - 30.06.20 - 11:28
(772) с другой стороны всякие EntityFramework более универсальны, а 1С умеет только по одним рельсам
   H A D G E H O G s
 
774 - 30.06.20 - 11:45
(773) 1С не умеет в хитровыделанный интерфейс, все остальное она умеет.
   Ненавижу 1С
 
775 - 30.06.20 - 11:51
(774) и модель базы данных "только так"
   Garikk
 
776 - 30.06.20 - 12:07
(774) "Все остальное", это не только формочки и типовые данные в таблички складывать

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

нет, конечно и в 1С можно извратится, но это будет реально изврат какойто
   Гений 1С
 
777 - 30.06.20 - 12:51
(772) ну простите, я не знал, что RAD уже написан, ггг..
Т.е. где-то в природе он наверное есть (в царстве идей), но руками его никто не щупал и не пробовал.
Иначе бы все давно бы уже написали убийцу 1С на Дельфи, а че...
Ну хватит уже врать самому себе. Нету РАД
   H A D G E H O G s
 
778 - 30.06.20 - 12:52
(776) Все нестандартное можно сделать внешними компонентами.

Кроме формочек - еще один большой минус - закрытость платформы.
Справедливости ради, такая же закрытость есть в AS.

Ну, тоесть, в Дельфях исходники открыты, я могу оттрассировать почти любой компонент, как он работает, в случат ошибки - унаследовать его и перекрыть метод.
   H A D G E H O G s
 
779 - 30.06.20 - 12:55
(777) Ты просто нубик. До RAD от Delphi был Object Pascal под win3.1/win95 (не путать с object Pascal под DOS). Вот там была жопа (конструирование формочки венды через winapi, обработка очередей, и.т.д.), в сравнении с которой Delphi - RAD и еще какой.
Подозреваю, что в C++ была такая же шняга.
   Serginio1
 
780 - 30.06.20 - 13:43
Я бы вместо филосовствования предложил конкретные шаги.
Например универсальные отчеты. Если использовать Linq то он больше заточен под статический код.
Да можно добавить фильтры, итд.
Но можно использовать кодогенерацию.
https://github.com/dotnet/roslyn/wiki/Scripting-API-Samples

Второй вариант это Dynamic Linq и Reflection dynamic
https://stackoverflow.com/questions/33286297/linq-groupby-with-a-dynamic-group-of-columns
   Кирпич
 
781 - 30.06.20 - 14:34
(780) тебе чо за каждое упоминание Linq платят чтоли? Хорош уже спамить
   Serginio1
 
782 - 30.06.20 - 14:39
(781) Это я спамлю? Из кучи спама, я хоть, что то конкретное предлагаю.
Что предлагаешь ты?
   Кирпич
 
783 - 30.06.20 - 14:41
(782) я предлагаю корову
   Serginio1
 
784 - 30.06.20 - 14:43
(783) А за корову тебе платят? Весь топик это спам, но при этом конструктив ты называешь спамом.
Странная у тебя корова!
   Кирпич
 
785 - 30.06.20 - 14:44
(784) ну тогда напиши еще сто раз Linq
   Ненавижу 1С
 
786 - 30.06.20 - 14:47
(785) а я тоже за за Linq и EntityFramework
   Serginio1
 
787 - 30.06.20 - 15:00
(785) Если бы ты почитал ссылки, то я показываю премущество Linq перед текстовыми запросами.
Для Linq есть множество провайдеров. Я предлагаю посмотреть в сторону Linq2DB как более легковесный.
https://linq2db.github.io/index.html

Кстати есть и LinqPad для просмотра результата
https://www.linqpad.net/


Прежде чем что то сделать, нужно посмотреть как и где это сделано. Можно голосование устроить.
Но прежде всего нужно, что то предложить.
Не нравится Linq предложи другое (не корову)
   pechkin
 
788 - 30.06.20 - 15:04
(787) а смогешь срез последних на линке написать?
   Кирпич
 
789 - 30.06.20 - 15:05
Я не понимаю кому вы и зачем предлагаете. Да еще и с таким упорством
   pechkin
 
790 - 30.06.20 - 15:06
он евангелист. спрос не нужен главное предлагать
   Ненавижу 1С
 
791 - 30.06.20 - 15:07
(788) существует несколько моделей периодических регистров сведений
и даже с ХП
   Serginio1
 
792 - 30.06.20 - 15:11
(788) А в чем проблема?
http://catalog.mista.ru/public/402433/
Так же в Linq можно склеивать запросы, накладывая новые ограничения. Это связано с ленивостью запросов

// Этот запрос получает значения периодического реквизита с ID 9697 в порядке убывания даты, времени, и строки документа

            var query = from Константа in бд.ТаблицаКонстанты
                        where Константа.ID == 9697
                        orderby Константа.DATE descending, Константа.TIME descending, Константа.DOCID descending, Константа.ROW_ID descending
                        select Константа;
            

// Используем query в другом запросе добавив к  на нему условия на элемент владелец и дату равную или меньше значение реквизита элемента справочника. В итоге получаем последнее значение и дату периодического элемента на дату заданную в реквизите элемента справочника.


            var query2 = (from спр in бд.Спр_ДляПериодических
                          select new
                          {
                              Наименование = спр.Наименование,
                              ДатаСпр = спр.ДатаСпр,
                              Периодические = (from прериод in query.Where(х => х.OBJID == спр.ID && х.DATE <= спр.ДатаСпр).Take(1)
                                               select  new
                                               {
                                                   Значение = прериод.VALUE,
                                                   Дата = прериод.DATE

                                               }).FirstOrDefault()

                          }
                             );

При этом можно использовать и хранимые процедуры
   Конструктор1С
 
793 - 30.06.20 - 17:22
(792) какой-то кошмар. Вложенные запросы во вложенных запросах, соединяемые с вложенными запросами. Прям страшный сон оптимизатора запросов)
   Serginio1
 
794 - 30.06.20 - 17:27
Формируется такой запрос
SELECT
    1 AS [C1],
    [Extent1].[DESCR] AS [DESCR],
    [Extent1].[SP9700] AS [SP9700],
    [Limit1].[ROW_ID] AS [ROW_ID],
    [Limit1].[VALUE] AS [VALUE],
    [Limit1].[DATE] AS [DATE]
    FROM  [dbo].[SC9691] AS [Extent1]
    OUTER APPLY  (SELECT TOP (1) [Project1].[ROW_ID] AS [ROW_ID], [Project1].[DATE] AS [DATE], [Project1].[VALUE] AS [VALUE]
        FROM ( SELECT
            [Extent2].[ROW_ID] AS [ROW_ID],
            [Extent2].[DATE] AS [DATE],
            [Extent2].[VALUE] AS [VALUE],
            [Extent2].[DOCID] AS [DOCID],
            [Extent2].[TIME] AS [TIME]
            FROM [dbo].[_1SCONST] AS [Extent2]
            WHERE (9697 = [Extent2].[ID]) AND([Extent2].[OBJID] = [Extent1].[ID]) AND([Extent2].[DATE] <= [Extent1].[SP9700])
        )  AS [Project1]
        ORDER BY [Project1].[DATE] DESC, [Project1].[TIME] DESC, [Project1].[DOCID] DESC, [Project1].[ROW_ID] DESC ) AS [Limit1]


Хочу обратить внимание на    OUTER APPLY , которая будет прекрасно работать по индексу
   Конструктор1С
 
795 - 30.06.20 - 18:18
(794) какой там индекс, когда сначала выполняется вложенный запрос, а уже из него дёргается ТОП 1...
   Krendel
 
796 - 30.06.20 - 18:29
У меня к Сообществу один вопрос

как Вы планируете конкурировать с франями, хотя бы по сотрудникам?

Где вы будете в регионах искать людей имеющих опыт в Лингах и прочей хне?
   dmitryds
 
797 - 30.06.20 - 19:27
(58) на самом деле не нужен. Если есть готовый набор собственных компонент. У меня например все сделано на MEAN стеке, простейший склад можно набросать за 3-4 часа. Получится полноценное веб-приложение с полностью интерактивным интерфейсом и моментальным отображением событий на клиенте. Есть микросервис для печати (печатные формы в html (ejs), а при печати отдает pdf, который в браузере открывается как родной). Все это запускается в Docker и рассчитано на легкое масштабирование.
   dmitryds
 
798 - 30.06.20 - 19:28
(796) вот именно в этом и загвоздка)
   Sserj
 
799 - 30.06.20 - 19:30
(795) Ну тут ты не прав. MSSQL достаточно умный чтобы по индексу взять только первую строку при TOP1 не читая остальные.
Другой вопрос в том что APPLY будет выполняться столько раз сколько строк в исходной таблице, так что вполне вероятно было бы эффективнее отдельно делать этот срез и соединять левым джоином, но если производительность устраивает то почему бы и нет.
   Ненавижу 1С
 
800 - 30.06.20 - 19:30
(797) сделай!
  1  2  3  4  5  6  7  8  9  10   

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