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

Killer 1s Application

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

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

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

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

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

Может уже есть готовые решения кроме 1С и я зря туплю?
   Serginio1
 
801 - 30.06.20 - 21:25
(795) Индекс который _1SCONST
  WHERE (9697 = [Extent2].[ID]) AND([Extent2].[OBJID] = [Extent1].[ID]) AND([Extent2].[DATE] <= [Extent1].[SP9700])

(796) Это не для франей и сотрудников.
Во многих случаях нужна внутрення система учета. Например для сайта без лишней прослойки 1С.
А те кто пишет бэк прекрасно разбираются и в Linq

(799) Так как в подзапросе уже есть соединение по х.OBJID == спр.ID
то OUTER APPLY  просто присоединяет строки из внешнего подзапроса.
   acht
 
802 - 30.06.20 - 21:39
(794) А теперь в цикле, как 1сники любят.
   Serginio1
 
803 - 30.06.20 - 21:48
(799) Вообще Linq провайдеры постоянно совершенствуются.
Вначале они со многими вещами не справлялись.
Вот последние изменения https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-efcore-5-0-preview-6/

Можно написать вручную соединения, но мне показалось мой синтаксис более удобный

(794) А зачем в цикле.
Там и так проходится по всему справочнику и берутся последние периодические значения на дату элемента справочника
   dmitryds
 
804 - 30.06.20 - 21:52
(800) дык уже, ERP уже работает)
   pechkin
 
805 - 30.06.20 - 22:20
(794) ты какой то свой срез последних написал.
а можешь типовой повторить?
бнз топов, а с группировками
   Sserj
 
806 - 01.07.20 - 04:15
(801) Померял, вот так без группировки чуть быстрее получается:

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 [dbo].[_1SCONST] AS [Extent2]
      WHERE (9697 = [Extent2].[ID]) AND([Extent2].[OBJID] = [Extent1].[ID]) AND([Extent2].[DATE] <= [Extent1].[SP9700])
      ORDER BY ROW_NUMBER() OVER (ORDER BY [Extent2].[DATE] DESC, [Extent2].[TIME] DESC,[Extent2].[DOCID] DESC, [Extent2].[ROW_ID] DESC)
    ) AS [Limit1]
   Конструктор1С
 
808 - 01.07.20 - 08:07
(799) "MSSQL достаточно умный чтобы по индексу взять только первую строку при TOP1 не читая остальные"

Он не сможет взять первую строку, там есть условие упорядочивания. Считай что у тебя тот же самый запрос в цикле
   fisher
 
809 - 01.07.20 - 10:41
Сам по себе linq прикольный, а вот ормы я как старовер не признаю. Ормы - это хипстота для небольших масштабов или простой архитектуры.
   Ненавижу 1С
 
810 - 01.07.20 - 10:45
(809) 1С же работает на запись ка ORM, значит тоже "хипстота для небольших масштабов или простой архитектуры"?
   fisher
 
811 - 01.07.20 - 10:53
(810) Тут тонкая грань по терминологии. В 1С простой шаблонизатор. При большом желании его можно назвать ORM. Но когда я говорю про ORM, я подразумеваю более интеллектуальные штуки с большим количеством магии. Современные СУБД и так содержат немалое количество магии, в которой нужно разбираться для создания и поддержки хай-лоад решений. Намазывать поверх этого еще один толстый слой магии не кажется мне хорошей идеей, хотя это и дает стартовый буст и выглядит очень привлекательной идеей.
   Ненавижу 1С
 
812 - 01.07.20 - 11:10
(811) СУБД делает на своей стороне всё
ORM на стороне сервера приложений или клиента
что-то генерируется конечно из ORM в базе данных, но мало
неплохо бы объединить это в один язык, тогда бы и таблицы можно было бы описывать на основе generic:

Абстрактная Таблица ПериодическийРегистрСведений<ТипИзмерение,ТипРесурс>
{
  ДатаВремя Период;
  ТипИзмерение Измерение;
  ТипРесурс Ресурс;
  Коллекция<Структура(ТипИзмерение Измерение,ТипРесурс Ресурс)> СрезПоследних(ДатаВремя Момент, Предикат<ТипИзмерение> Условие);
}

Таблица КурсыВалют:ПериодическийРегистрСведений<Структура(Валюта Валюта),Структура(Число Курс, Число Кратность)>;
   H A D G E H O G s
 
813 - 01.07.20 - 11:11
(811) Современные СУБД просты как палка. Магия в том, как они добиваются этой простоты.
   Serginio1
 
814 - 01.07.20 - 11:12
(808)  Так Top как раз и работает по упорядочиванию

SELECT TOP 1
        [Project1].[ROW_ID] AS [ROW_ID],
        [Project1].[DATE] AS [DATE],
        [Project1].[VALUE] AS [VALUE]
      FROM [dbo].[_1SCONST] AS [Extent2]
      WHERE (9697 = [Extent2].[ID]) AND([Extent2].[OBJID] = [Extent1].[ID]) AND([Extent2].[DATE] <= [Extent1].[SP9700])
      ORDER BY ROW_NUMBER() OVER (ORDER BY [Extent2].[DATE] DESC, [Extent2].[TIME] DESC,[Extent2].[DOCID] DESC, [Extent2].[ROW_ID] DESC)

При чем [Extent2].[ID],[Extent2].[OBJID],Extent2].[DATE] входят в индекс.
Это 1С 7  _1SCONST
http://catalog.mista.ru/public/63125/
1С++ работает
select top 1 cast(value as numeric(14,2)) Цена
       ,date Дата
from _1sconst (nolock)
where objid=:ТекЦена
       and id=:ИДЦена
and date<=:ЗначениеНаДату
order by date desc, time desc, iddoc desc, row_id desc

Аналог моего запроса
SELECT
    TabSpr.*, ISNULL(TabConst.VALUE,'')
FROM
    SC19 As TabSpr
LEFT OUTER JOIN _1SCONST As TabConst
    ON ((TabSpr.ID = TabConst.OBJID) AND (TabConst.ID = 101))
WHERE
    (TabConst.DATE =
        (SELECT MAX(TabConstl.DATE)
        FROM _1SCONST AS TabConstl
        WHERE (TabConstl.OBJID = TabConst.OBJID)
            AND (TabConstl.ID = TabConst.ID)
        )
    )


Что тебе не нравится?

В моем случае еще условие на соединение [Extent2].[OBJID] = [Extent1].[ID]

Я проверял на большой базе работает быстро!
   Serginio1
 
815 - 01.07.20 - 11:17
(811) Ты не поверишь, но в Asp.Net  EF Используют напропрополую.
Linq для Sql мало отличается от Linq для коллекций. И код смотрится органично.
Есть куча инструментов ORM. Code First или Base First
https://docs.microsoft.com/ru-ru/ef/core/extensions/
   Ненавижу 1С
 
816 - 01.07.20 - 11:23
(815) он только внешне похож
для SQL идет разбор синтакс-дерева в запрос
во что разберет - вот это и есть проблема

а та да - внешне все красиво и унифицированно
   Serginio1
 
817 - 01.07.20 - 11:35
814+ Не поленился посмотрел индекс
ID,OBJID,DATE,Time,DocID, PartNo
То есть условие и сортировка использует индекс
WHERE (9697 = [Extent2].[ID]) AND([Extent2].[OBJID] = [Extent1].[ID]) AND([Extent2].[DATE] <= [Extent1].[SP9700])
      ORDER BY ROW_NUMBER() OVER (ORDER BY [Extent2].[DATE] DESC, [Extent2].[TIME] DESC,[Extent2].[DOCID] DESC, [Extent2].[ROW_ID] DESC)
   Serginio1
 
818 - 01.07.20 - 11:40
(816) Поверь я знаю. Я же писал, что провайдеры совершенствуются. И генерируют оптимальный SQL код.
При этом написав для одной базы, этот же код работает и для другой.
https://entityframework.net/supported-database-providers
   Serginio1
 
819 - 01.07.20 - 12:07
814 При этом можно сделать метод и многократно использовать в запросах
public static System.Linq.IQueryable<Константы1С.ЗначениеПериодического> ЗапросДляПериодическогоЗначения(int ID, string OBJID, DateTime DATE)
        {
            var бд = ГлобальныйКонтекст.БД;
            var query = (from Константа in бд.ТаблицаКонстанты
                         where Константа.ID == ID && Константа.OBJID == OBJID && Константа.DATE <= DATE
                         orderby Константа.DATE descending, Константа.TIME descending, Константа.DOCID descending, Константа.ROW_ID descending
                         select  new Константы1С.ЗначениеПериодического{ Значение = Константа.VALUE }).Take(1);

            return query;
        }
И использовать под конкретные реквизиты

var query = Константы1С.Константы.ЗапросДляПериодическогоЗначения(9696, ID, ДатаДляПериодическихРеквизитов);

                var db = Константы1С.ГлобальныйКонтекст.БД;
                var query2 = from спр in db.Спр_Номенклатура
                             join конст  in query on  спр.ID equals  конст.Значение.Substring(0, 9)
                             select спр;
                return query2.SingleOrDefault();
   Serginio1
 
820 - 01.07.20 - 12:18
   Конструктор1С
 
821 - 01.07.20 - 12:23
(814) работает, но ТОПу же нужно просмотреть все записи, подходящие под условие отбора
   Sserj
 
822 - 01.07.20 - 12:28
(814) Ему не понравилась вот эта часть запроса:

    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]

Выглядит как будто с начала делается внутренний подзапрос по всем значениям младше или равным нужной даты [Project1], а потом уже результат этого подзапроса сортируется и отбирается первая строка. Т.е. визуально результат внутреннего подзапроса сортироваться будет уже без индекса.
Но MSSQL довольно умная штука и он сам этот запрос трансформирует в один, перенесет сортировку и TOP 1 во внутренний.
Ну по крайне мере с SQL2012 точно.
   Serginio1
 
823 - 01.07.20 - 13:06
(821) Я индекс тебе зачем? http://rsdn.org/article/alg/tlsd.xml
Поиск на меньше или равно. Это же классика.
(9697 = [Extent2].[ID]) AND([Extent2].[OBJID] = [Extent1].[ID]) AND([Extent2].[DATE] <= [Extent1].[SP9700])
попадает под индекс

(822) Я эту статью писал http://catalog.mista.ru/public/393228/ почти 5 лет назад.
Этот запрос формировался под  SQL2012
Ну вообще то оптимизаторы раскрывают такие запросы. Ничего криминального не вижу.Нужно смотреть план запроса.
Но работало быстро. Сейчас и баз нет, что бы план запроса показать.

В свое время на RSDN обсуждал эту тему
http://rsdn.org/forum/dotnet/6164030.flat

Там выиграл
WITH TIES
Используется, если требуется вернуть две или более строки, которые совместно занимают последнее место в ограниченном результирующем наборе. Требуется использовать с предложением ORDER BY. WITH TIES может привести к тому, что вернется строк больше, чем указано в значении expression. Например, если expression имеет значение 5, но еще 2 строки соответствуют значениям в столбцах ORDER BY в строке 5, то результирующий набор будет содержать 7 строк.
Предложение TOP...WITH TIES может быть задано только в инструкциях SELECT, и только если указано предложение ORDER BY. Порядок возврата связанных записей произволен. ORDER BY не влияет на это правило.
   Конструктор1С
 
824 - 01.07.20 - 20:05
(823) я с этим и не спорю. Я про то, что чтобы получить первое значение из упорядочиваемого диапозона, СУБД нужно просмотреть весь этот диапазон
   Конструктор1С
 
825 - 01.07.20 - 20:10
(822) "он сам этот запрос трансформирует в один, перенесет сортировку и TOP 1 во внутренний"

Ты в этом уверен? План запроса покажешь?
   Serginio1
 
826 - 01.07.20 - 22:31
(825) Это было 5 лет назад. Я и работу сменил и базы этой нет. Просто поверь на слово. Я когда статью писал проверял.
В конце концов можно использовать хранимые процедуры с WITH TIES.
https://stackoverflow.com/questions/54657849/problem-mapping-scalar-function-in-ef-core-2-1

Кроме того можно использовать голый SQL
https://docs.microsoft.com/ru-ru/ef/core/querying/raw-sql
   Serginio1
 
827 - 01.07.20 - 22:59
   Serginio1
 
828 - 01.07.20 - 23:10
   Sserj
 
829 - 02.07.20 - 02:27
(825) Да я в этом уверен. Не то чтобы я прям настаиваю писать такое, мол пусть сервер решает и разворачивает как ему надо. Но все таки он это делает :)

Вариант с подзапросом:
https://ibb.co/q5GcNRD

Вариант без подзапроса:
https://ibb.co/jfKRn3g

Планы абсолютно одинаковые.
   Конструктор1С
 
830 - 02.07.20 - 07:12
(829) у тебя запрос на получение единственного топ1. Он отличается от исходного
 
 Рекламное место пустует
   Гений 1С
 
831 - 02.07.20 - 09:31
Мне вот критики пишут:
1.
Java + JavaFX для UI + Hibernate для БД
.Net + WPF/Xamarin (UI) + Entity Framework (БД)
в каком из этих стеков нет того, что ты описал у себя в ТЗ? декларативные UI — есть. работа с БД на уровне объектов с возможностью тиражирования — есть.

Отвечаю: 1С в качестве БД испольует обычные промышленные и высокопроизводительные СУБДТ типа MS SQL, Postgree и т.п. Разработчик, который будет ковырять объектную БД, столкнется с тем, что его приложение сможет работать только на этой СУБД и все.
Что касается UI, надо изучить вопрос. Кто в теме, пишите.

2. Декларативное описание формы было еще в Дельфи.
Приведи пример, я не встречал. Т.е. как бы это выглядело для формы и как бы это было связано с данными формы (которые тянутся из БД).
   ДенисЧ
 
832 - 02.07.20 - 09:41
(831) Насчет декларативного... Ещё в автокаде было такое в 90х.
   Ненавижу 1С
 
833 - 02.07.20 - 10:02
(831)
>>Разработчик, который будет ковырять объектную БД

какую объектную? СУБД самые обычные "промышленные" как ты пишешь, работа на уровне сущностей

>>приложение сможет работать только на этой СУБД

начни с понятия "интерфейс как паттерн" - реализаций поддерживающих интерфейс много

>>Декларативное описание формы было еще в Дельфи.
>>Приведи пример, я не встречал.

сам возьми хотя бы и полазь в интернете
   Гений 1С
 
834 - 02.07.20 - 10:04
(833) "сам возьми и полазь" - это слив. Для дискуссии надо приводить аргументы, а не переводить стрелки на Гугл. Если ты защищаешь какую-то идею, защищай до конца, а не сливай
   Гений 1С
 
835 - 02.07.20 - 10:04
(833) Хорошо, как там происходит связь между формой документа и хранимым в БД документе, например.
   Efir12
 
836 - 02.07.20 - 10:16
Что действительно нужно так это модульная система, с возможностью компоновать из блоков (например склад = номенклатура +..., продажи = номенклатура+..., ут = склад + продажи + ...
обязательно на новых перспективных технологиях.

А не все вот эти стремительно устаревающее
   Ненавижу 1С
 
837 - 02.07.20 - 10:19
(835)
1. если в 1С есть документы, то это не значит, что они есть везде, ближе всего подходит понятие "сущность" Entity. По крайней мере это устоявшийся термин в разных технологиях.
2. в том же Delphi были специальные компоненты, для отображения полей СУБД. Нет это было не ORM ни разу, но это были 90-е.
3. если ты ищешь что в таких системах как .Net или Java будет как в 1С. Вот прям сразу - нет, не будет. Там другой уровень абстракции и бОльшая универсализация. Но на базе этого можно допилить свой уютный ламповый мирок, чтобы было "как ты любишь".
   fisher
 
838 - 02.07.20 - 10:34
(836) Это голубая мечта тех, кто не хочет думать как это должно работать и хочется чтобы "оно все само". Для этого давным-давно функциональные опции завезли. Разрубание решения на физически разные модули - это менее критичная потребность, у которой есть свои плюсы и минусы. Но возможно и это запилят откатав механизм расширений
   Efir12
 
839 - 02.07.20 - 10:40
(838) Без "оно все само" вся эта история не имеет смысла, нужна прога которая:
1. Умеет включатся пользователем в три клика, в идеале в облаке;
2. Иметь возможность приобретений плагинов в три клика - это один из вариантов монетизации;
3. Не требовать присутствие прогр. в процессе работы, т.е. такой ф-л как настрйока печ форм должен быть понятным прозрачным для пользователей (что-то вроде шаблонов doc в УНФ);

в odoo что-то похожее реализовано.
   Serginio1
 
840 - 02.07.20 - 11:10
(829)
(830) Суть не в одном TOP, а в том, что внешний запрос использует индекс подзапроса
(831) Если не использовать хранимые процедуры (вернее если не позаботиться о генерации ХП для каждой базы), то код будет одним и тем же для любой базы.
Об этом заботится провайдер
(835) Там биндинг с объектом и полем, таблицей
https://metanit.com/sharp/wpf/5.14.php

В качестве ItemsSource можешь передать любую коллекцию (Табличная часть это свойсво типа списка)
https://metanit.com/sharp/wpf/14.1.php
https://metanit.com/sharp/wpf/14.2.php
https://metanit.com/sharp/wpf/14.3.php


Если хочешь работать с метаданными, то можно сделать свой редактор
https://stackoverflow.com/questions/20906083/displaying-read-only-properties-in-propertygrid-control/20962743#20962743
   Serginio1
 
841 - 02.07.20 - 11:26
Привязка данных с помощью WPF
https://docs.microsoft.com/ru-ru/ef/ef6/fundamentals/databinding/wpf
   Serginio1
 
842 - 02.07.20 - 11:37
   Злопчинский
 
843 - 02.07.20 - 11:49
(838) http://catalog.mista.ru/public/194059/

CheBurator (Сергей Коцюра):

Можно ли ожидать появления блочной структуры построения типовых конфигураций? Надо - купил/добавил блок "Резервы", надо - купил/добавил блок "контроль кредита" и т.д. Т.е. изначально покупать простую конфигурацию и по мере необходимости наращивать ее действительно нужными блоками, а не наоборот - иметь мегауниверсальную конфигурацию, в которой "отключать" кучу ненужного...?

Рейтинг: +95

Борис Нуралиев:

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

С коммерческой точки зрения вызывает большие сомнения, что рынок позитивно воспримет идею "докупки" каждого дополнительного блока – сейчас для успеха на массовом рынке скорее приходится даже самые массовые решения делать очень функциональными, а не "скелетными прототипами". Кроме того,  при "мелкоблочном подходе" может на порядки усложниться поддержка таких решений.

Пока мы считаем более перспективной разработку полнофункциональных типовых решений, хорошо "накрывающих" ту или иную предметную область – с возможностью дополнения их различными отраслевыми и специализированными решениями, которые разрабатывают партнеры.
   Злопчинский
 
844 - 02.07.20 - 11:52
(839) "Не требовать присутствие прогр. в процессе работы, т.е. такой ф-л как настрйока печ форм должен быть понятным прозрачным для пользователей (что-то вроде шаблонов doc в УНФ);"
- мой мелкий опыт показывает что такая продвинутая системе чуть менее сложна чем собственно само напрограммировать в 1С. И такой настройкой никто из типовых пользователей (да и нетиповых) -гне занимается. ну не их это и все. Отсюда вылезет необходимость держать под такое "конструирование" отдельного специалиста, что невыгодно в общем случае, бо при необходимости он не выпилит сложное что=то что превышает возможности метаконструктора. Поэтому - держим бизнес-программиста 1Сника, эффект примерно тот же, возможностей - больше.
   CrushBy
 
845 - 02.07.20 - 11:53
>С коммерческой точки зрения вызывает большие сомнения, что рынок позитивно воспримет идею "докупки" каждого дополнительного блока – сейчас для успеха на массовом рынке скорее приходится даже самые массовые решения делать очень функциональными, а не "скелетными прототипами". Кроме того,  при "мелкоблочном подходе" может на порядки усложниться поддержка таких решений.

Гонит он. Прекрасно поддерживаются мелкоблочные модульные системы. Это дает значительно большую гибкость для конкретного заказчика. Просто надо как-то оправдываться вместо того, чтобы просто сказать "ну не смогла я".
   Злопчинский
 
846 - 02.07.20 - 12:23
(845) вот и я о том же.
   CrushBy
 
847 - 02.07.20 - 12:48
(845) Причем ладно, если ты пишешь с нуля под конкретного заказчика. Там серьезная модульность может быть экономически неэффективна. Но вы же блин делаете универсальное решение для сотен тысяч предприятий. Они думают, что всем нравится копаться в этой лапше из кода, написанного на все случаи жизни ?
   MadHead
 
848 - 02.07.20 - 12:59
(847) Истина где-то рядом. Экономически не эффективно разрабатывать продукт соблюдая все правила хорошего тона. В 1с с организацией кода все очень плохо, что наглядно можно наблюдать на примере больших современных конфигурации, так как время на доработку ростет прямопропорционально размеру конфигурации, чего при нормальной организации кода не должно происходить. С другой стороне если бы 1с была значительно дороже, то не получили бы такого распространения в СНГ.
   Efir12
 
849 - 02.07.20 - 13:11
(845) 1с просто не выгодна такая модель распространения. Ресурсы на сопровождение существенные нужны. А все потому что она изначально не модульная.
   Efir12
 
850 - 02.07.20 - 14:09
(839) не должно быть отдельного специалиста, должны быть готовые модули, сделанные для тиражного распространения.

Либо все есть из коробки, нужно только настроить, либо из готовых модулей, некий аналитик накидывает новую "конфигурацию" (которую потом другие могут использовать), если не хватает и этого уже можно подключить прогера для разработки персонального модуля. Никаких самописных поделок не сертифицированными програми не должно быть в магазине.
   Garikk
 
851 - 02.07.20 - 14:29
(845) <Прекрасно поддерживаются мелкоблочные модульные системы>
да уж прямо

Берем систему из 5 модулей, A, B, C, D ... версии 1,1,1,1 ... обновляется версия C до 5 версии..все норм...потом выходит версия 6 которая требует модуль A версии 3, а модуль А версии 3 требудет модуль D версии 5...который в своб очередь модуль B

И когда количество модулей переваливает за десяток, такие кольцевые зависимости выливаются в страшый ад в поддержке, а еще добавляет градус неадеквата то, что "модуль B версии 3 поставляется за деньги по отдельному контракту"...и всё, надо отдать 100500 бабла перевнедрение всей системы

p.s. это из опыта поддержки адски дорогущей CRM системы, не на базе 1С
   CrushBy
 
852 - 02.07.20 - 15:02
(851) Управление зависимости модулей - давно известная проблема, имеющая множество решений. У нее есть свои недостатки, но преимущества все равно перевешивают. Посмотрите package manager вроде yum, maven. Они для этих целей и предназначены и прекрасно работают. Делаете yum update и подтягиваются все пакеты с зависимостями. Проблемы адски дорогущей CRM системы - это кровавый enterprise. В open source проектах все гораздо лучше.
   Конструктор1С
 
853 - 02.07.20 - 15:10
(852) в опенсорсе всё ещё веселее. Каждый др...ит как хочет и нет единой ответственности
   Efir12
 
854 - 02.07.20 - 15:12
(851) эта проблема не так остро будет стоять для маленьких конфиг, модули разделить по типам, жесткие интерфейсы взаимодействия, контроль версий, думаю это решаемая проблема
   Злопчинский
 
855 - 02.07.20 - 15:15
(850) " некий аналитик накидывает новую "конфигурацию" - такого аналитика отдельного никто не будет держать. ибо накидать такую конфигу, учитывающую специфику конторы такой онолитег вряд ли сможет. и я знаю - о чем говорю. ибо по такому принципу метаконструктора - построены например некоторые WMS. и персонал - логисты заказчиков - не могут их настроить без существенной подготовки, просто потому что это НЕ ИХ. не нужно оно им. и ваяют это все сами "внедренцы" или "погромисты".
   080808Ник
 
856 - 02.07.20 - 15:17
(845) "Просто надо как-то оправдываться вместо того, чтобы просто сказать "ну не смогла я"." - вы учет зарплаты и бюджетирование когда в свое ерп добавите?)
   080808Ник
 
857 - 02.07.20 - 15:17
опять сказки о модульности пошли)
   Злопчинский
 
858 - 02.07.20 - 15:17
(852) " В open source проектах все гораздо лучше."
спасибо, поржал.
что стоит у ПОЛЬЗОВАТЕЛЕЙ преимущественно? винды или никсы?
почему никсы распались на кучу веток. почему то что в одной ситсеме есть - не подходит в другой? где эта "универсальность"..?
   Злопчинский
 
859 - 02.07.20 - 15:18
(856) не ссы, я слежу. октябрь уже скоро, посмотрим чего они за год нахерачили.
   Efir12
 
860 - 02.07.20 - 15:22
(855) этот аналитик на окладе у Гения 1с будет, клепать конфы в день по три штуки  вместе с прогером
 
 Рекламное место пустует
   Гобсек
 
861 - 02.07.20 - 15:22
(854) если маленькие конфиги начать делить на модули, то в результате из ничего будут созданы непростые проблемы.
   080808Ник
 
862 - 02.07.20 - 15:31
Модульность в САП - поставщики и покупатели разные справочники!) да ну нафиг такую модульность)
   Злопчинский
 
863 - 02.07.20 - 15:34
(862) ну в УТ11 есть же "договор с поставщиком" и "договор с покупателем" ;-)
   080808Ник
 
864 - 02.07.20 - 15:40
(863) так договора это таки две разныех объекта) а вот поставщик и покупатель это одна сущность. И один и тот же контрагент у тебя может быть и покупателем и поставщиком и комиссионером и коммитентом) и в каждой ситуации заводить отдельную карточку а потом в экселе сводить итого в 2020 году это маразм)
   080808Ник
 
865 - 02.07.20 - 15:43
Модульность это путь как в САП, когда у тебя на каждый модуль отдельный консультант и что бы внедрить систему уровня ут, тебе нужно десятка два консультантов и некий архитектор, который знает в общих чертах о всех модулях. Да и на счет жадности заказчиков прав отец 1с - клиент, который покупает программу потом косо на тебя будет смотреть, когда ты ему выставлять будешь счет на каждый модуль.
   Злопчинский
 
866 - 02.07.20 - 15:46
(864) " а вот поставщик и покупатель это одна сущность."
а с чего бы это?
с покупателями работают продажники.
с поставщиками - закупщики.
причем и сос тороны поскпателя/поставщика с "нами" общаются тоже разные люди.
пересекаются они достаточно редко (взаимозачеты только м.б.).
так что - тут ка кпосмотреть.
было две сущности покупатель и поставщиик.
стала одна контрагент. зато две сущносьти "договор".
   pechkin
 
867 - 02.07.20 - 15:49
а если обратный выкуп?
   080808Ник
 
868 - 02.07.20 - 15:50
(866) ну может у вас, в столицах и разные люди, а у нас в деревне сибирской, поставщик он же покупатель это юр лицо в двадцать сотрудников и общается с вами один человек и от нас один человек ведет его. И часто закрываем кредиторку дебиторкой и наоборот.
   080808Ник
 
869 - 02.07.20 - 15:57
(868) + или вот бонусы. Есть Поставщик, Сибирский Пельмень. Он нам поставляет пельмени. Мы их продаем. При выполнении определенного объема он нам бросает бонусы на счет, по отдельному договору. Кроме этого, как покупатель он у нас покупает тару. Допустим у нас две сущности поставщик Сибирский Пельмень и Покупатель Сибирский Пельмень, с одинаковым кодом.  И вот зашли нам деньги по клиент банку от ООО Сибирский Пельмень. Номер договора есть в назначении платежа. На кого эти деньги бросать - на поставщика Сибирский пельмень или покупателя? Если не на тот договор зашло - в целом ты видишь взаиморасчеты и пересорт по договорам. Можешь отследить. а если разные сущности то пока обнаружишь неделя пройдет.
   080808Ник
 
870 - 02.07.20 - 15:59
(869) +"Номер договора есть в назначении платежа. " читать Хорошо, если номер договора есть в назначении платежа.
   Ненавижу 1С
 
871 - 02.07.20 - 16:03
Партнер,  к нему Покупатель и Продавец через паттерн Декоратор
   080808Ник
 
872 - 02.07.20 - 16:10
Есть модуль Расчет зарплаты, в нем Сотрудники. Есть модуль склад, в нем МОЛ. Есть модуль продажи, в нем менеджеры. С точки зрения модульности это как реализуется? три разных справочника? один справочник?
   Efir12
 
873 - 02.07.20 - 16:30
(872) сотрудник и физ. лицо, мол это сотрудник + мат отв., менеджер это сотрудник + роль в организации, при этом сотрудник так же может быть клиентом.
   Злопчинский
 
874 - 02.07.20 - 16:37
(867) нет такого по НК "обратный выкуп"
   Злопчинский
 
875 - 02.07.20 - 16:38
(869) "На кого эти деньги бросать " в соответствии с назначением платежа.
   080808Ник
 
876 - 02.07.20 - 17:25
(873) то есть это один справочник и  его нужно добавлять во все три системы?
   080808Ник
 
877 - 02.07.20 - 17:26
(875) ну вот, неправильно бросил бухгалтер на покупателя. а деньги шли от поставщика. Это выявили спустя месяц по результатам акта сверки. потому что взаиморасчеты с покупателем и поставщиком не связаны вообще никак
   Salimbek
 
878 - 02.07.20 - 17:50
(876) Как по мне, то правильный алгоритм такой: 1) микромодули не "сами по себе", а работают "с зависимостями"; 2) модуль Расчет Зарплаты - зависит от модуля "Физические лица", Модули Склад и Продажи - тоже;
   Efir12
 
879 - 02.07.20 - 17:51
(876) да, сотрудник это один справочник, кот. не может работать без справочника физ лиц. так же мат. отв. учет не может работать без кадрового учета...тут главное вовремя остановиться)
   Efir12
 
880 - 02.07.20 - 17:59
конфа  = набор подсистем, каждая подсистема состоит из набора микромодулей которые могут зависеть от других микромодулей, проблемы начнутся когда версии совместимости разойдутся
   080808Ник
 
881 - 02.07.20 - 18:16
(878) (880) и идет крахом вся модульность, когда подтягиваются зависимости, в результате получается тот же ут, только без отдельных блоков. тогда вопрос, если нам нужно отключить отдельные модули, то чем вам не нравятся функциональные опции?)))
   pechkin
 
882 - 02.07.20 - 18:32
все зависит от того насколько мелкие блоки
если слишком мелкие то будет хуже чем монолит
   Garikk
 
883 - 02.07.20 - 19:02
(852) управление версиями - ерунда

несовместимость версий и их взаимоблокировка - вот главный геморрой

бросил производитель модуль? все...в проекте бомба замедленного дейтствия...как только обновится какойто пакет который потребует обновление этого модуля = вы будете переписывать систему без его использования

Вот у меня сейчас, уже второй месяц, выкидываем маленькую либу которая держит обновление Django застрявшего в версии 1

и никакой менеджер пакетов тут не поможет, её развитие остановилось несколько лет назад
   Злопчинский
 
884 - 02.07.20 - 19:05
(883) "Django" - а как же все приемущества открытого и свободного софта?
   Efir12
 
885 - 02.07.20 - 19:29
(883) несовместимость версий можно сгладить неким АПИ взаимодействия модулей, оно гораздо реже должно меняться
   Злопчинский
 
886 - 02.07.20 - 19:37
(885) ага, а сверху на АПИ навесить какие-нить межстековые взаимодействия и прочую хрень.. одна матрешка вместо другой матрешки
   CrushBy
 
887 - 02.07.20 - 19:53
(858) у нас у всех клиентов на серверах стоит Centos. И прекрасно yum update обновляется.
   Злопчинский
 
888 - 02.07.20 - 20:00
(887) а из нашего окна - площадь Красная видна.
   Garikk
 
889 - 02.07.20 - 21:12
(884) ну мы конечно можем форкнуть либу и её переписать, только мы делаем свой продукт, а не развиваем свободный софт (в лице никому не нужных либ...что видно по тому что её бросили) за свои деньги ;)
   Garikk
 
890 - 02.07.20 - 21:14
(889) *я вообще против выкладывания софта в свободный доступ, если нет вменяемых планов по его поддержке в дальнейшем
   Ненавижу 1С
 
891 - 02.07.20 - 21:23
(890) как знать, что планы не поменяются?
Кстати, где автор сего поста?
   mikecool
 
892 - 02.07.20 - 21:25
(884) Джанго освобожденный ))))))))))
   Garikk
 
893 - 02.07.20 - 21:26
(891) хотябы в принципе понимать, я вот понимаю что если на текущей работе я какуюто либу выложу в опенсорсе, то после того как я уйду в другое место, кроме меня никто её поддерживать не будет....а я врятли буду её тащить если она лично мне не пригодится
   Ненавижу 1С
 
894 - 02.07.20 - 21:30
(893) с другой стороны: ты выложил, люди начали развивать, ты уже остыл от этого, а оно живёт и развивается вообще третьими людьми
   CrushBy
 
895 - 02.07.20 - 21:32
(893) Обычно за любым open source проектом стоит компания, которая коммерциализируется "вокруг" нее. За CentOS стоит Redhat. За Java стоял Sun. За nginx уже F5. Только за PostgreSQL стоит сообщество. Но большинство людей в нем тоже связаны с компаниями (например, российские контрибьюторы - это Postgres Pro).

По поводу зависимости от компании, стоящей за open-source, есть интересный пример с MySQL. Компанию, стояющую за ней продали, а потом форкнули в MariaDB.
   Garikk
 
896 - 02.07.20 - 21:49
(894) чтобы "люди начнут развивать" - надо чтобы вещь была действительно нужна и полезна
А я видел много либ которые вроде как и нужны, но их никто не поддерживает.

Яркий пример - Bluetooth либы для явы (не андройд). их тупо нет...точнее то что есть, заброшено лет 7 назад, плюс есть кусок кода который выложил интел в приступе близости с опенсорсом...и последний апдейт кода был года 4 назад...и он не поддерживает половину протоколов

(895) вот в том то и дело, что мелкие либы и незначимый софт никто в моей компании не будет поддерживать, это не настолько значимые либы
   Гений 1С
 
897 - 03.07.20 - 10:03
Вот что мне пишут люди в моем блоге:

Описываешь сущности предметной области средствами EF/Hibernate/SQLAlchemy/твой_любимы_орм_фреймворк, получаешь классы для работы из приложения, и миграции для равзертывания в БД.
описываешь формы в UI фреймворке, через какой-нибудь MVVM подягиваешь классы из предыдущего пункта, пишешь обработчики, CRUD готов.
ставишь сервер БД, накатываешь миграции, запускаешь аппу, профит (все это можно запихнуть в инсталлер и раздавать клиентам).
дальше пилишь следующую версию своего склада. если что-то меняешь в сущностях, получаешь следующую версию миграции. если что-то меняешь в формах, пересобираешь аппу.
дальше закатываешь миграции и аппу в апдейт, рассылаешь пользователям, профит.
а вы там как в 1С, до сих пор запросы руками пишите, или хотя бы билдеры используете?

Что скажете, рабочая схема или как обычно автор преуменьшает сложность проблем? Или можно брать и ваять небольшой складик в такой парадигме?
   Гений 1С
 
898 - 03.07.20 - 10:07
(845) Поддерживаю. Нуралиев видимо в глаза не видел Навижн, где нужные блоки просто тупо "докупаются". Я видел, если что.
   Василий Алибабаевич
 
899 - 03.07.20 - 10:12
(897) "можно брать и ваять небольшой складик в такой парадигме?"

ГЫ. Если понял о чем речь - можно брать и ваять. Особенно доставило "твой_любимы_орм_фреймворк" в контексте Фиксина. )))
   Йохохо
 
900 - 03.07.20 - 10:46
(898) а в динамикс нав после покупки блока сами появляются движения и первичка за 5 лет
  1  2  3  4  5  6  7  8  9  10  11   

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