|
1С:Предприятие vs Delphi + Oracle Ø |
☑ | ||
|---|---|---|---|---|
|
0
02.07.01
✎
16:38
|
Господа, поделитесь соображениями, в чем преимущества создания системы управленческого учета на базе 1С:Предприятия, в отличие от связки Delphi + Oracle. В основном интересуют слабые и сильные места Delphi + Oracle. 1cv8(at)mail.ru
|
|||
|
1
Dag
02.07.01
✎
16:44
|
Сильное место Delphi + Oracle: твой заказчик никогда от тебя не избавится. Я знаю человека, который держался за свои исходники до последнего... Правда проект накрылся медным тазом - но он был единственный у руля.
|
|||
|
2
Сфинкс
02.07.01
✎
20:25
|
Сильные места D+O: масштабируемость, возможность создавать серьезные гибкие решения в 2 или 3-звенной архитектуре и т.д. и т.п.
Слабые места: стоимость системы и время создания. |
|||
|
3
pit
02.07.01
✎
22:27
|
то 2 - почти всегда правда, но есть исключения. Недавно наблюдал такое, Делфи +(Оракле или сиквел или Интервасе). Торговля. Завернуто здорово, усе лётает. А вот детали мне показали издаля и за полторы минуты, как говорится.
. Масса идей почерпнута в 1С. Реализация - постоена на компонентах Делфи, весьма специализированных и заточенных под решение торговых задач (нечто вроде системы регистров и запросов, справочников). SQL запросы можно построить внутренним конструктором или покрутить вручную (во где поле для оптимизации, доступны все возможности сиквела - система полностью противоположна 1С - правтически вся обработка на сервере). . Разработка компонент велась примерно полтора года тремя людьми, последние полгода - был четвертый (сейчас слил в Ирландию по моему). . Конечная система для пользователя программируется за 1-1.5 месяца с чистого листа одним челом. Работы наверное немного больше, чем в 1С - но стоит того - скорость работы как минимум в десять раз больше и определяется только сервером. Легко модернизируется. Все прелести Делфи + использованные возможности компонент + идеи от 1С. Приятная штука. . Вещь широко не тиражируемая. Индпошив. Исходники передаются клиенту (кроме компонент). Дорого. Вкусно. И кстати, бухгалтерия не реализована, а сделан слив в 1С-Бух - через текстовый файл или ОЛЕ. Тоже о чем то говорит (велосипед они не изобретали). Это не реклама - ребята заказы не берут (там уже очередь). Лично мне понравилось больше 1С торговли. . так что любишь быстро кататься - плати денежку. |
|||
|
4
pit
02.07.01
✎
22:30
|
Вдогон - если есть идеи и команда - можно делать хорошие вещи.
|
|||
|
5
Petrovich
03.07.01
✎
03:03
|
Pit прав, лучше Delphi (а еще лучше - C++ Builder) ничего еще не придумали, это ВЕЩЬ. Единственное неудобство для программера, если он не сильно рубит в бухгалтерии (типа меня ;-), нужно тратить время еще и на изучение ее механизмов, что горше редьки, а если разобрался - то нудно воплощать в жизнь. Поэтому почти никто и не возится с этим, а берет готовый макет (то бишь 1С).
|
|||
|
6
Шутка
03.07.01
✎
03:09
|
2(5)Как хорошо что я не люблю соленые бананы. Ведь если б я любил их, мне пришлось бы их есть, а я их терпеть не могу.
|
|||
|
7
AVTigra
03.07.01
✎
05:03
|
Да вы о чем???? Если есть проблема поднять камень, то печму не прибегнуть к квантовой механике? - нанять пару физиков, выделить пару мильёнов на исследования, авось придумают способ переместить как-нито (пока не свалили, например в ирландию ;)))), а там, глядишь, лет через дцать - камень сам перелетит. А если не перелетит, то 10-25 грузчиков, ну всяко за их зарплату (и то, если их уговорить) перенесут !!!! ИМХО!!!
А проще, взять и перетащить самому или с друзьями - глядишь, экономия!!!!! ;)))) Вот и с Ораклом+С++ + С# + fort + java (java+++) + prolog + kobol + basic+ любые извращения - ситуация такая-же: а стоит ли??? Господа????? |
|||
|
8
Михач
03.07.01
✎
05:06
|
to(pit). Да, были аналогичные мысли что было бы не плохо иметь аналог 1С на компонентах Делфи,( компонента Бухучет , Торговля и .т.п.) особенно первое время когда только знакомился с визуальной частью 1С, я как раз с Дельфей туда перескочил и формы 1С выглядели очень бледно на ее фоне, особенно программирование на русском языке. А сейчас вроде бы даже и привык. Но все равно интересно посмотреть на реализацию такой идеи.
|
|||
|
9
Есть_Мнение
03.07.01
✎
12:35
|
Однажды на одном из форумов где пасутся линуксоиды прочитал: а не хило нам мужики претащить 1С под линукс, ведь помимо бесплатной платформы и "1С" там еще и MySQL и PostgreSQL. Идея нормальная но реализована если и будет то лет через десять!
|
|||
|
10
Для
03.07.01
✎
13:17
|
бухгалтерии в 10000 рыл :) было бы неплохо иметь базу под линухом ;о)
|
|||
|
11
Есть_Мнение
03.07.01
✎
13:27
|
To(10). Базу под линуксом ты и так можешь поиметь ( например Samba ). По личному опыту скажу,- никаких преимуществ по сравнению с Windows нет. Речь идет о другом: 1С как приложение линукса в связке с MySQL или PostgreSQL.
|
|||
|
12
А
03.07.01
✎
13:43
|
вот как... А я думал что под линухом все приложения побыстрей шуршат, даже если на 2-5%, при множестве пользователей преимущество, мягко говоря, видать.
|
|||
|
13
Есть_Мнение
03.07.01
✎
13:59
|
To(12). Небольшой фрагмент личных исследований. На компьютере стоят две операционки -ServerNT4.0 и RedHat7.0. Рабочая станция под WsNT4.0. База данных 600 Мб. Оговорюсь сеть 10Мб/сек - но для сравнительных измерений это годится. Переиндексация Linux - 16m03s, Nt - 15m51s. Тяжелый отчет (материальная ведомость за полгода) Linux - 21m15s, NT - 22m08s. Проводка задним числом большой накладной ( более 300 строчек) Linux - 3m01s, NT - 3m23s.
|
|||
|
14
А
03.07.01
✎
14:16
|
если отчеты начнут готовить одновременно бухгалтеров эдак 100?
|
|||
|
15
Есть_Мнение
03.07.01
✎
14:22
|
To(14). Сейчас Linux можно использовать только под файл-сервер. Со всеми вытекающими.... Так-что кури бамбук!!!
|
|||
|
16
Однако
03.07.01
✎
14:29
|
оракл под юнихом прекрасно работает. Передаю бамбук ;о)
|
|||
|
17
Есть_Мнение
03.07.01
✎
14:33
|
To(16). А вот 1С под оракл не работает(пока). Передаю бамбук обратно :-)))
|
|||
|
18
Да
03.07.01
✎
14:34
|
и вообще-то линух не только как файл-сервер работает, а и как файл-сервер будет работать быстрее чем 1с под скл ;) хе-хе(новый вкус пэлл мэлл)
|
|||
|
19
pit
03.07.01
✎
16:44
|
когда я сижу в бронепоезде.
. Продолжу (3). Нормально, грамотно сделаны компоненты, НО - ТОЛЬКО для торговли. ЗА БУХ МУЖИКИ НЕ БРАЛИСЬ. Они просто не стали конкурировать с 1С, а пристегнулись к 1С бухгалтерии. Торговля сделана (реализована) для больших контор (а там 1С не тянет). Средние величины номенклатура - 200 тысяч (книги)- одна фирма, запчасти - другая (тысяч 60 номенклатура) и т.д. Там сказывается преимущество разработок под Делфи/С++. У таких фирм и деньги на индпошив есть. |
|||
|
20
Сфинкс
03.07.01
✎
19:25
|
2(3,19). По поводу 1С, Linux и компонент есть следующая мысль. Можно запросто сделать библиотеку компонент - аналогов метаданных на Kylix, на их базе сделать типовые решения. Библиотеку можно свободно раздавать, решения продавать. Все можно сделать красиво, весь вопрос в рынке и инвестициях;)
|
|||
|
21
pit
03.07.01
✎
22:13
|
Вот именно, что в инвестициях. И в факторе времени. Этож надо сильно заинтересовать работодатеоя, счобы он согласился месяцев 10-12 кормить команду из 2-4х челов. Где такого найдешь. А мне семью кормить надо и пойти в такую команду я на маленькую зарплату не пойду.
. А работодатели многие кривые. Подавай им 1С, причем нелицензионку - дешевле. Админа нахер - программист по 1С обязан поддерживать железо (машин 10-30). Копир чинит тоже программист. А ежели разорится на админа на полставки - то этот админ еще тащит телефонию, и хрен знает что - короче, дурдом. Да и зачем программер по 1С - студент за 10 баксов ВСЕ сделает. . А вообще хотел бы я позаниматься такой работой, чтобы порешать более теоретические вопросы и чтобы голова о зарплате не думала (хотя бы относительно). Хотя бы с годик. Мечты-с. Но это так, крик души. |
|||
|
22
А ля 1С очень сыро 2
05.07.01
✎
17:31
|
{ Типообразующие: число, строка, дата, справочник, документ
Кодификация элементов в базе. Необходимо: - вид элемента (справочник, документ...) - порядок элемента (номер справочника в конфигурации...) - внутренний код элемента (пока определяется...) Все это должно быть упаковано в переменную простого типа (integer, string) Идентификатор объекта в базе. X-YYY-ZZZZZZZ X - вид элемента->коды видов агрегатных объектов(справочник, документ и т.д.) YYY-код наименование конкретного агрегатного типа (т.е. Справочник.Валюты) ZZZZZZ - собственно уникальный идентификатор для этого типа в базе. X - размерность 1, вполне хватит для всех видов используемых в базе объектов константы, справочники, перечисления, документы, отчеты, регистры, обработки. Прим. виды расчетов, бух.счета трогать не будем, примем, что программа предназначена для торговли, писать бух-ю смысла не нет. YYY - размерность 3, по 999 видов справочников, документов и пр., хватит с лихвой. ZZZZZZZZ - размерность 8, 99 миллионов элементов наверно хватит??? По паре X-YYY можно получить конфигурацию конкретного элемента - вид, наименование, длина кода, подчиненность, количество уровней, количество и наименование реквизитов и т.д., т.е. можно обратиться к метаданным. Еще можно получить наименования таблиц, поля, в которых хранятся реквизиты. Фактически, база состоит из двух частей: -описание конфигурации состоит из таблиц определенной фиксированной структуры -сами данные хранятся в таблицах, структура которых определена в описании конфигурации. Нужны методы для доступа к обеим частям. Вторую часть можно слизать с 1С. (Объекты справочники, документы и т.д.) Первую часть полностью не найдешь, есть конечно, в 1С методы работы с метаданными, но их вроде бы не хватает. Идентификатор типа соответсвенно, состоит из X-YYY. Сюда добавляются "Число","Строка","Дата". } |
|||
|
23
2 be continued
05.07.01
✎
17:32
|
type
{ Код вида типа данных для справочника, документа (проще говоря, порядковый номер описания структуры справочника или документа в конфигурации)} TKindCode=integer; // пока integer { Типы данных, хранимые в базе} TDBData = ( DTNumber, DTString, DTDate, DTReference, DTDocument ); { Список типов данных, имеющихся в конфигурации, т.е. справочники, документы} TKindCodeList = class end; { Идентификатор объекта, хранимого в базе } TDBDataID = class private public property DType: TDBData; property DKind: TKindCode; end; { Описание конфигурации} TMetaData = class info:string; developer:string; version:integer; end; { Абстрактный объект содержит методы для работы с ветвью конфигурации } TMetaTree = class public property Count property Items property ItemIndex end; { Для работы с веткой констант } TMetaConstantList = class(TMetaTree) end; { Для работы с веткой справочников } TMetaReferenceList = class(TMetaTree) end; { Для работы с веткой документов } TMetaDocumentList = class(TMetaTree) end; { Для работы с веткой журналов документов } TMetaJournalList = class(TMetaTree) end; { Для работы с веткой перечислений } TMetaEnumList = class(TMetaTree) end; { Для работы с веткой отчетов } TMetaReportList = class(TMetaTree) end; { Для работы с веткой обработок } TMetaMakeList = class(TMetaTree) end; { Для работы с веткой регистров } TMetaRegisterList = class(TMetaTree) end; { Содержит общие данные описания структыры элементов} TMetaElementInfo = class public property ID:string; property Synonim:string; property Comment:string; end; { Описание конфигурации конкретной константы } TMetaConstantInfo = class(TMetaElementInfo) end; { Описание конфигурации справочника } TMetaReferenceInfo = class(TMetaElementInfo) end; { Описание конфигурации документа } TMetaDocumentInfo = class(TMetaElementInfo) end; TRereference = class private function Kind(name:string):string; //Вид(Название) function KindPresent:string; // ПредставлениеВида() function level:integer; // Уровень() procedure SetAttrib(name:string; value:TDBDataID); // Установить атрибут function GetAttrib(name:string):TDBDataID; // Получить атрибут function IsGroup:boolean; // ЭтоГруппа() function BelongsToGroup(elem:TDBDataID):boolean; // ПринадлежитГруппе(Элем) function Selected;boolean; // Выбран() function Choose(msg:string; ListName:string):integer; // Выбрать(Подсказка, ФормаСписка) function KindsForChoise(names:string):string; // ВидвДляВыбора(СписокВидов) function SelectGroup(r:integer):integer; // ВыборГруппы() function CurrentItem:TDBDataID; // ТекущийЭлемент() function FullCode:string; // ПолныйКод() function FullDescr:string; // ПолноеНаименование() function FindItem(value:TDBDataID):integer; // НайтиЗначение(Элемент) function FindByCode(code:???; flag:integer):integer; // НайтиПоКоду(Код,Флаг) function FindByDescr(name:string; r,flag:integer):integer; // НайтиПоНаименованию(Код,Режим,Флаг) function FindByAttribute(name:string; value:TDBDataID; flag:integer):integer; // НайтиПоНаименованию(Код,Режим,Флаг) function SelectItems:integer; // ВыбратьЭлементы(Режим) function SelectItemsByAttribute():integer; function BackwardOrder(r:integer):integer; // ОбратныйПорядок(Режим) function GetItem(r:integer):integer; // ПолучитьЭлемент(Режим) function UseDate(d:tdatetime; r:integer):tdatetime; // ИспользоватьДату(Дата,Режим) function UseOwner(value:TDBDataID; flag:integer):TDBDataID; // ИспользоватьВладельца function UseParent(value:TDBDataID):TDBDataID; // ИспользоватьРодителя function IncludeChildren(r:integer):integer; // ВключатьПодчиненные() procedure OrderByCode; procedure OrderByDescr; procedure OrderByAttribute(name:string); procedure New; procedure NewGroup; function CodePrefix(prefix:string):string; function SetNewCode(prefix:string):string; procedure SetType(name,typeAttr:string; len,prec:integer); procedure Write; procedure Delete(r:integer); function Locking(r:integer):integer; function DeleteMark:integer; procedure ClearDeleteMark; end; |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |