Мои диалоги с Ненавижу 1С об альтернативе 1С.
В том далеком 2007 году хотели написать "убийцу 1С".
Nenavizhu 1s (1/03/07)
привет
Nenavizhu 1s (1/03/07)
прикольный антиспам
Nenavizhu 1s (1/03/07)
я по поводу темы "Мысли о написании альтернативы 1С"
203136830 (1/03/07)
хай
203136830 (1/03/07)
давай напишем
Nenavizhu 1s (1/03/07)
давай
я высказал несколько идей, мой ник на мисте "Ненавижу 1С"
203136830 (1/03/07)
на чем писать будем?
203136830 (1/03/07)
как насчет java, чтобы работало под винды и линухи?
203136830 (1/03/07)
ссори, пока нет интернета
Nenavizhu 1s (1/03/07)
я пишу на делфи, попытки создать типа конфигуратора
203136830 (1/03/07)
меня тоже 1с задолбала
203136830 (1/03/07)
у меня есть идея, как это организовать...
203136830 (1/03/07)
;-)
Nenavizhu 1s (1/03/07)
и как?
203136830 (1/03/07)
а на дельфях можно без переписания кода запустить на линухи?
Nenavizhu 1s (1/03/07)
мне надо будет подучить джаву если на ней, хорошо программирую на делфи и 1С, посредственно на С++ и ПХП
203136830 (1/03/07)
я хочу чтобы это был свободный и кроссплатформенный код
203136830 (1/03/07)
ты что юзаешь в качестве сервера бд?
Nenavizhu 1s (1/03/07)
ну у них есть некий Kilyx кросплатформенный, но не юзал
203136830 (1/03/07)
ты конфу как хранишь? в каком виде?
Nenavizhu 1s (1/03/07)
планируется универсальность, пока Файрберд, но есть класс диалектов СКЛ (1/03/07)
в таблицах самой базы, то есть некие таблицы моих метаданных
203136830 (1/03/07)
правильная мысля...
203136830 (1/03/07)
то бишь конфа, как в навижн, меняется динамически.
Nenavizhu 1s (1/03/07)
да
203136830 (1/03/07)
объект справочник, документ уже написал?
Nenavizhu 1s (1/03/07)
нет, я пока платформу создаю предопределенный класс на уровне платформы будет один, от него все стартуют и наследуют, множ. наследования нет
203136830 (1/03/07)
ну хорошо, от этого объекта наследует справочник, ты пробовал реализовать объект справочника?
203136830 (1/03/07)
то бишь когда я добавляю в метаданные новый справочник, триггер создает таблицу базы данных
Nenavizhu 1s (1/03/07)
нет, я еще и поля класса толком не создал, времени нет, а щас в командировке вообще
203136830 (1/03/07)
когда добавляю реквизит, создает новую колонку
203136830 (1/03/07)
гыгыгы
Nenavizhu 1s (1/03/07)
если класс не абстрактный, то создается
203136830 (1/03/07)
далее - как собираешьс хранить ссылки?
203136830 (1/03/07)
предлагаю такой вариант - если тип известен, то 4 байта целое.
Nenavizhu 1s (1/03/07)
если в абстрактном создашь реквизит, то создастся во всех первых неабстрактных
203136830 (1/03/07)
если тип неизвестен, то 8 байт - 4 байта на номер класса, 4 байта на номер экземпляра
203136830 (1/03/07)
если составной тип, то используются также таблицы для хранения строки, даты, числа, многострочного текста
Nenavizhu 1s (1/03/07)
я тебе позже вышлю некую схему таблиц метаданных
Nenavizhu 1s (1/03/07)
как я вижу
203136830 (1/03/07)
например ссылка 12.14 означает ссылку на таблицу (1/03/07)
вышли, надеюсь это не ГУИД как в 1С?
203136830 (1/03/07)
тут еще вопрос в индексируемости полей...
203136830 (1/03/07)
давай на Java напишем, я ее тоже не знаю, хочетца поизучать
Nenavizhu 1s (1/03/07)
ты вообще в Москве?
Nenavizhu 1s (1/03/07)
я вот в Краснодаре, а сейчас в Изобильный уехал (1/03/07)
джава требует машину
203136830 (1/03/07)
я в москве
203136830 (1/03/07)
ну и фиг с ней с машиной
203136830 (1/03/07)
зато джава больше похожа на си
203136830 (1/03/07)
окей, вышли мне свое видение метаданных, я посмотрю
Nenavizhu 1s (1/03/07)
ок, только позже
203136830 (1/03/07)
гут
Nenavizhu 1s (1/03/07)
fixin@mail.ru сюда?
203136830 (1/03/07)
ага..
203136830 (1/03/07)
сюды
Nenavizhu 1s (1/03/07)
уже ушло
203136830 (1/03/07)
получил
203136830 (1/03/07)
изучаю
203136830 (1/03/07)
ахренеть
203136830 (1/03/07)
в таком виде лучше не представлять данные - нихера не понятно. ;-)
203136830 (1/03/07)
а скомпилированный класс как хранить?
Nenavizhu 1s (1/03/07)
как БЛОБ
Nenavizhu 1s (1/03/07)
весь код как БЛОБ
203136830 (1/03/07)
а в память подгружать по мере надобности?
203136830 (1/03/07)
а код писать в чем?
203136830 (1/03/07)
в дельфях?
203136830 (1/03/07)
нужен какой-то язык без явной типизации.
Nenavizhu 1s (1/03/07)
почему без явной?
203136830 (1/03/07)
чтобы можно было писать:
а=Новый Class("")
как ты этот кусок запиешшь при явной типизации?
203136830 (1/03/07)
откуда прога будет знать, что у справочника есть метод выбрать элементы?
203136830 (1/03/07)
кстати, как справочник по ангельски?
Nenavizhu 1s (1/03/07)
я уже передумал так писать, на сервере нада так
FOR SELECT OBJECT FROM [Справочник.Номенклатура] DO
BEGIN
END
Nenavizhu 1s (1/03/07)
> кстати, как справочник по ангельски?
reference
203136830 (1/03/07)
а как ссылка тогда?
203136830 (1/03/07)
FOR SELECT OBJECT FROM [Справочник.Номенклатура] DO
BEGIN
END
это на каком языке?
Nenavizhu 1s (1/03/07)
объектный СКЛ
203136830 (1/03/07)
NRB_TRIGGER - это что?
Nenavizhu 1s (1/03/07)
триггеры классов
203136830 (1/03/07)
ха, ненавижн, у тебя получается два языка - один скл-ный, другой для кодеюнитов?
203136830 (1/03/07)
триггеры классов = методы объектов в терминах 1с?
Nenavizhu 1s (1/03/07)
один язык, просто на сервере операции с формами не допустимы
203136830 (1/03/07)
а какой язык?
203136830 (1/03/07)
что за язык?
Nenavizhu 1s (1/03/07)
триггеры не методы, они нужны для инкапсуляции полей
Nenavizhu 1s (1/03/07)
язык - симбиоз объектного и скуль, как в аксапте
203136830 (1/03/07)
предлагаешь его интерпретировать или как?
Nenavizhu 1s (1/03/07)
на сервере транслируется в обычный скуль, на клиенте в псевдокод
203136830 (1/03/07)
про клиента подробнее
203136830 (1/03/07)
про сервер ты имеешь в виду на такой же язык, что написаны хранимые процедуры?
Nenavizhu 1s (1/03/07)
про сервер да
203136830 (1/03/07)
ты хочешь весь код вынести на сервер?
а как же оле и т.п.?
Nenavizhu 1s (1/03/07)
про клиент, там допустимо такое:
//делаем кнопку недоступной
Button.Enabled:=false;
//а потом зачем то удаляем запись
DELETE FROM MyClass WHERE(1/03/07)
аксапту видел с ее MorphX?
Nenavizhu 1s (1/03/07)
вообще есть безусловно скользкие моменты и нужна документация сначала
203136830 (1/03/07)
хорошо, ты хочешь интерпретировать язык?
Nenavizhu 1s (1/03/07)
ну в общем то да
203136830 (1/03/07)
погодь. занят
Nenavizhu 1s (1/03/07)
а мне думаешь легко, я воще в командировке...
203136830 (1/03/07)
как то все это сложно слишком - код на сервере + код на клиенте?
203136830 (1/03/07)
может делать если надо вставки для кода на сервере на хранимых процедурах
думаешь стоит ориентироваться на то, что сервер умеет выполнять хранимые процедуры или последовательности операторов?
Nenavizhu 1s (1/03/07)
приведенный код возможен, но неправильный с идеологии по хорошему мы должны вызвать на клиенте метод класса, а методы класса это хранимая процедура
Nenavizhu 1s (1/03/07)
в моей идеологии объект это запись и два объекта ссылаться на одну запись не могут, это просто один и тот же объект
Nenavizhu 1s (1/03/07)
запись таблицы класса
Nenavizhu 1s (1/03/07)
а код на клиенте это методы форм класса, но не методы класса!
203136830 (1/03/07)
а не кажется тебе, что в таком случае методы класса будут ограничены синтаксисом СКЛ и поэтому будут более ущербны чем в 1С
203136830 (1/03/07)
тогда весь не серверный код придется выносить в формы и ты получишь 77 а не 80
203136830 (1/03/07)
может лучше сделать методы для выбора таблиц
для перебора
203136830 (1/03/07)
а уже затем создать объект запрос, который будет выполнять сложный запрос?
203136830 (1/03/07)
а все хранимые процедуры использовать только в интерфейсе к конкретной скл-базе?
203136830 (1/03/07)
например:
а=Новый ("")
тогда будет независимо от конкретного движка базы данных.
203136830 (1/03/07)
хотя возможнось юзать хранимые процедуры конкртеной бд можно оставить как бонус
203136830 (1/03/07)
в таком случае можно использовать заранее скомпиленные модули
Nenavizhu 1s (1/03/07)
что есть "не серверный код"? все не серверное делается на клиенте, необязательно в форме, ну скажем общий клиентский модуль
Nenavizhu 1s (1/03/07)
и в чем такое ограничение СКЛ? его можно
ты хочешь переплюнуть 8ку или сделать простую, прозрачную систему?
Nenavizhu 1s (1/03/07)
хочу
Nenavizhu 1s (1/03/07)
хочу прозрачную и переплюнуть по функционалу
203136830 (1/03/07)
тебе придется озадачиваться интертрепатором.
Nenavizhu 1s (1/03/07)
придеца
203136830 (1/03/07)
а если сделать просто, то получишь код на java, он сам будет интерпретироваться машиной
203136830 (1/03/07)
как минимум на огромный кусок меньше работы
203136830 (1/03/07)
а скл-механику можно реализовать через объект СКЛЗапрос
203136830 (1/03/07)
ккак по англицки проведен?
Nenavizhu 1s (1/03/07)
я бы использовал Executed
Nenavizhu 1s (1/03/07)
а вообще есть же англоязычные синонимы в 1С
Nenavizhu 1s (1/03/07)
и не запирайся ты на 1С, не надо копировать так конкретно
203136830 (1/03/07)
Posted, нашел
203136830 (1/03/07)
да лана, можно и 1с повторить.
Nenavizhu 1s (1/03/07)
мне Провести(2/03/07)
привет
203136830 (2/03/07)
хай
203136830 (2/03/07)
слушай, если не писать интертрепатор, как хранить код?
Nenavizhu 1s (2/03/07)
как дела?
203136830 (2/03/07)
я вот над этим запарился счас
203136830 (2/03/07)
Хочу хранить код (2/03/07)
псевдокод
203136830 (2/03/07)
это как?
203136830 (2/03/07)
а как из псевдокода будут видны другие классы?
203136830 (2/03/07)
например а=новый (2/03/07)
аллё!
Nenavizhu 1s (2/03/07)
алле, некогда мне, да не нужен мне
а=новый (2/03/07)
это потому что у тя интертрепатор
203136830 (2/03/07)
Например я описал классы для базовых элемнетов - документов, справочников, регистров накопления и т.д.
Допустим я объявляю новый класс справочника номенклатуры Reference_Goods, наследуемый от класса справочники Reference.
Так вот, конкретные вопросы:
1. Как мне сделать, чтобы при выполнении кода я мог сконструировать экземпляр этого класса, т.е. где должно быть размещено хранилище классов.
2. Можно скомпилировать только этот класс (2/03/07)
1. Как мне сделать, чтобы при выполнении кода я мог сконструировать экземпляр этого класса, т.е. где должно быть размещено хранилище классов.
2. Можно скомпилировать только этот класс (Documents, References, Document_Invoice:Documents, Document_Income:Documents, Reference_Goods:References
Нужно их как-то объединить, чтобы можно было создавать любой из этих классов динамически и обращаться к свойствам и методов этих классов.
То бишь работа приложения начнется с создания класса Application.
Метод Application:OnStart может выглядеть так
S=New Reference_Users; //Создаем класс справочника
//Как вариант можно так
//S=References.Create(2/03/07)
вот поэтому ты вынужден использовать интерпретатор свой а не джава
203136830 (2/03/07)
не понял?
203136830 (2/03/07)
мне на мисте грят, что джава - херня
предлагают Kylyx. Это правда что на Kylyx код можно просто перекомпилить и получишь для линух, а не для виндов?
203136830 (2/03/07)
а там язык пасцаль или си
203136830 (2/03/07)
по моему ты все хочешь сделать слишком сложно.
у меня получается на уровне 1с 77 / Навижн и это совсем неплохо для начала!
Nenavizhu 1s (2/03/07)
паскаль
203136830 (2/03/07)
вот скажи мне - результат скл запроса хранится на сервере, как временная таблица?
203136830 (2/03/07)
а файер фокс много места занимает?
203136830 (2/03/07)
т.е. файер берд
Nenavizhu 1s (2/03/07)
нет не много занимает
203136830 (2/03/07)
и он бесплатный, значитцо?
а админить его сильно надо?
203136830 (2/03/07)
гы, мне осталось решить проблему как хранить код, сегодня то что у тя спрашивал, спрошу на мисте
203136830 (2/03/07)
вот если бы это был VBA или JAVA, там языки нетипизированные и запросто можно писать
x=y.method(2/03/07)
а так неохота писать ядро на Kylyx, а прикладной уровень на нетипизированном языке
203136830 (2/03/07)
неужели в pascal нет типа вроде Variant
203136830 (2/03/07)
бейсика
203136830 (2/03/07)
или объект с методами
203136830 (2/03/07)
т.е. типа - объект с методами
Nenavizhu 1s (2/03/07)
есть
Nenavizhu 1s (2/03/07)
все там есть, но причем здесь паскаль на котором ты платформу пишешь и язык самой платформы?
203136830 (2/03/07)
а как это в паскале называется?
203136830 (2/03/07)
да при том, батенька!
Nenavizhu 1s (2/03/07)
varianr
Nenavizhu 1s (2/03/07)
variant
203136830 (2/03/07)
я пишу класс application
203136830 (2/03/07)
класс documents
203136830 (2/03/07)
класс references
203136830 (2/03/07)
класс справочника номенклатуры будет наследовать от класса references
203136830 (2/03/07)
т.е. пользовательский класс будет наследовать от системного класса
203136830 (2/03/07)
нужна только динамическая компиляция класса (2/03/07)
но хорошо, как прога поймет, что если x - variant, то как она поймет как ей выполнять метод X.PRINT(5/03/07)
Раздельная компиляция классов
Известно, что в Windows можно использовать DLL, т.е. откомпилировать некий набор функций отдельно и сохранить его в виде DLL, чтобы по мере надобности загрузить в память.
В связи с этим вопрос - а можно ли откомпилировать отдельно класс (5/03/07)
Вопрос по IDispatch.
Если у меня в коде встречается вызов
For i=1 to 100
X.Print(5/03/07)
Вопрос по вызовам методов.
Если программист пишет в коде:
Y="Print";
X[Y](5/03/07)
Какой я вижу систему
Код системы состоит из классов, которые могут наследовать друг от друга.
Система - это компилятор, который обеспечивает большее быстродействие кода, чем интерпретатор.
Каждый класс можно компилируется в отдельный модуль. Чтобы откомпилировать модуль, не нужны исходники базовых классов (5/03/07)
Предлагаемая схема
Будем рассматривать только методы (мы хотим динамически добавлять/удалять классы, то должен существовать некоторый массив классов Сlasses.
Каждый класс имеет свойство ClassNo, которое определяет под каким индексом в массиве Classes хранится описание этого класса. Это свойство устанавливается после добавления нового класса в массив классов.
Каждое описание классов содержит массив Methods следующей структуры: название метода, адрес метода. Этот массив служит для быстрого определения адреса метода по его названию. Массив обычно упорядочен по названию метода для ускорения поиска адреса метода.
Каждый класс содержит статический ( Addr=Classes( X: 1
Y: 2
Z: 3
LocalClasses:
B: 2
C: 3
Function X(1
Y: 2
Z: 3
LocalClasses:
A: 1
B: 2
C: 3
Function Z(2
Z: 3
LocalClasses:
A: 1
B: 2
Function Y( Y A::Y
o Z A::NoMethod
2. B
o X B::X
o Y B::NoMethod
o Z A::Z
3. C
o X C::NoMethod
o Y C::Y
o Z C::Z
Понятно, что схему раздельной компиляции классов можно развить и для наследуемых классов, т.е. отдельно компилировать базовый и наследующий от него класс. В таком случае при загрузке наследуемого класса нужно только заменить в виртуальной таблице методов ссылку на метод родителя реальным адресом этого родителя.
Nenavizhu 1s (7/03/07)
а ты пока это прочти http://www.forum.mista.ru/topic.php?id=258915
203136830 (7/03/07)
текст
Nenavizhu 1s (7/03/07)
Решил написать платформу "а-ля 1С", но не толстый клиент и компилятор как предлагает Гений. Среда будет объектно-ориентированная. Язык - симбиоз процедурного (вместо нее технология триггеров (
--выводим суммы продаж по организациям
SELECT Persone.Department.Organization as Org, SUM(
UPDATE self
SET ....
3. Вызов метода для нескольких объектов:
EXEC MyMethod(7/03/07)
а кто будет думать, где выполнять код - програмист?
203136830 (7/03/07)
не вззззлетит
203136830 (7/03/07)
хотя может и взлетит, но неудобно
203136830 (7/03/07)
если бы код сам определял где ему выполняться.
Nenavizhu 1s (7/03/07)
методы класса на серваке, методы форм на клиенте
Nenavizhu 1s (7/03/07)
ну как будет нет прочтешь все остальное, хотя там как обычно флуд
203136830 (7/03/07)
гы, значит все, что не влезет в скл-синтаксис, выносить в формы????
203136830 (7/03/07)
нах
Nenavizhu 1s (7/03/07)
я не вижу такого, что не влезет в скуль синтаксис, но должно делаться на сервере
203136830 (7/03/07)
оки почитаю
203136830 (7/03/07)
задай этот вопрос юзверям - все ли можно сделать на скл
Nenavizhu 1s (7/03/07)
юзверям пох где, лишь бы правильно и быстро
203136830 (7/03/07)
пойми, с клиента можно так же быстро управлять данными на скл сервере
203136830 (7/03/07)
если не качать их на клиента
203136830 (7/03/07)
= юзверям пох где, лишь бы правильно и быстро
о программистах речь и о функциональности
Nenavizhu 1s (7/03/07)
чтобы управлять надо знать чем управлять, а данные на серваке
203136830 (7/03/07)
приведи хоть один пример
Nenavizhu 1s (7/03/07)
думаю можно все, тем более диалекты скулей ща оч. развиты
Nenavizhu 1s (7/03/07)
пример чего?
203136830 (7/03/07)
когда клиент не сможет управлять
Nenavizhu 1s (7/03/07)
тебе придется качать данные на клиент, чтоб оперировать ими
203136830 (7/03/07)
сделай обертку класво
Nenavizhu 1s (7/03/07)
не понял тебя
203136830 (9/03/07)
в xslt сечешь?
Nenavizhu 1s (9/03/07)
неа
Nenavizhu 1s (16/03/07)
привет, безработным
Journal information