powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Есть тут кто из архитекторов 1С (из самой фирмы) ?
25 сообщений из 72, страница 1 из 3
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35556393
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть предложение.

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

Примерно представляя себе как из метаданных 1С генерится структура в MSSQL, могу предложить свой движок такой генерации. Движок выполен средствами самого T-SQL. Представляет собой набор хранимых процедур, представляющих собой API для описания метаданных и генерации структуры, а также для ображения клиентского приложения к базе данных.

Пример описания нового класса в системе выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
6.
exec Class 'Measure', 'Object', 'Измерение'
  exec Field 'BaseUnit', 'Unit', 'Основная ед. изм.', 'null'
  exec SubTable 'RecalcFactors', 'Коэффициенты пересчёта'
    exec Field 'FromMeasure', 'Measure', 'Из измерения', 'Key'
    exec Field 'Factor', 'Decimal', 'Коэффициент'
exec Compile 
go

Каждая строка - это вызов хранимой процедуры с параметры для описания объекта метаданных

Первая строка - декларация класса
первый параметр - название класса
второй параметр - родительский класс
третий параметр - пользовательское наименование класса

Вторая строка - декларация поля в классе
первый параметр - название поля
второй параметр - тип поля (как простой, так и объектный)
третий параметр - пользовательское наименования поля
четвертый параметр - перечень дополнительных атрибутов поля

Третья строка - декларация подтаблицы класса (многострочной части)
первый параметр - название подтаблицы
второй параметр - пользовательское наименование подтаблицы

Четвертая и пятая строки - декларация полей подтаблицы

Шестая строка запускает механизм создания таблиц, вьюх, триггеров и процедур

Скорость работы моих приложений говорит о том, что в использование данного механизма в 1С приведёт к революции в ERP системах. Скорость 1С вырастет на несколько порядков.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35556491
Reder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickЕсть предложение.
Примерно представляя себе как из метаданных 1С генерится структура в MSSQL, могу предложить свой движок такой генерации. Движок выполен средствами самого T-SQL. Представляет собой набор хранимых процедур, представляющих собой API для описания метаданных и генерации структуры, а также для ображения клиентского приложения к базе данных.

А для генерации файлового варианта тоже sql ставить надо будет?
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35556508
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для dbf я не предлагаю. Пусть там остаётся как есть. Хотя при желании тоже можно сделать.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35556976
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickСкорость работы моих приложений говорит о том, что в использование данного механизма в 1С приведёт к революции в ERP системах. Скорость 1С вырастет на несколько порядков.Приведите пожалуйста результаты тестов.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35557055
Reder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осмелюсь еще спросить для какой версии автор предлагает свой вариант? Ибо для 7.7 бесмысленно, она изначально расчитана на файловый вариант и SQL используется только как хранилище, а вот насчет 8-й версии есть сомнения в эффективности решения автора, потом у как в 8-й версии реализована трехзвенная архитектура и переносить всю логику на SQL сервер вряд ли имеет смысл.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35557224
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю как сравнивать оба варианта, да и что собственно сравнивать?
Но когда в одном месте моей системы логика отрабатывала 1 сек, то пользователи стали возмущаться, слишком долго ждать. Да и кнопку "Выполнить" пришлось блокировать от двойного щелчка, успевает дважды отработать.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35557271
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется есть небольшое недопонимание насчёт места моего движка в системе 1С.

Логика в 1С пишется на встроенном языке, транслятор с встроенного языка используя метаданные переводит это на обращения к базе. Так вот эти обращения выполнены не очень эффективно.
Потомучто, неверно смаппировны объекты на структуры.
У меня маппирование идёт один к одному. Каждый объект это строка вьюшки. Вьюшка имеет триггер для изменения данных в таблицах, из которых она состоит. А точнее вьюшка состоит из таблиц всех классов, от которых идет наследование. Имеется ввиду своя таблица, таблица родителя, прародителя и т.д.
Так вот, вместо имеющегося в 1С маппирования я предлагаю свой движок. А логику на T-SQL переносить не нужно, хотя в перспективе и это возможно и даже нужно.
Поэтому и 1С 7.7 и 1С 8.0 одинаково могут использовать мой движок. Ограничение только на dbf, т.к. логика движка у меня зашита в T-SQL, но и тут есть выход.

Эффективность в трехзвенке уже подтверждена на практике.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35557367
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickНе знаю как сравнивать оба варианта, да и что собственно сравнивать?
Но когда в одном месте моей системы логика отрабатывала 1 сек, то пользователи стали возмущаться, слишком долго ждать. Да и кнопку "Выполнить" пришлось блокировать от двойного щелчка, успевает дважды отработать.То вы пишите что у вас быстрее на несколько порядков - то пишите что не знаете как сравнить. Определитесь или первое - но тогда откуда цифры, или второе - но тогда первое ложь.

Приведите примеры логики в 1с и у вас.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35557410
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня быстрее на несколько порядков за счёт нескольких вещей:

1. Правильное (оптимальное) маппирование структуры
2. Логика в зависимости от эффективности либо на АппСервере либо в хранимых процедурах
3. Кеширование изменяемых данных до сохранения изменений

Для 1С я предлагаю пока что только оптимальное маппирование, то есть извлечение данных объекта одним запросом для объекта и еще одним для каждой подтаблицы, так же сохранение данных тоже будет эффективнее. Один вызов на объект и по одному на каждую строку подтаблицыю. Какие для этого использовать конструкции SQL мой движок предложит сам.

Плюс еще выигрыш можно получить если обрабатывать списки данных с помощью 1С++.
Например, у меня документ представлен двумя вьюшками:
1. VDocument с полями документа, 1 запись, один объект
2. Многострочная часть документа VDocument_Things

Написать в 1С++ запрос обрабатывающий эти данные значительно проще и эффективнее.

Кто не пытался разобравшись в хранилище 1С создать вьюшки для упрощения работы?
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35557506
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример кода метода в T-SQL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
create procedure OrCondition_Check
  @OID OID
as
  set nocount on
  declare @ConditionOID OID,
          @Result       int
          
  declare Walker cursor local fast_forward for
    select ConditionOID
      from TGroupCondition_List
      where OID = @OID
      
  open Walker
    fetch next from Walker into @ConditionOID
    while @@fetch_status =  0 
    begin
      exec @Result = Condition_Check @ConditionOID
      if @Result =  0  return  0 
      fetch next from Walker into @ConditionOID
    end
  close Walker
  deallocate Walker
  
  return  1 
go

OrCondition - класс
Check - его метод
@OID - идентификатор объекта, в ООП языках он скрыт и представлен в виде предопределенной переменной Self или This или Me

Condition_Check - это виртуальный метод абстрактного класса Condition

Пример кода в Сервере Приложений

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
        if ((bool)GetParam("reserve"))
        {
          o = (Axsel.Kernel.Object)GetParam("Car");
          Axsel.Kernel.Object odoc = FindDoc(o);
          DBODocument doc = null;
          if (odoc == null)
          {
            doc = (DBODocument)Manager.DBObject("CarRequest");
            doc.Open("ClassInfo");
            doc.Open("Create");
            doc["Name"] = "Продажа автомобиля " + o.Name;
            doc["Agent"] = DataSet.Tables["Common"].Rows[ 0 ]["Manager"];
            doc["Counter"] = DataSet.Tables["Common"].Rows[ 0 ]["Counter"];
            doc["Manager"] = GetParam("Manager");
            doc["Currency"] = DataSet.Tables["Common"].Rows[ 0 ]["Currency"];

            foreach (DataRow r in DataSet.Tables["Sale"].Rows)
            {
              if (((Axsel.Kernel.Object)r["Service"]).OID == o.OID)
              {
                DBObject m = (DBObject)Manager.DBObject("Measure");
                m.SetParam("Ext", "Quantity");
                m.Open("Find");

                DataRow i = doc.DataSet.Tables["Things"].NewRow();
                i["Thing"] = o;
                i["Quantity"] =  1 ;
                i["Price"] = r["Price"] == DBNull.Value ?  0  : r["Price"];
                i["Measure"] = m.Object;
                decimal sum = Convert.ToDecimal(r["Price"] == DBNull.Value ?  0  : r["Price"]);
                doc.DataSet.Tables["Things"].Rows.Add(i);
                break;
              }
            }

            doc.Save("Create");
            AddDocument(doc.Object, "Reserve");
          }
          else
          {
            doc = (DBODocument)odoc.CreateDBObject(Manager);
          }

          doc.Transact();
        }
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35558934
Фотография Есть вопрос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в твоем фреймворке реализовано разделение прав доступа? Есть ли RLS?
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35559012
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick3. Кеширование изменяемых данных до сохранения измененийА разве это не транзакция? А во вторых что делать при одновременном (почти) изменение данных разными пользователями?

Скорость это хорошо - но она не везде нужна. Написал отчет остатки - 70% времени отчета уходит на один метод присоединить()....

Давайте для примера - в 1с создайте справочник с 1 наименованием в количестве 1млн штук. И измените имя на любое другое у всех элементов. Будет интересно сравнить время...
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35559133
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разделение прав реализовано двумя матрицами. Одна для объектов, вторая для классов

Первая матрица Объект, Действие, Роль/Пользователь
Вторая матрица Класс, Действие, Роль/Пользователь

1. По-умолчанию прав нет
2. Запретительных прав нет
3. Любой объект наследует права своего класса
4. Роли/Пользователи выстроены иерархически
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35559167
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1С

Нет, это не транзакция. Для какого-либо действия с объектом из базы выбираются данные в отсоединенный датасет. Эти данные меняются на клиенте или на сервере приложений. И до момента вызова сохранения не открываются никакие транзакции.

Видел я варианты когда выбираются на форму данные с сервера, при этом рекордсет не отсоединяется, и сразу же открывается транзакция на сервере. Ужас!!!

Для блокирования изменений одного объекта разными пользователями используется логическая блокировка. Да и надобность такая возникает крайне редко.

Насчёт справочника с одним наименованием. Это вообще не показатель. EAV тоже в таком случае будет на высоте. Но чаще всего используются именно таблицы, где поля объекта в виде столбцов. Тут EAV также как и 1С пасует. А у меня с этим порядок.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35562788
kiruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чем фреймворк отличается от "стандартной" подмены объектов 1С прямыми запросами 1С++ ?

Клиентское приложение представляет собой самостоятельный -exe со своими формами и интерфейсом?
Или это 1Сv7?
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35562916
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное тем, что все реляционные методы являются хранимыми процедурами, в которых объекты представлены в виде вьюх.

Самостоятельный ехе с формами и сервер приложений, точнее три сервера приложений.
Один локальный (просто dll, выполняющаяся в пространстве клиентского приложения).
Второй основан на вебсервисах
Третий Remoting

Клиент в зависимости от настроек использует один из них либо самостоятельно переключается на любой из двух последних.

Первый для отладки используем.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35563205
kiruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old NickНаверное тем, что все реляционные методы являются хранимыми процедурами, в которых объекты представлены в виде вьюх.

Самостоятельный ехе с формами и сервер приложений, точнее три сервера приложений.
Один локальный (просто dll, выполняющаяся в пространстве клиентского приложения).
Второй основан на вебсервисах
Третий Remoting

Клиент в зависимости от настроек использует один из них либо самостоятельно переключается на любой из двух последних.

Первый для отладки используем.

Где можно взглянуть подробнее?
Скриншоты?
Привязка вручную к конкретной конфигурации?
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35563214
kiruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю это продолжение http://dbobjects.narod.ru/ ?
Какова совместимость с конфигурациями 1С?
Скриншоты и что то более подробное чем на указанной странице есть ?
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35564696
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описания у меня нигде нет. Были попытки сделать сайт с рекламой, но забросил я это дело.
Могу показать вживую на ноутбуке. 2 варианта: двухзвенка Delphi 7 и MSSQL и трехзвенка .NET и MSSQL
Нахожусь в Петербурге.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35564741
kiruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old NickОписания у меня нигде нет. Были попытки сделать сайт с рекламой, но забросил я это дело.
Могу показать вживую на ноутбуке. 2 варианта: двухзвенка Delphi 7 и MSSQL и трехзвенка .NET и MSSQL
Нахожусь в Петербурге.

Еще остался вопрос совместимости с конфигурациями 1С.
Я так понял - есть возможность соотнести таблицы - а видимо код модулей нужно писать вручную?
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35564941
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакой совместимости нет. У меня иерархия классов отличается. Кроме того, насколько я знаю, в 1С нет наследования сущностей. Поправьте меня если я не прав. Хотя повторить набор классов какой-либо конфигурации 1С вполне можно будет, но код (методы) действительно придется писать вручную, но смысла в этом нет.

На данный момент у меня есть складской движок. То есть складской учёт можно сделать.

Смысл есть сделать компилятор в T-SQL не из моего языка, а из языка 1С, тогда можно будет получить структуру БД в ОО стиле и перевести любую конфигурацию 1С.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35565011
kiruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old NickНикакой совместимости нет. У меня иерархия классов отличается. Кроме того, насколько я знаю, в 1С нет наследования сущностей. Поправьте меня если я не прав. Хотя повторить набор классов какой-либо конфигурации 1С вполне можно будет, но код (методы) действительно придется писать вручную, но смысла в этом нет.

На данный момент у меня есть складской движок. То есть складской учёт можно сделать.

Смысл есть сделать компилятор в T-SQL не из моего языка, а из языка 1С, тогда можно будет получить структуру БД в ОО стиле и перевести любую конфигурацию 1С.

Если нет совместимости - тогда вообще не понимаю причем здесь 1С ....
У Вас - самостоятельное решение для торговли.

Даже если Ваше решение очень хорошее - альтернативных решений на рынке достаточно много,
не менее нескольких десятков. К 1С они не имеют отношения (в технологическом плане)
и программистам 1С неинтересны.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35565112
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предлагаю архитекторам 1С поменять движок. Для тех кто использует 1С для создания кофигураций ничего не изменится, они также и будут продолжать писать на языке 1С, зато компилироваться это будет в T-SQL и выполняться на стороне СУБД.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35565120
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вобщем-то достучался до руководства 1С и сейчас пишу коммерческое предложение Нуралиеву Сергею. Если он одобрит, то в скором времени выйдет версия 1С 9.0
Так что продолжать дискуссию о полезности моего фреймворка здесь не имеет смысла.
...
Рейтинг: 0 / 0
Есть тут кто из архитекторов 1С (из самой фирмы) ?
    #35565153
kiruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old NickЯ вобщем-то достучался до руководства 1С и сейчас пишу коммерческое предложение Нуралиеву Сергею. Если он одобрит, то в скором времени выйдет версия 1С 9.0
Так что продолжать дискуссию о полезности моего фреймворка здесь не имеет смысла.

Удачи )
...
Рейтинг: 0 / 0
25 сообщений из 72, страница 1 из 3
Форумы / [игнор отключен] [закрыт для гостей] / Есть тут кто из архитекторов 1С (из самой фирмы) ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]