Супер! exe и dll получаются по 3 килобайта вообще!!! Отличный старт к написанию маленьких и мобильных вирусов для юных хаЦкеров! Причём ещё и из под 1С... ;-)
Только ошибка при создании библиотеки. Слеш в другую сторону нужно делать.
>csc.exe \target:library myprogram.cs
Должно быть так: csc.exe /target:library myprogram.cs
(5) jhfrek, а так же другие.
Есть еще более простой способ компиляции. на файле .CS правой кнопкой мыши и Открыть с помощью ;) А если и галку поставить, то можно компиляцию в будущем производить двойным кликом по исходнику
Знакомство со всем новым хорошо начинать под чьим-то доминирующим руководством. Мне с quick start помогла моя замечательная коллега, которая знакома с Microsoft Visual C# достаточно хорошо. Пара часов приватного программирования – и я уже опытный.
Вот только не в области С#. ;)
Поэтому, я не буду строго придерживаться установленных определений, я даже не гарантирую, что мое изложение материала правильное.
Это объектно-ориентированный язык, а значит, объект и станет главным понятием при программировании на нем. Иными словами, вся программа – это определение какого-то объекта, в состав которого входят другие объекты, в состав которых входят третьи, и т.д.
Мдя... А я то по глупости считал, что ООП зиждиться на Полиморфизме, Инкапсуляции и Наследовании, и крутится все вокруг классов. Вот ведь ду..ак. 1С то в полной мере ООП, а ведь мужики то не знают..
Чем отличается объект от переменной, думаю, объяснять не нужно.
Угу. Наливай, да пей. То есть ничем.
Когда мы определяем объект, то привязываем к «переменной» еще и методы, как с данными, что в ней хранятся, работать.
Упс... А операционные системы об этом не знают. И продолжают использовать методы как глобальные.
Мы будем использовать вывод информации в консоль (т.е., не в windows-окно).
А уже эта консоль будет выводить в окно которое мы увидим.
Объект Console, связанный с таким выводом на экран, находится в библиотеках .Net в пространстве имен System.
Это класс.. В Java объект в С# класс...
Запускаем в режиме эмуляции DOS
Это мне на Вынь 7 качать DOSBOX надо? Режима такого уже больше десяти лет нет.
Практическое применение com-технологий одинэсник может найти, например, в защите своих авторских прав. Как в прошлом примере мы передавали на вход нашего метода «Summa» числа, так я могу, например, передать объект «Запрос», инициализировать и выполнить его внутри dll, потом стереть текст запроса и возвратить только результат.
Для профи получим легко вскрываемую защиту, а пользователи сами почему-то не лазят. Зовут профи.
На месте разрабов 1С я бы версию 1С:Предприятие 9 сделал ни как отдельную платформу, а как библиотеку классов для Microsoft Visual C#. Не 1С, так кто-то другой однажды такое сделает, и у 1С определенно настанут сложные времена…
А я уж испугался, что этой весной никто этого не предложит. Сколько помню себя как разработчика на этой платформе, столько это и предлагают Нуралиеву, а он все о каком-то предметно ориентированном программировании лапочет. Дурак - наверно.
(9) Ну наконец-то! Наконец-то хто-то появился и написал, как все должно быть правильно и корректно. Что ж, грустно приготовился все переделывать. Обложился вумными книгами в 100500 страниц... Пожалуй, начну с того в новой редакции этой статьи, что с# нельзя назвать чистым ООП, потому что он не поддерживает множественное наследование. Хотя #-кодеры (читать "шарп", а не "быдло") с этим конечно не согласятся. Они уверены, что интерфейсы решают все. Оставим это заблуждение на их совести и напомним о моих любимых template, без которых по мне, так и плечу не раззудиться в волю... А где память??? Дайте мне работать с памятью!!! Дайте alloc! Дайте
for( ; *src!='\0'; *(dest++)=*(src++)); !!!
И не доверял я никогда разным мусоросборщикам, начиная еще с prolog. Вообще, c# это чистая популяризация, как 1С. тому, кто привык к с++, это становится ясно, буквально, с первых минут, когда тебе говорят, что -> больше нет!
Ну наконец-то! Наконец-то хто-то появился и написал, как все должно быть правильно и корректно.
Хто-то читал, а не смотрел на красивые картинки и очаровательную девушку.
Тут не могу не сделать реверанс автору. У статьи блестящее оформление и что особенно радует не забыт источник вдохновения.
Пожалуй, начну с того в новой редакции этой статьи, что с# нельзя назвать чистым ООП, потому что он не поддерживает множественное наследование. Хотя #-кодеры (читать "шарп", а не "быдло") с этим конечно не согласятся. Они уверены, что интерфейсы решают все. Оставим это заблуждение на их совести и напомним о моих любимых template, без которых по мне, так и плечу не раззудиться в волю... А где память??? Дайте мне работать с памятью!!! Дайте alloc! Дайте
1. Множественное наследование, кроме С++ мало кто поддерживает.
2. Шаблоны начиная с версии 2.0 в .Net поддерживаются в полном объеме.
3. Чем тебе new не alloc? Даже сам Страуструп рекомендует использовать именно его?
for( ; *src!='\0'; *(dest++)=*(src++)); !!!
strcpy? Я угадал?
И не доверял я никогда разным мусоросборщикам, начиная еще с prolog.
Ты еще про концептуальную ошибку пролога вспомни.
Вообще, c# это чистая популяризация, как 1С. тому, кто привык к с++, это становится ясно, буквально, с первых минут, когда тебе говорят, что -> больше нет!
Да. Задел за живое. Я после изучения С# не смог писать на С++. На Си пожалуйста, а С++... Грустно.
СОП забыл. Сейчас сервис ориентированное программирование в моде :D
А вообще, лучше про ООП почитать
Лучше читать. Тут ты прав.
(12) Oleg_nsk, Это значит, что все открытые члены будут видны для ком (не требуется описание интерфейса). Что не рекомендуется, так как видимость может быть впоследствии изменена и эта ошибка не сразу себя проявит.
(14) blindcat2006, Везучий ты. Я осенью писал на пяти языках. Сейчас, слава богу осталось четыре. PHP и JavaScript отпали так как перешли на оффлайн версию.
(17)
// 2. Шаблоны начиная с версии 2.0 в .Net поддерживаются в полном объеме.
Не верю!
template<class T>
class A
{
private T obj;
public T &operator =(T &src) ( return obj=src; }
}
- проглотит?
// strcpy? Я угадал?
Не совсем. Для strcpy нужно еще в конце *src='\0'; сделать ))
Суть-то не в этом. А если я хочу строку не байтов, а каких-то объектов копировать, у которых предварительно переопределил оператор "="? С# сразу в пролете оказывается. Говоря про alloc и указатели, я имел в виду вот такие выкрутасы (в продолжение примера с template):
Без этого, на мой взгляд, С - не С. Потому и назвал популяризацией. Когда такие вот вещи из языка исключают, значит, изначально предполагают охватить более широкую аудиторию пользователей. Жаль, конечно.
(18) Такой да. А такой:
template<class T>
class A
{
private T obj;
public T &operator +(T &src, T &src) { return src+src1; }
}
нет. Тут я некорректен.
Универсальные шаблоны языка C# не обеспечивают такую же гибкость, как шаблоны языка C++. Например, невозможно вызвать арифметические операторы в универсальном классе языка C#, хотя можно вызвать операторы, определенные пользователем.
Язык C# не позволяет использовать не являющиеся типами параметры шаблона, например template C<int i> {}.
Язык C# не поддерживает явную специализацию, т.е. индивидуальную реализацию шаблона для конкретного типа.
Язык C# не поддерживает частичную специализацию: индивидуальную реализацию для подмножества аргументов типа.
Язык C# не позволяет использовать параметр типа в качестве базового класса для универсального типа.
Язык C# не позволяет параметрам типов иметь типы по умолчанию.
В языке C# параметр универсального типа не может сам быть универсального типа, хотя сконструированные типы могут использоваться как универсальные. Язык C++ не допускает использование параметров шаблона.
Язык C++ позволяет использование кода, который может быть допустимым не для всех параметров типа в шаблоне и который затем проверяется для конкретного типа, используемого в качестве параметра типа. В языке C# код класса должен быть написан таким образом, чтобы он работал с любым типом, удовлетворяющим требования существующих ограничений. Например, в языке C++ можно написать функцию, которая использует арифметические операторы + и - применительно к объектам параметра типа, что приведет к ошибке во время создания экземпляра шаблона с типом, который не поддерживает эти операторы. Язык C# не позволяет это делать. Допускаются только те языковые конструкции, которые могут быть выведены из ограничений.
(9) awk, - Слова умные и м.б. правильные (сам на Paskal и С++ писал лет 20 назад, теперь подзабыл все :( )
НО ! - это форум про (для) 1С в первую очередь - и мне как 15 лет кроме конфигуратора ни в чем не кодившему, а для написания сторонних объектов приглашащего программиста* C/Delphi/Java - статья Открытие.
Думаю что таких тут немало.
++ - одназначнА
... но больше всего порадовало про классы и ООП. Т.е. абзац про инкапсулирование и полиморфизм в рамках quick start был бы ценным настолько, что после него 1С-ник, не видевший ничего, кроме конфигуратора, перешел бы на качественно новый уровень бытия?! Эх, балин, упустил я...
И если в c# "это класс, в java - объект", то в с# - это не ООП, а КОП :D А js - ФОП :D)) А вообще, лучше про ООП почитать что-то еще, кроме институтских конспектов. Как тебе такое определение: "объект - это нечто, что обладает идентичностью, состоянием, поведением"?
Спасибо. Всё доступно написано для тех кого в универе обучали кодить на Delphi! А этот кусок кода при создании dll что означает: [ClassInterface(ClassInterfaceType.AutoDual)] ?
Делать защиту на .Net - все равно что не делать ее вообще, если не использовать обфускацию - получение рабочих исходников не займет более получаса... Но статья все равно получилась хорошая, взял на вооружение для обучения начинающих.
Как в прошлом примере мы передавали на вход нашего метода «Summa» числа, так я могу, например, передать объект «Запрос», инициализировать и выполнить его внутри dll, потом стереть текст запроса и возвратить только результат.
Можно по-подробнее, разве мы сможем внутри DLL работать с объектами 1С? Как мы выполним запрос, ведь обработкой "запроса" занимается платформа 1С, а не наша DLL?
Автору плюс за статью. Правда, не поддерживаю разработку будущей девятки на .Net :). Да и дискуссия интересная развернулась. Понятно, что Си и С++ мощнее в смысле более тонкого управления ресурсами и скорости. Но сейчас время программиста оценивается намного больше, чем машинное время. Поэтому и языки проектируется для более быстрой разработки и, по возможности, кросс-платформенными.
Однако использовать данную технологию для защиты разработок можно только (одновременно):
1) используя обфускацию
2) вынося из 1С уникальные алгоритмы целиком. А сделать это не получится для достаточно сложных алгоритмов, кроме оперирующих входными параметрами только простых типов.
Предложенная автором схема защиты, ИМХО, фактически является защитой для новичков, уровень пароля на обработку.
Или даже ниже. Однако в силу своей не распространенности может быть чуть более стойкой - ломателю трудно будет сформулировать запрос яндексу.
Более стойким вариантом будет являться подобный механизм, в случае если защищен будет не текст запроса, а алгоритм его формирования. Т.е. на входе параметры, а на выходе не результат запроса, а его текст.
(33) marsohod, Представляю себе вариант LINQ от 1С
МассивЭлементовНоменклатуры = Из Номенклатура В Справочник.Номенклатура
Где Номенклатура.ЭтоГруппа = ЛОЖЬ
Выбрать Новый Структура("Код, Номенклатура", Номенклатура.Код, Номенклатура.Наименование);
Спасибо за статью.Мне,как человеку, уже давно не программировавшему ни на чем,кроме 1с, довольно полезно вспомнить,как оно вообще бывает.
Запускаем в режиме эмуляции DOS
Только это место осталось мне непонятным. После компиляции получаем вроде exe?Который спокойно запускается на вин7.
Практическое применение com-технологий одинэсник может найти, например, в защите своих авторских прав. Как в прошлом примере мы передавали на вход нашего метода «Summa» числа, так я могу, например, передать объект «Запрос», инициализировать и выполнить его внутри dll, потом стереть текст запроса и возвратить только результат.
Это вот тоже не очень понятным осталось. Передать объект запрос,т.е. текст сформировать внутри dll?
(36)
Про DOS - я немного ступил. У меня стоит readline, т.е. окно выполнения не закрывается. А про защиту - это выложу как-нибудь то, что используем. Правда, оно не на .Net ;) А в целом - именно так: текст пользователю не виден, он формируется внутри dll, запрос выполняется, текст убирается из объекта "Запрос".
(40) я согласен. тебя никто за язык не тянул.
и эта...
из уважения к тебе - предлагаю 5т
и чтоб упростить эксперимент, если хочешь, могу сразу выдать два метода взлома (в личку)
Хотя, глянь лучше вот эту: http://infostart.ru/public/78661/ А то первую особо и не пытались защитить, там запросы в пару строк, их и без взлома угадать легко :)
(46) отправил запрос на ключ активации,
а как оказалось, он не нужен для первых 50ти запусков.
текст запроса
"f_6329536680097868":
ВЫБРАТЬ
Таб.Продукция КАК Номенклатура,
ВЫРАЗИТЬ(Таб.Цена * Таб.Количество КАК ЧИСЛО(15, 2)) КАК Сумма
ПОМЕСТИТЬ Компоненты
ИЗ
&ТабКомпонентов КАК Таб
;
...
(49) А, не посмотрел. Впечатлен. Тогда шли номер яндекса. И не говори, что это просто дамп памяти. Это не честно, ведь дамп легко забить нулями, и тогда никакого взлома не будет.
(51) Я как-то в авторитеты не верю. И нужно же, чтобы кто-то соответствующего уровня протестировал. Под 7.7 также ведь доводили, пока ни кто не вскрыл, также и эту потихоньку до ума доведем, тогда и выложу.
Э, нет, технологию взлома ты мне уже обещал в личку написать. А вот решение для защиты - рассмотрим. Может, действительно имеет смысл использовать то, над чем кто-то уже давно трудится, чем делать все самим... Вечером лови перевод ;)
(54) Правда обещал? где? когда? я же только думал об этом, вроде не постил...
Ты не рассматривай, пользуйся случаем пока я добрый :)
почитай последний пост: http://forum.guardant.ru/topic/55/
(55) правильно ли я предполагаю(?), что "декомпилятор 1С" разработали те, кто разрабатывал "компилятор 1С" и саму "платформу 1С", то есть бывшие сотрудники-программисты фирмы "1С"?
и что защиту "Интелис" может обойти разработчик этой самой защиты "Интелис"? и что когда-нибудь по сети будет бродить "декомпилятор Интелис"?
(62)Все в корне не верно :)
1) Декомпиляторов есть несколько. У меня есть три - два скачено, один сам сделал. Я свой никому не раздаю.
2) Лично я в 1С не работал
3) Защиту Интелис (именно Интелис: Защита конфигураций в.1) - лично я обойти могу - т.к. это аналог защиты от Катран.
4) Защита WiseAdvice: Защита конфигураций в.2 - методики декомпиляции у меня нет, и я думаю, что в обозримом будущем не предвидится - ни у меня, ни у кого либо другого.
За что не люблю С - подобные языки. Ну вот написано :
[ClassInterface(ClassInterfaceType.AutoDual)]
Что это? Зачем ? Сколько процентов программеров понимают, что они написали и зачем ? Это не умственная деятельность, а обезьянская. А в Делфи понятно все хоть более-менее.
(59) Тут просто все сложнее, чем уровень quick start. В двух словах, любая клиентская программа (com-клиент) взаимодействует с com-объектом (сервером) через его интерфейс. ClassInterface определяет, каким образом com-клиенты будут видеть наш класс. При этом, интерфейс com-сервера может быть прокеширован в системе, что может вызвать ошибку при обращении к com-объекту, если его интерфейс был впоследствии изменен.
ClassInterfaceType.None - говорит, что интерфейс задается нами явно, и отключена его автоматическая генерация
ClassInterfaceType.AutoDispath - включает режим позднего связывания. Вроде этот вариант используется по умолчанию.
ClassInterfaceType.AutoDual - включает ранее и позднее связывание. Полезен при разработке и тестировании, а также тогда, когда не предполагается, что класс будет изменяться. Он единственный предоставляет в экспортируемую библиотеку описание интефейса класса, что ускоряет работу за счет кеширования (оно и вызывает ошибки, если вдруг класс изменился)
(64) fixin, (65) Трактор, Ну то что можно не зная классов быть высококлассным специалистом - это я согласен. (серьезно) Например один мой знакомый механик, очень классно ремонтирует машины и чихал он на классы, да и на программирование тоже. (шутка)
Но:
Думаю что мало кто тут будет писать сложные проекты на С#.
Это высказывание муравья который ползает по плоскости и отрицает третье измерение. Прошу прощенья, если обижу. Если не верите, то взгляните на MonoDevelop - написано на C#. Eclipse - Java. И если вы не умете есть палочками, то не надо кричать, что Японцы, Китайцы и т.д. неполноценны.
(73) сложные программы коллективом программистов можно хоть на ассемблере писать. Я имел ввиду, что С# - это не RAD, в отличии от 1с. Попробуйте посчитать, во что выльется сопровождение проектика с базой данных и можно ли это потянуть в одиночку, причем если клиентов не один, а 10, то бишь писать ручками патчи с апдейтами - то что делает 1с автоматом, это несладко....
(74) fixin,
1. Да, C# не RAD. Зато VS и т.п. Еще какие RAD.
2. RAD M$ превосходит RAD от 1С в разы. Попробуй хотя бы Professional версии. Я уже молчу про Ultimate.
3. 1С с пулеметом делает (правда редко) ТАКОЕ, что.... ручками как-то и приходится допиливать.
4. Сравнение схем БД есть к MSSQL, MYSQL, PGSQL. И патчи (которые генерятся автоматом) можно перед применением проверить.
(75) Rebelx, тут или там какая разница? Тот же возмутитель спокойствия (автор статьи) вполне себе на Си++ пишет.
(76) огромная разница.
Те, кто тут присутствуют, не будут писать сложные проекты ни на чем, кроме 1С. Считаю это фактом, и в дискусию вступать не хочу.
Да, многие знают и используют разные языки программирования кроме 1С, но сложных проектов 99% из них на других языках не делают.
(76) вы хоть знаете что такое RAD?
То что в Сишарп много инструментов и больше возможностей тонкой настройки - я даже не берусь спорить.
Но ответьте на две простые вещи:
1. Есть ли в шарпе промежуточный уровень абстракции базы данных, чтобы через SQL-подобный язык работать с любой СУБД, или надо писать?
2. Есть ли механизм поддержки изменения конфигурации, чтобы автоматом делать патчи потребителям программы, как в 1С с конфигурацией или надо писать?
3. Есть ли автоматическая привязка данных формы к Полям базы данных или надо писать?
Ответ на обе вещи - надо писать, т.к. Шарп - это язык а не среда РАД
RAD вообще-то это тоже всего лишь оболочка и уйма компонентов. Существует точно также много альтернативных пакетов компонентов для MS VS. И компоненты для MS, к слову, создавать проще, чем для RAD.
ПС Какой, нафиг, RAD? Borland! А РАД - это уже деградейшн детектед. Для разработчика-одиночки, да даже для большинства it-компаний монстроподобные платформы не нужны.
(80) о-планет, в этом корень вашей ошибки. Вы думаете, если есть язык с ООП и доступом к базе данных, красивыми формочками и компонентами, то это РАД.
Странно, что вы не знаете ответ на вопрос, касающийся самой актуальной проблемы - дистрибуции базы данных. Я уверен на 99% что механизма дистрибуции нет.
По поводу первого вопроса вы ответили да, но скорее всего отписались, т.к. в 1с язык запросов одинаково пишется для любой СУБД, а как это сделано в шарпе?
По поводу привязки формы к данным, за шарп не скажу, но видел, как это делается в джаве - убого и монстроподобно. Это не рад, это извращение для гиков.
Те, кто идут по пути шарпа и джавы при работе с СУБД-проектами - мазохисты-техногики, то бишь овчинка выделки не стоит. Не, сделать можно, конечно, но будет дороже в конечном итоге чем на 1с, если это не разовая поделка для одного клиента с коротким жизненным циклом.
Т.е. на шарпах можно писать мелкие поделки и крупные проекты. Средние - невыгодно.
доступом к базе данных, красивыми формочками и компонентами, то это РАД.
РАД или RAD Rapid application developement - не имеет никакого отношения к языку. Это технология быстрой разработки. И 1С тут хромает на обе ноги. Она как раз и напоминает
доступом к базе данных, красивыми формочками
. 1С это скорее access для русскоговорящих.
Те, кто идут по пути шарпа и джавы при работе с СУБД-проектами - мазохисты-техногики, то бишь овчинка выделки не стоит.
Ну ты сейчас половину ораклоидов, аксаптовцев и саповцев мазохистами назвал. При этом проекты на Оракле и Сап гораздо крупнее 1С-овских. А доля рынка только САП превышает рынок 1С.
Не, сделать можно, конечно, но будет дороже в конечном итоге чем на 1с, если это не разовая поделка для одного клиента с коротким жизненным циклом.
Т.е. на шарпах можно писать мелкие поделки и крупные проекты. Средние - невыгодно.
Что такое Крупный проект, мелкий и средний? По влитому баблу? По объему БД? Или по количеству юзверей? Или по количеству девелоперов?
Если на языке можно писать мелкие поделки и крупные проекты, что мешает писать недокрупные или перемелкие, то бишь средние?
1. C# - это язык, и ничто больше. Твое упоминание языка в данном контексте неправильно. Но чем тебе LINQ не нравится? например:
var items = from line in products
where isGroup == true
select new {"Код"=>Code, "Наименование"=>Name};
foreach(var item in items)
System.WriteLine("Код => {0}, Наименование => {1}", item.Код, item.Наименование);
Прим. 1: Заметь, что код вполне корректен, хотя имена на русском языке.
Прим. 2: products - это может быть таблица базы данных, а может быть и имя файла. При этом я не буду сильно напрягаться с доступом. Просто подключу источник данных. Напрягаться придется если это будет сильно специфичный источник данных. Например контроллер фирмы рога и копыта.
2. Как правило патчи требуются только для источников данных. Для них есть прекрасные средства сравнения схем. Что бы сильно не тратится скачай Devart studio for MySQL. Двоичный код просто заменяется целиком. Однако можно и патч сделать. Вопрос зачем. Язык 1С не имеет операторов, для их создания.
3. Есть. Привязывать можно к Объектам сборки, к объектам бызы и т.д.
И последнее если убрать платформу 1С и оставить их скриптовый язык в чистом виде, то пожалуй javascript будет иметь побольше возможностей, а тем более С#
Выводы:
1. C# превосходит язый от 1С в разы.
2. Современный IDE превосходят штатный Конфигуратор от 1С то же.
(82) вот я и говорю - скачай то, скачай это. Деварт для мускула говришь? Но мы же условились, что конфа будет независима от конкретного сервера СКЛ. ВОт тем 1с и отличается от всякого рода шарпов, что там уже все готово. И средство контроля и дистрибуции метаданных в том числе.
По поводу привязки данных к формам - в 1с есть такие абстракции как набор записей регистра сведений, документ и т.п. В шарпе их надо писать с нуля, это время.
К тому же я видел формы джава (не скрипт). Убого - для того, чтобы прописать событие, нужно создавать новый класс-наследник. В результате в коде без ИДЕ не разберешься, получается нагромождение строк. Подход, ИМХО, неправильный, сравните, как описываются события форм в 1С и привязка к ним данных
(83) Под средним понимаю аналог написанной с нуля конфы 1с.
Мелкие проектики одноразовые долго не живущие можно хоть на аксессе написать.
сложные на чем угодно можно написать, т.к. сначала потратишь кучу бабла на сбор инструментов, потом уже можешь юзать в гриву.
А на средних проектах некогда собирать, все должно быть под рукой - весь набор инструментов.
Чтобы написать, поставить заказчикам и высылать апдейты. Да, код можно целиком заменять, нет проблем, а базу кто будет обрабатывать, Пушкин? Или примочки для различных баз??? гыгыгы...
ВОт тем 1с и отличается от всякого рода шарпов, что там уже все готово.
Не смешите мои подковы. Я что бы работать с 1С держу на компе как минимум пять инструментов которых в 1С нет и никогда не будет.
По поводу привязки данных к формам - в 1с есть такие абстракции как набор записей регистра сведений, документ и т.п. В шарпе их надо писать с нуля, это время.
Здрасте... Вот после этого фиг объяснишь, что ООП и один эс не совместимы. Весь букет ароматов MVC в один флакон объектов 1С налили и хотят нормальный запах. Однако кроме как парфюмерной лавкой это пахнуть никогда не будет.
К тому же я видел формы джава (не скрипт). Убого - для того, чтобы прописать событие, нужно создавать новый класс-наследник. В результате в коде без ИДЕ не разберешься, получается нагромождение строк. Подход, ИМХО, неправильный, сравните, как описываются события форм в 1С и привязка к ним данных
Интересно, а как рыться в 1С файлах без конфигуратора? Там тем более не разберешься, так-как назначение обработчиков в коде редко засвечивается. А так разобраться очень даже можно, Только знаний трохи поболе треба.
Под средним понимаю аналог написанной с нуля конфы 1с.
Это из книжки "Простые приемы разработки", что ли? :)))
Мелкие проектики одноразовые долго не живущие можно хоть на аксессе написать.
Надо сообщить в казначейство. А то они написали на accessе.
А на средних проектах некогда собирать, все должно быть под рукой - весь набор инструментов.
Набор с опытом нарастает.
Чтобы написать, поставить заказчикам и высылать апдейты. Да, код можно целиком заменять, нет проблем, а базу кто будет обрабатывать, Пушкин? Или примочки для различных баз??? гыгыгы...
:) А про проекты установки и обновления не слышали? Там все просто.
(85) ну давайте поспорим, раз начали, до логического конца.
Не смешите мои подковы. Я что бы работать с 1С держу на компе как минимум пять инструментов которых в 1С нет и никогда не будет.
А я не держу. Что ты делаешь не так?
По поводу привязки данных к формам - в 1с есть такие абстракции как набор записей регистра сведений, документ и т.п. В шарпе их надо писать с нуля, это время.
Здрасте... Вот после этого фиг объяснишь, что ООП и один эс не совместимы. Весь букет ароматов MVC в один флакон объектов 1С налили и хотят нормальный запах. Однако кроме как парфюмерной лавкой это пахнуть никогда не будет.
Вы можете не распинаться, я изучал ООП в универе, т.к. по профессии - программист. И для РАД ООП нисколько не эффективнее АОП, которое по сути, используется в 1с.
Интересно, а как рыться в 1С файлах без конфигуратора? Там тем более не разберешься, так-как назначение обработчиков в коде редко засвечивается. А так разобраться очень даже можно, Только знаний трохи поболе треба.
В 1С лишнее гуано, типо служебного кода для оформления наследования, не отображается. Можно хоть в текстовом редакторе, да-да, без конфигуратора смотреть и понимать код событий. А все это мясо, которое выплевывает ИДЕ от шарпа, невозможно ни вручную написать, ни понять без ИДЕ, разве что после длительного программирования в этом шарпе. Неинтуитивно и непрозрачно, потому убого.
Под средним понимаю аналог написанной с нуля конфы 1с.
Это из книжки "Простые приемы разработки", что ли? :)))
Ну хотя бы домашнюю бухгалтерию или конфу по учету работ программистов, если вам нужны примеры.
Мелкие проектики одноразовые долго не живущие можно хоть на аксессе написать.
Надо сообщить в казначейство. А то они написали на accessе.
Можно и на Навижне написать, тот же аксесс. Вопрос в том, что на 1с быстрее при равных стартовых, как ни крути.
А на средних проектах некогда собирать, все должно быть под рукой - весь набор инструментов.
Набор с опытом нарастает.
О чем я и писал. Нужно потратить время, чтобы собрать инструменты. В 1С инструменты уже собраны до нас. Не спорю, если для шарпа кто-то опубликует готовый набор инструментов, может он и будет круче 1с, пока же разговор ни о чем...
Чтобы написать, поставить заказчикам и высылать апдейты. Да, код можно целиком заменять, нет проблем, а базу кто будет обрабатывать, Пушкин? Или примочки для различных баз??? гыгыгы...
:) А про проекты установки и обновления не слышали? Там все просто.
Товарищ выше упоминал про подобную приблуду для Май-скл. Но 1с позиционирует себя для работы с произвольной СУБД. В Шарпе есть универсальный проект установки и обновления? Чтобы можно было в любой момент базу перевести на другой СУБД?
Если он есть и он удобен - может быть, может быть... Если это заточка под конкретную СУБД, то 1С впереди шарпов и борландов всех. Потому что уровень абстракции выше - метаданные, а не таблицы.
Наверное, пишу под андроид, интеграцию с другими БД и т.д.
Вы можете не распинаться, я изучал ООП в универе, т.к. по профессии - программист. И для РАД ООП нисколько не эффективнее АОП, которое по сути, используется в 1с.
Было бы обидно распинаться перед сантехником, однако вуз после 2000 года - чистейшей воды отмаза от армии. А программа до 2000 достаточно сильно устарела. Поэтому, прикрытие вузом - я склонен расценивать как прикрытие отсутствия внятной аргументации. Или по русски говоря попытку задавить авторитетом. Но, я то же противник ООП в 1С.
В 1С лишнее гуано, типо служебного кода для оформления наследования, не отображается. Можно хоть в текстовом редакторе, да-да, без конфигуратора смотреть и понимать код событий. А все это мясо, которое выплевывает ИДЕ от шарпа, невозможно ни вручную написать, ни понять без ИДЕ, разве что после длительного программирования в этом шарпе. Неинтуитивно и непрозрачно, потому убого.
1. Я повторяю, нельзя в 1С быть уверенным, что обработчик сработает (если смотреть в блокноте).
2. В C# служебный код вынесен в отдельный текстовый файл. Который, прекрасно читаем без IDE.
3. Писать без IDE UI в C# достаточно просто.
Ну хотя бы домашнюю бухгалтерию или конфу по учету работ программистов, если вам нужны примеры.
Гаражная разработка. Это средний проект? Это мелкий. Тут 1С вполне OpenOffice.Base или Microsoft Access заменят. И скорость возрастет раза в 2.
Вопрос в том, что на 1с быстрее при равных стартовых, как ни крути.
Поверь у 1С преимущества в другом.
Не спорю, если для шарпа кто-то опубликует готовый набор инструментов, может он и будет круче 1с, пока же разговор ни о чем...
И что там должно быть?
Но 1с позиционирует себя для работы с произвольной СУБД.
Еще бы реализовало, а то как ставишь что либо отличное от M$, так упираешься в особенности СУБД. Одно то что я не могу поставить не патча PG чего стоит? 1С и Linux декларативно поддерживает, а на деле? Или собрав RPM и DEB пакеты, которые криво ставятся и криво работают можно говорить о полноценном портировании? Бред.
Если это заточка под конкретную СУБД, то 1С впереди шарпов и борландов всех. Потому что уровень абстракции выше - метаданные, а не таблицы.
1С это заточка под M$ декларирующая поддержку так же Oracle, PGSQL и DB2. Но то как она это делает, назвать нормальной поддержкой можно только с натяжкой. Или по твоему перепил напильником версионника под блокировщик - это нормально?
(86)
"Потому что уровень абстракции выше - метаданные, а не таблицы."(с)
Да, уж. ;-) В каждой конфигурации своя схема базы данных. Абстракция. :-) По уму должна быть одна схема базы данных (общая, отдельно существующая), а "конфигураций" множество. Тогда, глядишь, и не потребуется вносить мельчайшие изменения в нашем законодательстве в множество конфигураций и изобретать средства обмена типа КД. Может тогда и модульность появится...
(79)(81)
"промежуточный уровень абстракции базы данных, чтобы через SQL-подобный язык работать с любой СУБД, или надо писать?"
"в 1с язык запросов одинаково пишется для любой СУБД"
Вообще, СУБД придумывали не для того, чтобы из приложения работать с любой СУБД. А для того, чтобы разные приложения могли работать с одной и той же (общей) информацией "понятной" любому приложению. А "уровень абстракции"(с) этому не способствует.
Возможность 1С работать с разными СУБД - чисто коммерческий ход. Чтобы снизить стоимость конечного продукта. Типа, если у покупателя уже есть некая СУБД, то её не надо покупать. С точки зрения конечного результата (создания ИС) - это обман покупателя.
2. Есть ли механизм поддержки изменения конфигурации, чтобы автоматом делать патчи потребителям программы, как в 1С с конфигурацией или надо писать?
какие в С# конфигурации? обновил и дальшей работаешь.
Зато приемственность - 100%.
Или теперь уже нигде, кроме 1С, программы не подлежат обновлению? :0
(91) если в базу данных ты добавил колонку и твое приложение на C# работает с этой базой и ты сделал поставки 10 клиентам, тебе надо написать патч, который добавит колонку в эти базы. 1с это делает автоматом, никакие патчи и скрипты обновления баз писать не надо.
какой еще патч?! автообновление через инет уже лет 20 как, с появлением мвассового инета.
А у 1с - это только-только введено "автоматически" (и то только "типовые" конфигурации) последние несколько лет.
(93) уважаемый, вдумайтесь, о чем вы говорите. Допустим, ваш новый код подразумевает что в таблице Table есть столбец ColumnNew.
Вы обновите код через интернет, а базу данных кто будет обновлять? Пушкин? Вам придется ручками писать этот скрипт.
Кроме того, при создании новой базы добавлять создание этой колонки.
Вам придется ручками писать этот скрипт.
Кроме того, при создании новой базы добавлять создание этой колонки.
так и у 1с все тоже самое - все, что касается базы, все надо перегружать, и чтоб без пользователей. Т.е. идет то же обновление, что и скриптом добавить новую колонку в любую другую БД.
(95)
Думаю, под абстракцией Сергей понимает, что ничего не надо делать ручками программисту. Т.е. он "халяву" обозвал умным термином. ;-)
Вот один из примеров действительной абстракции: http://www.omega.ru/ab/abstructure.html Т.е., например, схема базы данных (в терминах СУБД) не меняется при изменении "предметной модели". Это, типа, если говорить упрощённо...
(95) нет, в 1с вы просто добавляете новое поле в метаданные, ручками. И не нужно заботиться о том, как будет обновляться база по метаданным, или как она будет создаваться с нуля по метаданным. Почуствуйте разницу.
(97) Это тоже не обязательно. В (96) пример. Такое легко реализовать в любой БД.
Вот упрощенный вариант структуры таблицы данных, позволяющей иметь любое число справочников произвольной структуры и менять эту структуру, когда вздумается:
(99)
"только так почему-то никто не делает"(с) Я так делаю. И нет никакой проблемы с производительностью. Зато есть проблемы у т.н. сервера "приложений" - его просто нетУ. :-)
Читаю я статью и не понимаю каким боком она относится к защите. Алгоритм защиты не расписан. Даны примеры программ вроде "Превед, ведмед". Кто-то на Инфостарте уже публиковал "Хелло ворлд" на ста языках. Та публикация покруче была.
Лёгкость освоения С# это хорошо, но есть куча других языков и они имеют свои достоинства по отношению к С# (я читаю как "си решётка").
Думаю что мало кто тут будет писать сложные проекты на С#. И мало кто оценит его объектно-ориентированные прелести. Я как-то писал на пхп попутно изучая его. Показал web программисту. Он говорит "Ты классы используешь. А такого не понимаю." Люди живут без понимания того что такое класс и горя не знают и являются довольно хорошими специалистами.
Net проггеры собственные сборки нормально защитить не могут - издержки MSIL.
Как защитить от взлома Net проект - отдельные дебаты, далекие для тех, кто в этой теме пишет "круто, надо попробовать", а топикстартер предлагает этим способом защищать блоки 1с.
Чтобы нормально защитить свой 1с-код, необходимо если и писать, то на C++ (или VC++) без использования NET. А там все гораздо сложнее, и желание сразу попробовать отбивается.
"
...
Строгое имя состоит из удостоверения сборки, включающего ее простое текстовое имя, номер версии и сведения о языке и региональных параметрах (если они имеются), а также открытый ключ и цифровую подпись .....
...
"