Имя: Пароль:
1C
 
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;
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.