От Hello world - к защите конфигураций за 1 минуту

Публикация № 128627

Разработка - Математика и алгоритмы

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

Всё более менее значимое рождается на стыке технологий. Не достаточно обладать знаниями только в одной области, чтобы перестать быть винтиком в большом механизме разработки ПО. Если вы хотите сделать что-то, что заметят, и что сможет повторить не каждый, то самый верный путь – комбинировать подходы из разных областей знаний, и чем неожиданнее, тем может получиться удачнее. Или наоборот… 

 

Секси # 
 

 

Знакомство со всем новым хорошо начинать под чьим-то доминирующим руководством. Мне с quick start помогла моя замечательная коллега, которая знакома с Microsoft Visual C# достаточно хорошо. Пара часов приватного программирования – и я уже опытный. Скажу сразу: первое знакомство оставило самые приятные впечатления. С# оказался доступным, приятным, необычным, волнующим, экстравагантным, э… языком программирования.

Собственно, для начала достаточно всего лишь знать – с чего начинать и в каком направлении двигаться, и дальше само пойдет.

Для закрепления материала я нашел заказик на c# для какого-то московского ночного клуба. Это дало необходимую практику, потому что учиться чему-то лучше тогда, когда это кто-то спонсирует, чего и всем желаю...

 

Cтарт #

 

Я вспоминаю, как много раз откладывал изучение нового языка и платформы, потому что их тутор оказывался слишком уж правильным и полным. А хочется, прочитав пару страниц, все понять и начать что-то писать. Поэтому, я не буду строго придерживаться установленных определений, я даже не гарантирую, что мое изложение материала правильное. Но я гарантирую, что, прочитав все до конца, вы напишите свою первую программу на C#, причем, в обычном блокноте, и не просто программу, а полнофункциональный com-сервер, который сможете затем запустить из под 1С…

 

И так, для работы нам потребуются:

  1. Блокнот. Т.е., программа NotePad, кто еще не понял (кто сейчас задумался, где её взять – ставим минус к этой статье!)
  2. .Net Framework 2.0 или выше (в состав его уже входит компилятор c#)

Обычно фреймворк тот или иной у большинства юзеров на компьютере уже имеется, поэтому ничего устанавливать не придется. Для софт меньшинств – ссылка: 

Скачать .NET Framework 3.5

 

C #

 

Для начала работы с C# про него нужно знать несколько фактов:

1. Это объектно-ориентированный язык, а значит, объект и станет главным понятием при программировании на нем. Иными словами, вся программа – это определение какого-то объекта, в состав которого входят другие объекты, в состав которых входят третьи, и т.д.

Выглядит это так:

 

namespace Work
{
   class Program
   {
      …
      class MyClass1
      {
         …
      }
      …
      class MyClass2
      {
         …
      }
      …
   }
}

 

2. C# - это просто еще один язык программирования, и без огромного набора объектов из библиотеки .Net Framework, которые можно очень легко подключать и использовать, C# был бы практически не интересен.

Для подключения чего-то из библиотек .Net мы просто добавляем в начало нашей программы определение пространства имен (namespase), где в .Net это что-то лежит:

using System;
using System.IO;
using Directory;
И т.д.

Конечно, нужно знать, где и что в библиотеках .Net лежит. Для этого пользуем справочники по >net Framework и свой накопленный в процессе опыт. 

Nubic #

 

Чем отличается объект от переменной, думаю, объяснять не нужно. Когда мы создаем переменную, то просто резервируем под нее память, чтобы что-то туда записать.

А = 2012;

Когда мы определяем объект, то привязываем к «переменной» еще и методы, как с данными, что в ней хранятся, работать.

А.УстановитьГод(2012);

Т.е., объект – это логически оправданное объединение данных (кучи переменных, или полей, или еще говорят - свойств) и методов работы с ними (при этом, все свойства объекта по определению видны в его методах).

 

Hello, world #

 

И так, у нас C# есть, блокнот есть, с объектами мы определились, пора уже что-нибудь написать…

Мы будем использовать вывод информации в консоль (т.е., не в windows-окно). Объект Console, связанный с таким выводом на экран, находится в библиотеках .Net в пространстве имен System. Т.е., первая строка нашей программы должна сделать доступным это пространство имен. И, собственно, нам потребуется только один метод объекта Console, а именно Write().

using System;
namespace Work
{
    public class Program
    {
       static void Main() // основная рабочая функция
       {
          Console.Write("Hello, world!"); // Пишем
          Console.ReadLine(); // Ждем нажатия Enter
       }
    }
}

 

 

Это должно у нас получиться в блокноте. Сохраняем в myprogram.cs. Компилируем с помощью компилятора c#

csc.exe myprogram.cs

Если не запустилось, то ищем csc.exe. Обычно оно лежит в C:\WINDOWS\Microsoft.NET\Framework\ v3.5\ Для простоты можно скопировать наш файл туда и там выполнить компиляцию. (Увернулся от летящего помидора…)

Запускаем в режиме эмуляции DOS. Радуемся жизни.

 

Hello, class #

 

Все то же самое, но пробуем создать и использовать свой класс: 

 

using System;
namespace Work
{
    public class Program
    {
       static void Main() // основная рабочая функция
       {
          AClass A=new AClass(); // Создаем экземпляр своего класса
          A.Greeting("Олег"); // Обращаемся к его методу
       }

       private class AClass // Определяем наш класс
       {
          public void Greeting(string Name) // Определяем его метод Greeting
          {
             Console.Write("Hello,"+Name); // Пишем
             Console.ReadLine(); // Ждем нажатия Enter
          }
       }
    }
}
 
Hello, DLL #

 

DLL – это динамическая библиотека функций и объектов, которые можно использовать в других программах.

В нашей DLL мы определяем некий метод, который хотим использовать для суммирования двух чисел. При этом, результат хотим сохранить внутри нашего DLL, и когда нужно- восстановить.

 

using System;
using System.Runtime.InteropServices;

namespace Work
{
    public interface MyInterface // Интерфейс нашей библиотеки
    {
       int Summa(int a, int b); // В нашем распоряжении – два метода. Тут мы их просто опишем
       int Memory();
    }

    [ClassInterface(ClassInterfaceType.AutoDual)]
    public class Server: MyInterface // Класс – потомок интерфейса.

// Значит, он должен содержать методы, описанные в интерфейсе
    {
       int buf;

       public int Summa(int a, int b) // А тут мы определяем описанные в интерфейсе методы
       {
          int res=a+b;
          buf=res;
          return res;
       }

       public int Memory()
       {
          return buf;
       }

    }
}

 

 

Ничего сложного. Язык интуитивно понятен.

Правда, теперь команда компиляции будет несколько иной:

csc.exe \target:library myprogram.cs

Появилась myprogram.dll. Регистрируем ее в системном реестре.

regasm myprogram.dll /cosebase

Если кому интересно, что такое это регасм – отвечу: это нечто, что наш dll делает видимым для других программ. Кому такого объяснения мало – прыгаем сюда и читаем много всего о regasm


Hello, 1С #

 

На самом деле, мы только что создали свой первый com-сервер на c#. Осталось проверить, как он работает в 1С.

Открываем конфигуратор, создаем внешнюю обработку и по нажатию клавиши выполняем:

Объект=Новый COMОбъект(“Work.Server”);
Сообщить(Объект.Summa(2,3));
Сообщить(Объект.Memory());

Проверяем, пляшем.

 
Crypto 1С #

 

Практическое применение com-технологий одинэсник может найти, например, в защите своих авторских прав. Как в прошлом примере мы передавали на вход нашего метода «Summa» числа, так я могу, например, передать объект «Запрос», инициализировать и выполнить его внутри dll, потом стереть текст запроса и возвратить только результат.

Таким образом, пользователь не увидит, что делает мой запрос, и без моей dll программа работать не будет. Осталось добавить некий подсчет числа запусков, или контроль даты запуска, и вот вам защита триал-версии!

Конечно, если в запросе пара очевидных строк, то метод этот не слишком защитит. Но если в вашей конфигурации несколько десятков запросов в полсотни строк каждый, то защита будет вполне надежной.

Этот метод защиты ООО «О-Планет» давно и успешно использует в наших коммерческих решениях под «восьмерку», и при желании мы готовы бесплатно поделиться нашими наработками. ;)

 

Сцуко #

 

Поражает то, что с каждым разом видишь все больше и больше заказов сделать что-то на .Net с помощью VC#. Кажется, мелкомягкие на этот раз постарались: платформа получилась для разработчика проще, чем конфигуратор 1С, намного проще, чем Delphi а с учетом того, что это все-таки и С, и полноценное ООП – еще и продвинутее их обоих. К тому же, имеется бесплатные полнофункциональные версии ПО. А значит, и стоимость конечного продукта не зависит от числа приобретенных платформ, что очень радует.

На месте разрабов 1С я бы версию 1С:Предприятие 9 сделал ни как отдельную платформу, а как библиотеку классов для Microsoft Visual C#. Не 1С, так кто-то другой однажды такое сделает, и у 1С определенно настанут сложные времена…

 

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. WKBAPKA 220 19.05.12 14:20 Сейчас в теме
2. O-Planet 6896 19.05.12 14:25 Сейчас в теме
(1) Дык там же написано! "Коллега, которая дала quick start" :)
3. CratosX 19.05.12 14:28 Сейчас в теме
Я б тоже не против приватного программирования с такой коллегой ;)
Vyacheslide; AlexKoso; +2 Ответить
4. jhfrek 185 19.05.12 14:53 Сейчас в теме
Супер! exe и dll получаются по 3 килобайта вообще!!! Отличный старт к написанию маленьких и мобильных вирусов для юных хаЦкеров! Причём ещё и из под 1С... ;-)
5. jhfrek 185 19.05.12 14:55 Сейчас в теме
Только ошибка при создании библиотеки. Слеш в другую сторону нужно делать.
>csc.exe \target:library myprogram.cs
Должно быть так: csc.exe /target:library myprogram.cs
Sanario; Polzavatel; AlexKoso; +3 Ответить
6. O-Planet 6896 19.05.12 15:01 Сейчас в теме
(5) Спасибо. Вот только как исправить? Сейчас исправишь - статья исчезнет. На модерации потому что будет. А сейчас выходные...
24. AlexKoso 19 21.05.12 08:45 Сейчас в теме
(5) jhfrek, а так же другие.
Есть еще более простой способ компиляции. на файле .CS правой кнопкой мыши и Открыть с помощью ;) А если и галку поставить, то можно компиляцию в будущем производить двойным кликом по исходнику
TaTaPuH-Magic; +1 Ответить
7. salexdv 1612 19.05.12 17:30 Сейчас в теме
Для quick start статья зачетная!
Vyacheslide; +1 Ответить
8. zipik 19.05.12 22:50 Сейчас в теме
отличная статья)
Vyacheslide; +1 Ответить
9. awk 714 19.05.12 23:35 Сейчас в теме
Знакомство со всем новым хорошо начинать под чьим-то доминирующим руководством. Мне с quick start помогла моя замечательная коллега, которая знакома с Microsoft Visual C# достаточно хорошо. Пара часов приватного программирования – и я уже опытный.
Вот только не в области С#. ;)
Поэтому, я не буду строго придерживаться установленных определений, я даже не гарантирую, что мое изложение материала правильное.
И не гарантирую что этот матерьял о c#.
Для софт меньшинств
http://www.mono-project.com/Main_Page - Правильная ссылка. Так как .Net в M$ еще с ХР входит. 3.11-2000 - это не меньшинства - это извр...
Это объектно-ориентированный язык, а значит, объект и станет главным понятием при программировании на нем. Иными словами, вся программа – это определение какого-то объекта, в состав которого входят другие объекты, в состав которых входят третьи, и т.д.
Мдя... А я то по глупости считал, что ООП зиждиться на Полиморфизме, Инкапсуляции и Наследовании, и крутится все вокруг классов. Вот ведь ду..ак. 1С то в полной мере ООП, а ведь мужики то не знают..
Чем отличается объект от переменной, думаю, объяснять не нужно.
Угу. Наливай, да пей. То есть ничем.
Когда мы определяем объект, то привязываем к «переменной» еще и методы, как с данными, что в ней хранятся, работать.
Упс... А операционные системы об этом не знают. И продолжают использовать методы как глобальные.

Мы будем использовать вывод информации в консоль (т.е., не в windows-окно).
А уже эта консоль будет выводить в окно которое мы увидим.
Объект Console, связанный с таким выводом на экран, находится в библиотеках .Net в пространстве имен System.

Это класс.. В Java объект в С# класс...

Запускаем в режиме эмуляции DOS
Это мне на Вынь 7 качать DOSBOX надо? Режима такого уже больше десяти лет нет.
Практическое применение com-технологий одинэсник может найти, например, в защите своих авторских прав. Как в прошлом примере мы передавали на вход нашего метода «Summa» числа, так я могу, например, передать объект «Запрос», инициализировать и выполнить его внутри dll, потом стереть текст запроса и возвратить только результат.
Для профи получим легко вскрываемую защиту, а пользователи сами почему-то не лазят. Зовут профи.

На месте разрабов 1С я бы версию 1С:Предприятие 9 сделал ни как отдельную платформу, а как библиотеку классов для Microsoft Visual C#. Не 1С, так кто-то другой однажды такое сделает, и у 1С определенно настанут сложные времена…
А я уж испугался, что этой весной никто этого не предложит. Сколько помню себя как разработчика на этой платформе, столько это и предлагают Нуралиеву, а он все о каком-то предметно ориентированном программировании лапочет. Дурак - наверно.

А так картинки клевые. Девочка на фотке супер.
atomskxs; Silenser; Dnki; dzuenok; Sanario; s0nya; CratosX; German; awa; +9 Ответить
10. O-Planet 6896 20.05.12 01:30 Сейчас в теме
(9) Ну наконец-то! Наконец-то хто-то появился и написал, как все должно быть правильно и корректно. Что ж, грустно приготовился все переделывать. Обложился вумными книгами в 100500 страниц... Пожалуй, начну с того в новой редакции этой статьи, что с# нельзя назвать чистым ООП, потому что он не поддерживает множественное наследование. Хотя #-кодеры (читать "шарп", а не "быдло") с этим конечно не согласятся. Они уверены, что интерфейсы решают все. Оставим это заблуждение на их совести и напомним о моих любимых template, без которых по мне, так и плечу не раззудиться в волю... А где память??? Дайте мне работать с памятью!!! Дайте alloc! Дайте

for( ; *src!='\0'; *(dest++)=*(src++)); !!!

И не доверял я никогда разным мусоросборщикам, начиная еще с prolog. Вообще, c# это чистая популяризация, как 1С. тому, кто привык к с++, это становится ясно, буквально, с первых минут, когда тебе говорят, что -> больше нет!

ПС А я уж думал, инфостарт исцелен.
BuhBuhov; +1 Ответить
17. awk 714 20.05.12 22:16 Сейчас в теме
(10)
Ну наконец-то! Наконец-то хто-то появился и написал, как все должно быть правильно и корректно.
Хто-то читал, а не смотрел на красивые картинки и очаровательную девушку.

Тут не могу не сделать реверанс автору. У статьи блестящее оформление и что особенно радует не забыт источник вдохновения.

Пожалуй, начну с того в новой редакции этой статьи, что с# нельзя назвать чистым ООП, потому что он не поддерживает множественное наследование. Хотя #-кодеры (читать "шарп", а не "быдло") с этим конечно не согласятся. Они уверены, что интерфейсы решают все. Оставим это заблуждение на их совести и напомним о моих любимых template, без которых по мне, так и плечу не раззудиться в волю... А где память??? Дайте мне работать с памятью!!! Дайте alloc! Дайте

1. Множественное наследование, кроме С++ мало кто поддерживает.
2. Шаблоны начиная с версии 2.0 в .Net поддерживаются в полном объеме.
3. Чем тебе new не alloc? Даже сам Страуструп рекомендует использовать именно его?

for( ; *src!='\0'; *(dest++)=*(src++)); !!!
strcpy? Я угадал?

И не доверял я никогда разным мусоросборщикам, начиная еще с prolog.
Ты еще про концептуальную ошибку пролога вспомни.

Вообще, c# это чистая популяризация, как 1С. тому, кто привык к с++, это становится ясно, буквально, с первых минут, когда тебе говорят, что -> больше нет!
Да. Задел за живое. Я после изучения С# не смог писать на С++. На Си пожалуйста, а С++... Грустно.

(11)
порадовало про классы и ООП
Эх "коммуняка". Дух первичен, а не материя. :)

с# - это не ООП, а КОП :D А js - ФОП :D))
СОП забыл. Сейчас сервис ориентированное программирование в моде :D

А вообще, лучше про ООП почитать
Лучше читать. Тут ты прав.

(12) Oleg_nsk, Это значит, что все открытые члены будут видны для ком (не требуется описание интерфейса). Что не рекомендуется, так как видимость может быть впоследствии изменена и эта ошибка не сразу себя проявит.

(14) blindcat2006, Везучий ты. Я осенью писал на пяти языках. Сейчас, слава богу осталось четыре. PHP и JavaScript отпали так как перешли на оффлайн версию.

(16) deaddy64, Да можем. Вопрос зачем?
18. O-Planet 6896 20.05.12 22:54 Сейчас в теме
(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):

class B
{
...
};
A<B> *src;
...
char *dest=new char[1000];
for( A<B> *ptr = (A<B> *) src; *ptr != A<B> 0; *((A<B> *)dest)++=*ptr++) ;

Без этого, на мой взгляд, С - не С. Потому и назвал популяризацией. Когда такие вот вещи из языка исключают, значит, изначально предполагают охватить более широкую аудиторию пользователей. Жаль, конечно.
19. awk 714 20.05.12 23:31 Сейчас в теме
(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# не позволяет это делать. Допускаются только те языковые конструкции, которые могут быть выведены из ограничений.
Показать


class B
{
...
};
A<B> *src;
...
char *dest=new char[1000];
for( A<B> *ptr = (A<B> *) src; *ptr != A<B> 0; *((A<B> *)dest)++=*str++);

Уф.. Это хорошо что не поддерживает:

1. Тяжело читать код. Особенно если писал на Си последний раз в 2010, а на С++ в 2004 году.
2. Я нашел одну уязвимость - выход за границы.
14. blindcat2006 72 20.05.12 10:25 Сейчас в теме
(9) awk, - Слова умные и м.б. правильные (сам на Paskal и С++ писал лет 20 назад, теперь подзабыл все :( )
НО ! - это форум про (для) 1С в первую очередь - и мне как 15 лет кроме конфигуратора ни в чем не кодившему, а для написания сторонних объектов приглашащего программиста* C/Delphi/Java - статья Открытие.
Думаю что таких тут немало.
++ - одназначнА

* - кстати тоже девушка весьма симпатичная
jif; Трактор; +2 Ответить
118. avz_1C 10 16.06.12 15:23 Сейчас в теме
(9) awk, !!! Нуралиева жалко :-) ...
11. O-Planet 6896 20.05.12 01:54 Сейчас в теме
... но больше всего порадовало про классы и ООП. Т.е. абзац про инкапсулирование и полиморфизм в рамках quick start был бы ценным настолько, что после него 1С-ник, не видевший ничего, кроме конфигуратора, перешел бы на качественно новый уровень бытия?! Эх, балин, упустил я...

И если в c# "это класс, в java - объект", то в с# - это не ООП, а КОП :D А js - ФОП :D)) А вообще, лучше про ООП почитать что-то еще, кроме институтских конспектов. Как тебе такое определение: "объект - это нечто, что обладает идентичностью, состоянием, поведением"?
12. Oleg_nsk 237 20.05.12 07:23 Сейчас в теме
Спасибо. Всё доступно написано для тех кого в универе обучали кодить на Delphi! А этот кусок кода при создании dll что означает: [ClassInterface(ClassInterfaceType.AutoDual)] ?
13. lukoyanovas 20.05.12 10:07 Сейчас в теме
15. sorb 20.05.12 14:45 Сейчас в теме
Делать защиту на .Net - все равно что не делать ее вообще, если не использовать обфускацию - получение рабочих исходников не займет более получаса... Но статья все равно получилась хорошая, взял на вооружение для обучения начинающих.
quick; awk; +2 Ответить
16. deaddy64 25 20.05.12 17:29 Сейчас в теме
Как в прошлом примере мы передавали на вход нашего метода «Summa» числа, так я могу, например, передать объект «Запрос», инициализировать и выполнить его внутри dll, потом стереть текст запроса и возвратить только результат.

Можно по-подробнее, разве мы сможем внутри DLL работать с объектами 1С? Как мы выполним запрос, ведь обработкой "запроса" занимается платформа 1С, а не наша DLL?
20. Andry.Boris 55 21.05.12 01:25 Сейчас в теме
зачет ++
прикольно...
думаю полезно если нужно сделать вычисления в большом объеме данных...
c# тогда должна выиграть у 1С... по скорости...
21. Niberu 5 21.05.12 04:02 Сейчас в теме
в тексте надо подправить regasm myprogram.dll /cosebase
на regasm myprogram.dll /codebase ?
22. khaoos 239 21.05.12 07:19 Сейчас в теме
Автору плюс за статью. Правда, не поддерживаю разработку будущей девятки на .Net :). Да и дискуссия интересная развернулась. Понятно, что Си и С++ мощнее в смысле более тонкого управления ресурсами и скорости. Но сейчас время программиста оценивается намного больше, чем машинное время. Поэтому и языки проектируется для более быстрой разработки и, по возможности, кросс-платформенными.
25. fishca 1179 21.05.12 08:46 Сейчас в теме
Hello C# :) Оформление на высоте, но статья ниачем, если честно.
26. konfed 21.05.12 10:20 Сейчас в теме
Мне статья понравилась - обязательно попробую как только найду подходящую коллегу #. Олегу большое спасибо за quick start.
27. Sairys 21.05.12 11:35 Сейчас в теме
Интересная статья. Спасибо за такие статьи, они очень полезны.
28. Abadonna 3858 21.05.12 12:21 Сейчас в теме
(0)
Появилась myprogram.dll. Регистрируем ее в системном реестре.
regasm myprogram.dll /cosebase

Вот тут-то ж... и подкралась. Начались проблемы с правами, особенной на сервере 2008 и Win 7...
И обращения ламеров, полуламеров и прочих бесправных.
29. O-Planet 6896 21.05.12 12:58 Сейчас в теме
(28) Да!!! 2008 - это ЖЖЖЖ... Если на Win7 я еще могу com запустить, который что-то в реестр пишет, то под 2008 даже не пытаюсь ((
35. ValeriVP 22.05.12 09:50 Сейчас в теме
(29) мой вариант технологии регистрации библиотек .net: http://infostart.ru/public/128795/
30. ValeriVP 21.05.12 15:57 Сейчас в теме
Статья интересная, может быть даже полезная.

Однако использовать данную технологию для защиты разработок можно только (одновременно):
1) используя обфускацию
2) вынося из 1С уникальные алгоритмы целиком. А сделать это не получится для достаточно сложных алгоритмов, кроме оперирующих входными параметрами только простых типов.

Предложенная автором схема защиты, ИМХО, фактически является защитой для новичков, уровень пароля на обработку.
Или даже ниже. Однако в силу своей не распространенности может быть чуть более стойкой - ломателю трудно будет сформулировать запрос яндексу.
Более стойким вариантом будет являться подобный механизм, в случае если защищен будет не текст запроса, а алгоритм его формирования. Т.е. на входе параметры, а на выходе не результат запроса, а его текст.
31. itar59 87 21.05.12 18:04 Сейчас в теме
Поучительно, познавательно. респект автору!
32. unsimple 30 21.05.12 18:17 Сейчас в теме
Просто и доходчиво! Спасибо!
33. marsohod 122 21.05.12 19:19 Сейчас в теме
Однако, тенденцию автор уловил ;) Дальнейшее развитие 1С приведёт её в лагерь C#.
34. awk 714 21.05.12 21:56 Сейчас в теме
(33) marsohod, Представляю себе вариант LINQ от 1С

МассивЭлементовНоменклатуры = Из Номенклатура В Справочник.Номенклатура
Где Номенклатура.ЭтоГруппа = ЛОЖЬ
Выбрать Новый Структура("Код, Номенклатура", Номенклатура.Код, Номенклатура.Наименование);
36. Пуд 22.05.12 11:10 Сейчас в теме
Спасибо за статью.Мне,как человеку, уже давно не программировавшему ни на чем,кроме 1с, довольно полезно вспомнить,как оно вообще бывает.

Запускаем в режиме эмуляции DOS

Только это место осталось мне непонятным. После компиляции получаем вроде exe?Который спокойно запускается на вин7.

Практическое применение com-технологий одинэсник может найти, например, в защите своих авторских прав. Как в прошлом примере мы передавали на вход нашего метода «Summa» числа, так я могу, например, передать объект «Запрос», инициализировать и выполнить его внутри dll, потом стереть текст запроса и возвратить только результат.

Это вот тоже не очень понятным осталось. Передать объект запрос,т.е. текст сформировать внутри dll?
37. O-Planet 6896 22.05.12 11:22 Сейчас в теме
(36)
Про DOS - я немного ступил. У меня стоит readline, т.е. окно выполнения не закрывается. А про защиту - это выложу как-нибудь то, что используем. Правда, оно не на .Net ;) А в целом - именно так: текст пользователю не виден, он формируется внутри dll, запрос выполняется, текст убирается из объекта "Запрос".
38. Пуд 22.05.12 11:28 Сейчас в теме
(37) Да, было бы интересно. Спасибо :)
39. ValeriVP 22.05.12 11:49 Сейчас в теме
(38) Еще раз обращаю внимание всех - этот вариант только видимость защиты. Я это рассматривал давно: http://infostart.ru/public/57362/ (п.5)
40. O-Planet 6896 22.05.12 12:19 Сейчас в теме
(38) (39) Предлагаю эксперимент. Я выкладываю простенький отчетик, защищенный таким способом. Если кто-то защиту взламывает - приз 10 тыс. Согласны?
41. Пуд 22.05.12 12:28 Сейчас в теме
(40) Я сразу пас:) В этом ничего не понимаю пока.
42. ValeriVP 22.05.12 13:52 Сейчас в теме
(40) я согласен. тебя никто за язык не тянул.
и эта...
из уважения к тебе - предлагаю 5т
и чтоб упростить эксперимент, если хочешь, могу сразу выдать два метода взлома (в личку)
43. O-Planet 6896 22.05.12 13:59 Сейчас в теме
(42) Ок. Да собственно, что выкладывать-то? Вот наша разработка, которая защищена таким образом:

http://infostart.ru/public/84364/
44. ValeriVP 22.05.12 14:05 Сейчас в теме
(43) что именно там будем смотреть? еще качается - gprs
45. O-Planet 6896 22.05.12 14:06 Сейчас в теме
Хотя, глянь лучше вот эту: http://infostart.ru/public/78661/ А то первую особо и не пытались защитить, там запросы в пару строк, их и без взлома угадать легко :)
46. O-Planet 6896 22.05.12 14:09 Сейчас в теме
В (45) смотрим документ "Производство". Можно начать с модуля документа.
47. ValeriVP 22.05.12 14:28 Сейчас в теме
(46) отправил запрос на ключ активации,
а как оказалось, он не нужен для первых 50ти запусков.

текст запроса
"f_6329536680097868":

ВЫБРАТЬ

Таб.Продукция КАК Номенклатура,

ВЫРАЗИТЬ(Таб.Цена * Таб.Количество КАК ЧИСЛО(15, 2)) КАК Сумма
ПОМЕСТИТЬ Компоненты
ИЗ

&ТабКомпонентов КАК Таб
;
...
Показать
48. O-Planet 6896 22.05.12 14:49 Сейчас в теме
(47) А полный текст запроса и, скажем, f_3030467599065621?
49. ValeriVP 22.05.12 14:54 Сейчас в теме
(48)я ж отправил полный текст в личку
начало f_3030467599065621:
ВЫБРАТЬ

СписокКалькуляций.Калькуляция,

СписокКалькуляций.Количество
ПОМЕСТИТЬ Калькуляции
...

весь не пощу, оно же всем не надо
50. O-Planet 6896 22.05.12 14:57 Сейчас в теме
(49) А, не посмотрел. Впечатлен. Тогда шли номер яндекса. И не говори, что это просто дамп памяти. Это не честно, ведь дамп легко забить нулями, и тогда никакого взлома не будет.
51. fishca 1179 22.05.12 15:02 Сейчас в теме
(50)
Впечатлен

странно... видеть зубра 1С...
неужели ты думал, что Rebelx не вскроет твою защиту?
52. O-Planet 6896 22.05.12 15:08 Сейчас в теме
(51) Я как-то в авторитеты не верю. И нужно же, чтобы кто-то соответствующего уровня протестировал. Под 7.7 также ведь доводили, пока ни кто не вскрыл, также и эту потихоньку до ума доведем, тогда и выложу.
53. ValeriVP 22.05.12 15:25 Сейчас в теме
(50) 41001299706260
бонус тебе:
всего за 10т.р (включая приз):
1) мое решение для защиты конфигураций
2) технология, использованная для взлома
54. O-Planet 6896 22.05.12 15:31 Сейчас в теме
Э, нет, технологию взлома ты мне уже обещал в личку написать. А вот решение для защиты - рассмотрим. Может, действительно имеет смысл использовать то, над чем кто-то уже давно трудится, чем делать все самим... Вечером лови перевод ;)
55. ValeriVP 22.05.12 15:40 Сейчас в теме
(54) Правда обещал? где? когда? я же только думал об этом, вроде не постил...
Ты не рассматривай, пользуйся случаем пока я добрый :)
почитай последний пост: http://forum.guardant.ru/topic/55/
56. O-Planet 6896 22.05.12 15:48 Сейчас в теме
(55)
вот где:

"... и чтоб упростить эксперимент, если хочешь, могу сразу выдать два метода взлома (в личку)"

хатююю... :)
57. ValeriVP 22.05.12 15:51 Сейчас в теме
(56) не зачет. это предлагалось вместо результата, чтоб мне жизнь упростить
62. Rustig 1487 23.05.12 14:42 Сейчас в теме
(55) правильно ли я предполагаю(?), что "декомпилятор 1С" разработали те, кто разрабатывал "компилятор 1С" и саму "платформу 1С", то есть бывшие сотрудники-программисты фирмы "1С"?
и что защиту "Интелис" может обойти разработчик этой самой защиты "Интелис"? и что когда-нибудь по сети будет бродить "декомпилятор Интелис"?
63. ValeriVP 23.05.12 15:29 Сейчас в теме
(62)Все в корне не верно :)
1) Декомпиляторов есть несколько. У меня есть три - два скачено, один сам сделал. Я свой никому не раздаю.
2) Лично я в 1С не работал
3) Защиту Интелис (именно Интелис: Защита конфигураций в.1) - лично я обойти могу - т.к. это аналог защиты от Катран.
4) Защита WiseAdvice: Защита конфигураций в.2 - методики декомпиляции у меня нет, и я думаю, что в обозримом будущем не предвидится - ни у меня, ни у кого либо другого.
rustork; MaxDavid; Rustig; +3 Ответить
59. bulpi 174 23.05.12 12:06 Сейчас в теме
За что не люблю С - подобные языки. Ну вот написано :
[ClassInterface(ClassInterfaceType.AutoDual)]

Что это? Зачем ? Сколько процентов программеров понимают, что они написали и зачем ? Это не умственная деятельность, а обезьянская. А в Делфи понятно все хоть более-менее.

Зачетная фотка коллеги. Тема сисег раскрыта :)))
60. O-Planet 6896 23.05.12 12:49 Сейчас в теме
(59) Тут просто все сложнее, чем уровень quick start. В двух словах, любая клиентская программа (com-клиент) взаимодействует с com-объектом (сервером) через его интерфейс. ClassInterface определяет, каким образом com-клиенты будут видеть наш класс. При этом, интерфейс com-сервера может быть прокеширован в системе, что может вызвать ошибку при обращении к com-объекту, если его интерфейс был впоследствии изменен.

ClassInterfaceType.None - говорит, что интерфейс задается нами явно, и отключена его автоматическая генерация
ClassInterfaceType.AutoDispath - включает режим позднего связывания. Вроде этот вариант используется по умолчанию.
ClassInterfaceType.AutoDual - включает ранее и позднее связывание. Полезен при разработке и тестировании, а также тогда, когда не предполагается, что класс будет изменяться. Он единственный предоставляет в экспортируемую библиотеку описание интефейса класса, что ускоряет работу за счет кеширования (оно и вызывает ошибки, если вдруг класс изменился)
61. O-Planet 6896 23.05.12 12:54 Сейчас в теме
64. fixin 3977 23.05.12 17:50 Сейчас в теме
все это бирюльки. 1с-движок умеет работать с базой и формами, а что умеет си-шарп? а какие там формы, вы видели? гыгыгы...
Трактор; +1 Ответить
73. awk 714 28.05.12 10:26 Сейчас в теме
(64) fixin, (65) Трактор, Ну то что можно не зная классов быть высококлассным специалистом - это я согласен. (серьезно) Например один мой знакомый механик, очень классно ремонтирует машины и чихал он на классы, да и на программирование тоже. (шутка)

Но:
Думаю что мало кто тут будет писать сложные проекты на С#.
Это высказывание муравья который ползает по плоскости и отрицает третье измерение. Прошу прощенья, если обижу. Если не верите, то взгляните на MonoDevelop - написано на C#. Eclipse - Java. И если вы не умете есть палочками, то не надо кричать, что Японцы, Китайцы и т.д. неполноценны.
74. fixin 3977 28.05.12 11:13 Сейчас в теме
(73) сложные программы коллективом программистов можно хоть на ассемблере писать. Я имел ввиду, что С# - это не RAD, в отличии от 1с. Попробуйте посчитать, во что выльется сопровождение проектика с базой данных и можно ли это потянуть в одиночку, причем если клиентов не один, а 10, то бишь писать ручками патчи с апдейтами - то что делает 1с автоматом, это несладко....
76. awk 714 28.05.12 11:32 Сейчас в теме
(74) fixin,
1. Да, C# не RAD. Зато VS и т.п. Еще какие RAD.
2. RAD M$ превосходит RAD от 1С в разы. Попробуй хотя бы Professional версии. Я уже молчу про Ultimate.
3. 1С с пулеметом делает (правда редко) ТАКОЕ, что.... ручками как-то и приходится допиливать.
4. Сравнение схем БД есть к MSSQL, MYSQL, PGSQL. И патчи (которые генерятся автоматом) можно перед применением проверить.

(75) Rebelx, тут или там какая разница? Тот же возмутитель спокойствия (автор статьи) вполне себе на Си++ пишет.
77. ValeriVP 28.05.12 11:41 Сейчас в теме
(76) огромная разница.
Те, кто тут присутствуют, не будут писать сложные проекты ни на чем, кроме 1С. Считаю это фактом, и в дискусию вступать не хочу.
Да, многие знают и используют разные языки программирования кроме 1С, но сложных проектов 99% из них на других языках не делают.
78. awk 714 28.05.12 11:57 Сейчас в теме
(77) Rebelx,
в дискусию вступать не хочу
И чего вступать-то? Ты же прав на 99,(9)%.
79. fixin 3977 28.05.12 12:09 Сейчас в теме
(76) вы хоть знаете что такое RAD?
То что в Сишарп много инструментов и больше возможностей тонкой настройки - я даже не берусь спорить.
Но ответьте на две простые вещи:
1. Есть ли в шарпе промежуточный уровень абстракции базы данных, чтобы через SQL-подобный язык работать с любой СУБД, или надо писать?
2. Есть ли механизм поддержки изменения конфигурации, чтобы автоматом делать патчи потребителям программы, как в 1С с конфигурацией или надо писать?
3. Есть ли автоматическая привязка данных формы к Полям базы данных или надо писать?

Ответ на обе вещи - надо писать, т.к. Шарп - это язык а не среда РАД
80. O-Planet 6896 28.05.12 12:18 Сейчас в теме
(79)
1. есть
2. не знаю
3. есть

RAD вообще-то это тоже всего лишь оболочка и уйма компонентов. Существует точно также много альтернативных пакетов компонентов для MS VS. И компоненты для MS, к слову, создавать проще, чем для RAD.

ПС Какой, нафиг, RAD? Borland! А РАД - это уже деградейшн детектед. Для разработчика-одиночки, да даже для большинства it-компаний монстроподобные платформы не нужны.
81. fixin 3977 28.05.12 12:32 Сейчас в теме
(80) о-планет, в этом корень вашей ошибки. Вы думаете, если есть язык с ООП и доступом к базе данных, красивыми формочками и компонентами, то это РАД.

Странно, что вы не знаете ответ на вопрос, касающийся самой актуальной проблемы - дистрибуции базы данных. Я уверен на 99% что механизма дистрибуции нет.

По поводу первого вопроса вы ответили да, но скорее всего отписались, т.к. в 1с язык запросов одинаково пишется для любой СУБД, а как это сделано в шарпе?

По поводу привязки формы к данным, за шарп не скажу, но видел, как это делается в джаве - убого и монстроподобно. Это не рад, это извращение для гиков.

Те, кто идут по пути шарпа и джавы при работе с СУБД-проектами - мазохисты-техногики, то бишь овчинка выделки не стоит. Не, сделать можно, конечно, но будет дороже в конечном итоге чем на 1с, если это не разовая поделка для одного клиента с коротким жизненным циклом.

Т.е. на шарпах можно писать мелкие поделки и крупные проекты. Средние - невыгодно.
83. awk 714 28.05.12 12:56 Сейчас в теме
(81) fixin,
доступом к базе данных, красивыми формочками и компонентами, то это РАД.

РАД или RAD Rapid application developement - не имеет никакого отношения к языку. Это технология быстрой разработки. И 1С тут хромает на обе ноги. Она как раз и напоминает
доступом к базе данных, красивыми формочками
. 1С это скорее access для русскоговорящих.


Те, кто идут по пути шарпа и джавы при работе с СУБД-проектами - мазохисты-техногики, то бишь овчинка выделки не стоит.

Ну ты сейчас половину ораклоидов, аксаптовцев и саповцев мазохистами назвал. При этом проекты на Оракле и Сап гораздо крупнее 1С-овских. А доля рынка только САП превышает рынок 1С.

Не, сделать можно, конечно, но будет дороже в конечном итоге чем на 1с, если это не разовая поделка для одного клиента с коротким жизненным циклом.

Т.е. на шарпах можно писать мелкие поделки и крупные проекты. Средние - невыгодно.


Что такое Крупный проект, мелкий и средний? По влитому баблу? По объему БД? Или по количеству юзверей? Или по количеству девелоперов?

Если на языке можно писать мелкие поделки и крупные проекты, что мешает писать недокрупные или перемелкие, то бишь средние?
82. awk 714 28.05.12 12:34 Сейчас в теме
(79) fixin, Ты не прав.

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С то же.
84. fixin 3977 28.05.12 13:11 Сейчас в теме
(82) вот я и говорю - скачай то, скачай это. Деварт для мускула говришь? Но мы же условились, что конфа будет независима от конкретного сервера СКЛ. ВОт тем 1с и отличается от всякого рода шарпов, что там уже все готово. И средство контроля и дистрибуции метаданных в том числе.

По поводу привязки данных к формам - в 1с есть такие абстракции как набор записей регистра сведений, документ и т.п. В шарпе их надо писать с нуля, это время.

К тому же я видел формы джава (не скрипт). Убого - для того, чтобы прописать событие, нужно создавать новый класс-наследник. В результате в коде без ИДЕ не разберешься, получается нагромождение строк. Подход, ИМХО, неправильный, сравните, как описываются события форм в 1С и привязка к ним данных

(83) Под средним понимаю аналог написанной с нуля конфы 1с.
Мелкие проектики одноразовые долго не живущие можно хоть на аксессе написать.
сложные на чем угодно можно написать, т.к. сначала потратишь кучу бабла на сбор инструментов, потом уже можешь юзать в гриву.

А на средних проектах некогда собирать, все должно быть под рукой - весь набор инструментов.

Чтобы написать, поставить заказчикам и высылать апдейты. Да, код можно целиком заменять, нет проблем, а базу кто будет обрабатывать, Пушкин? Или примочки для различных баз??? гыгыгы...
85. awk 714 28.05.12 14:23 Сейчас в теме
(84) fixin,
ВОт тем 1с и отличается от всякого рода шарпов, что там уже все готово.
Не смешите мои подковы. Я что бы работать с 1С держу на компе как минимум пять инструментов которых в 1С нет и никогда не будет.

По поводу привязки данных к формам - в 1с есть такие абстракции как набор записей регистра сведений, документ и т.п. В шарпе их надо писать с нуля, это время.


Здрасте... Вот после этого фиг объяснишь, что ООП и один эс не совместимы. Весь букет ароматов MVC в один флакон объектов 1С налили и хотят нормальный запах. Однако кроме как парфюмерной лавкой это пахнуть никогда не будет.

К тому же я видел формы джава (не скрипт). Убого - для того, чтобы прописать событие, нужно создавать новый класс-наследник. В результате в коде без ИДЕ не разберешься, получается нагромождение строк. Подход, ИМХО, неправильный, сравните, как описываются события форм в 1С и привязка к ним данных
Интересно, а как рыться в 1С файлах без конфигуратора? Там тем более не разберешься, так-как назначение обработчиков в коде редко засвечивается. А так разобраться очень даже можно, Только знаний трохи поболе треба.

Под средним понимаю аналог написанной с нуля конфы 1с.
Это из книжки "Простые приемы разработки", что ли? :)))

Мелкие проектики одноразовые долго не живущие можно хоть на аксессе написать.
Надо сообщить в казначейство. А то они написали на accessе.

А на средних проектах некогда собирать, все должно быть под рукой - весь набор инструментов.
Набор с опытом нарастает.

Чтобы написать, поставить заказчикам и высылать апдейты. Да, код можно целиком заменять, нет проблем, а базу кто будет обрабатывать, Пушкин? Или примочки для различных баз??? гыгыгы...
:) А про проекты установки и обновления не слышали? Там все просто.
86. fixin 3977 28.05.12 17:27 Сейчас в теме
(85) ну давайте поспорим, раз начали, до логического конца.

Не смешите мои подковы. Я что бы работать с 1С держу на компе как минимум пять инструментов которых в 1С нет и никогда не будет.

А я не держу. Что ты делаешь не так?

По поводу привязки данных к формам - в 1с есть такие абстракции как набор записей регистра сведений, документ и т.п. В шарпе их надо писать с нуля, это время.

Здрасте... Вот после этого фиг объяснишь, что ООП и один эс не совместимы. Весь букет ароматов MVC в один флакон объектов 1С налили и хотят нормальный запах. Однако кроме как парфюмерной лавкой это пахнуть никогда не будет.

Вы можете не распинаться, я изучал ООП в универе, т.к. по профессии - программист. И для РАД ООП нисколько не эффективнее АОП, которое по сути, используется в 1с.


Интересно, а как рыться в 1С файлах без конфигуратора? Там тем более не разберешься, так-как назначение обработчиков в коде редко засвечивается. А так разобраться очень даже можно, Только знаний трохи поболе треба.

В 1С лишнее гуано, типо служебного кода для оформления наследования, не отображается. Можно хоть в текстовом редакторе, да-да, без конфигуратора смотреть и понимать код событий. А все это мясо, которое выплевывает ИДЕ от шарпа, невозможно ни вручную написать, ни понять без ИДЕ, разве что после длительного программирования в этом шарпе. Неинтуитивно и непрозрачно, потому убого.


Под средним понимаю аналог написанной с нуля конфы 1с.
Это из книжки "Простые приемы разработки", что ли? :)))

Ну хотя бы домашнюю бухгалтерию или конфу по учету работ программистов, если вам нужны примеры.


Мелкие проектики одноразовые долго не живущие можно хоть на аксессе написать.
Надо сообщить в казначейство. А то они написали на accessе.

Можно и на Навижне написать, тот же аксесс. Вопрос в том, что на 1с быстрее при равных стартовых, как ни крути.


А на средних проектах некогда собирать, все должно быть под рукой - весь набор инструментов.
Набор с опытом нарастает.

О чем я и писал. Нужно потратить время, чтобы собрать инструменты. В 1С инструменты уже собраны до нас. Не спорю, если для шарпа кто-то опубликует готовый набор инструментов, может он и будет круче 1с, пока же разговор ни о чем...



Чтобы написать, поставить заказчикам и высылать апдейты. Да, код можно целиком заменять, нет проблем, а базу кто будет обрабатывать, Пушкин? Или примочки для различных баз??? гыгыгы...
:) А про проекты установки и обновления не слышали? Там все просто.

Товарищ выше упоминал про подобную приблуду для Май-скл. Но 1с позиционирует себя для работы с произвольной СУБД. В Шарпе есть универсальный проект установки и обновления? Чтобы можно было в любой момент базу перевести на другой СУБД?
Если он есть и он удобен - может быть, может быть... Если это заточка под конкретную СУБД, то 1С впереди шарпов и борландов всех. Потому что уровень абстракции выше - метаданные, а не таблицы.
87. awk 714 28.05.12 22:32 Сейчас в теме
(86) fixin,
А я не держу. Что ты делаешь не так?

Наверное, пишу под андроид, интеграцию с другими БД и т.д.
Вы можете не распинаться, я изучал ООП в универе, т.к. по профессии - программист. И для РАД ООП нисколько не эффективнее АОП, которое по сути, используется в 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. Но то как она это делает, назвать нормальной поддержкой можно только с натяжкой. Или по твоему перепил напильником версионника под блокировщик - это нормально?
89. hogik 432 29.05.12 03:46 Сейчас в теме
(86)
"Потому что уровень абстракции выше - метаданные, а не таблицы."(с)

Да, уж. ;-) В каждой конфигурации своя схема базы данных. Абстракция. :-) По уму должна быть одна схема базы данных (общая, отдельно существующая), а "конфигураций" множество. Тогда, глядишь, и не потребуется вносить мельчайшие изменения в нашем законодательстве в множество конфигураций и изобретать средства обмена типа КД. Может тогда и модульность появится...
88. hogik 432 29.05.12 00:01 Сейчас в теме
(79)(81)
"промежуточный уровень абстракции базы данных, чтобы через SQL-подобный язык работать с любой СУБД, или надо писать?"
"в 1с язык запросов одинаково пишется для любой СУБД"


Вообще, СУБД придумывали не для того, чтобы из приложения работать с любой СУБД. А для того, чтобы разные приложения могли работать с одной и той же (общей) информацией "понятной" любому приложению. А "уровень абстракции"(с) этому не способствует.
Возможность 1С работать с разными СУБД - чисто коммерческий ход. Чтобы снизить стоимость конечного продукта. Типа, если у покупателя уже есть некая СУБД, то её не надо покупать. С точки зрения конечного результата (создания ИС) - это обман покупателя.
91. AlexO 129 03.06.12 23:03 Сейчас в теме
(79) fixin,
2. Есть ли механизм поддержки изменения конфигурации, чтобы автоматом делать патчи потребителям программы, как в 1С с конфигурацией или надо писать?

какие в С# конфигурации? обновил и дальшей работаешь.
Зато приемственность - 100%.
Или теперь уже нигде, кроме 1С, программы не подлежат обновлению? :0
92. fixin 3977 03.06.12 23:33 Сейчас в теме
(91) если в базу данных ты добавил колонку и твое приложение на C# работает с этой базой и ты сделал поставки 10 клиентам, тебе надо написать патч, который добавит колонку в эти базы. 1с это делает автоматом, никакие патчи и скрипты обновления баз писать не надо.
93. AlexO 129 04.06.12 01:02 Сейчас в теме
(92) fixin,
тебе надо написать патч

какой еще патч?! автообновление через инет уже лет 20 как, с появлением мвассового инета.
А у 1с - это только-только введено "автоматически" (и то только "типовые" конфигурации) последние несколько лет.
94. fixin 3977 04.06.12 01:22 Сейчас в теме
(93) уважаемый, вдумайтесь, о чем вы говорите. Допустим, ваш новый код подразумевает что в таблице Table есть столбец ColumnNew.
Вы обновите код через интернет, а базу данных кто будет обновлять? Пушкин? Вам придется ручками писать этот скрипт.
Кроме того, при создании новой базы добавлять создание этой колонки.

Какое нафиг автообновление?
95. AlexO 129 04.06.12 21:35 Сейчас в теме
(94) fixin,
Вам придется ручками писать этот скрипт.
Кроме того, при создании новой базы добавлять создание этой колонки.

так и у 1с все тоже самое - все, что касается базы, все надо перегружать, и чтоб без пользователей. Т.е. идет то же обновление, что и скриптом добавить новую колонку в любую другую БД.
96. hogik 432 04.06.12 22:35 Сейчас в теме
(95)
Думаю, под абстракцией Сергей понимает, что ничего не надо делать ручками программисту. Т.е. он "халяву" обозвал умным термином. ;-)
Вот один из примеров действительной абстракции: http://www.omega.ru/ab/abstructure.html
Т.е., например, схема базы данных (в терминах СУБД) не меняется при изменении "предметной модели". Это, типа, если говорить упрощённо...
97. fixin 3977 04.06.12 23:51 Сейчас в теме
(95) нет, в 1с вы просто добавляете новое поле в метаданные, ручками. И не нужно заботиться о том, как будет обновляться база по метаданным, или как она будет создаваться с нуля по метаданным. Почуствуйте разницу.
98. O-Planet 6896 05.06.12 00:42 Сейчас в теме
(97) Это тоже не обязательно. В (96) пример. Такое легко реализовать в любой БД.

Вот упрощенный вариант структуры таблицы данных, позволяющей иметь любое число справочников произвольной структуры и менять эту структуру, когда вздумается:

ИмяСправочника,
ИдЗаписи,
ИдРодителя,
ИдВладельца,
ИмяПоля,
ЗначениеПоля,
ИнтерпретаторТипаПоля

;)
99. fixin 3977 05.06.12 01:04 Сейчас в теме
(98) только так почему-то никто не делает. и знаете почему? вопрос упирается в производительность такого решения, да-да... ;-)
100. O-Planet 6896 05.06.12 01:14 Сейчас в теме
(99) Догада! Гы-гы...
ПС Пордон. ГЕНИЙ!
Но на самом деле, делают, но не на 1С ;)
101. hogik 432 05.06.12 01:20 Сейчас в теме
(99)
"только так почему-то никто не делает"(с)
Я так делаю. И нет никакой проблемы с производительностью. Зато есть проблемы у т.н. сервера "приложений" - его просто нетУ. :-)
75. ValeriVP 28.05.12 11:15 Сейчас в теме
(73) Ты в своем высказывании про узость взглядов учел не все аспекты разработки, а именно ключевое слово:
Думаю что мало кто тут будет писать сложные проекты на С#.
65. Трактор 1199 23.05.12 17:50 Сейчас в теме
Читаю я статью и не понимаю каким боком она относится к защите. Алгоритм защиты не расписан. Даны примеры программ вроде "Превед, ведмед". Кто-то на Инфостарте уже публиковал "Хелло ворлд" на ста языках. Та публикация покруче была.
Лёгкость освоения С# это хорошо, но есть куча других языков и они имеют свои достоинства по отношению к С# (я читаю как "си решётка").
Думаю что мало кто тут будет писать сложные проекты на С#. И мало кто оценит его объектно-ориентированные прелести. Я как-то писал на пхп попутно изучая его. Показал web программисту. Он говорит "Ты классы используешь. А такого не понимаю." Люди живут без понимания того что такое класс и горя не знают и являются довольно хорошими специалистами.
66. nirbolz 30 23.05.12 18:24 Сейчас в теме
ух ты интересная идея, надо будет защитить свои конфы так, ну скоро 8.3 выходит, может чето выйдет интересного.
68. EliasShy 50 25.05.12 13:57 Сейчас в теме
Net проггеры собственные сборки нормально защитить не могут - издержки MSIL.

Как защитить от взлома Net проект - отдельные дебаты, далекие для тех, кто в этой теме пишет "круто, надо попробовать", а топикстартер предлагает этим способом защищать блоки 1с.

Чтобы нормально защитить свой 1с-код, необходимо если и писать, то на C++ (или VC++) без использования NET. А там все гораздо сложнее, и желание сразу попробовать отбивается.
70. vladen 83 25.05.12 16:39 Сейчас в теме
не регистрирует мне ДЛЛ с "кодебас" ((( Тут http://msdn.microsoft.com/ru-ru/library/wd40t7ad.aspx написано

"
...
Строгое имя состоит из удостоверения сборки, включающего ее простое текстовое имя, номер версии и сведения о языке и региональных параметрах (если они имеются), а также открытый ключ и цифровую подпись .....
...
"

хоть у кого то это все заработало?
71. agulaev 33 27.05.12 23:34 Сейчас в теме
(70) vladen, Все работает! (проверь пути, кавычки и слеши)
Автору - Зачет! Познавательно.
72. kmar 28.05.12 04:27 Сейчас в теме
Интереснейшая статья, почитать можно.
90. fixin 3977 29.05.12 11:03 Сейчас в теме
Предлагаю переместиться с нашим интересным холиваром сюда: http://forum.infostart.ru/forum1/topic62249/
MaxDavid; +1 Ответить
Оставьте свое сообщение

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    32321    0    ids79    40    

Обезличивание базы средствами Конвертации данных 2

Защита и шифрование v8 КД Бесплатно (free)

Быстро, просто, понятно обезличить нужные данные в любой базе.

14.06.2020    1822    0    Yashazz    20    

Расшифровка DataMatrix кода с пачки сигарет (табачная продукция)

Защита и шифрование v8 Россия Бесплатно (free)

Разбор считанного DataMatrix кода с пачки сигарет - какие символы за что отвечают. Декодирование МРЦ

07.06.2020    2434    0    Tasselhof    10    

Кодирование по алфавиту. Большие целые числа

Защита и шифрование v8 1cv8.cf Бесплатно (free)

А вы знали, что 1С умеет в очень длинные числа? Кодирование информации в строку по указанному алфавиту, возможен любой алфавит и не только. В тексте приведён алгоритм для кодирования последовательности байт в любой и из любого односимвольного алфавита.

14.05.2020    1169    0    mrsmrv    5    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    53482    0    pahich    82    

Имплементация алгоритма Keccak на языке 1С

Защита и шифрование v8 1cv8.cf Бесплатно (free)

Имплементация алгоритма Keccak на 1С версии 8.3.11, примеры функций SHA3-512, Keccak-512, HMAC-3, SHAKE256, cSHAKE256 и другие варианты параметров Keccak без внешних компонент.

07.05.2020    1799    0    mrsmrv    8    

SHA512 и HMAC512 на 1С 8 без использования внешних компонент

Защита и шифрование v8 1cv8.cf Бесплатно (free)

Имплементация алгоритма расчета Hash 512 с ключом и без. С ключом по алгоритму HMAC. Используются механизмы платформы начиная с версии 8.3.11.

29.04.2020    2356    0    mrsmrv    19    

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

Математика и алгоритмы Учет ТМЦ v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Особенности учета партионной системы при наличии двух количественных показателей.

26.03.2020    2874    0    lastcontra    4    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    44373    0    ildarovich    116    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    4176    0    randomus    18    

[После]Новогодние задачи

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    2854    0    Alxby    23    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    24296    0    YPermitin    24    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    65695    0    tormozit    27    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Сентябрьская серия статей про то, как начинающий разработчик Вася проходит путь от простой задачки к созданию своего механизма. На этот раз - открытие значения из текущей колонки.

02.09.2019    9215    0    SeiOkami    35    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    11283    0    ildarovich    19    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    13433    0    ids79    8    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    286184    0    Evil Beaver    173    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    40101    4    AlbinaAAA    27    

Как проводятся документы в типовых конфигурациях от 1С

Математика и алгоритмы Практика программирования Разработка v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    25617    0    skv_79    35    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    5158    0    vandalsvq    16    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    108263    0    bpc222    327    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    15365    0    Stepa86    33    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    22282    0    YPermitin    34    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    45779    0    ids79    20    

Решение транспортной задачи запросом Промо

Математика и алгоритмы v8 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    34628    10    bforce    22    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    13348    0    RonX01    65    

Организация хранения промежуточных данных

Математика и алгоритмы v8 Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    3960    0    scientes    1    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    7274    0    Oleg_nsk    96    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы v8 Бесплатно (free)

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    30269    5    juntatalor    49    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    24301    0    YPermitin    7    

Даем названия переменным: как префиксы экономят наше время

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

06.05.2019    6358    0    Designer1C    81    

Заметки по SQL: Срез последних - аналог запроса

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    10651    0    IVC_goal    7    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    49321    0    bpc222    51    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    12517    0    _ASZ_    33    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

У многих начинающих 1С программистов часто возникают вопросы про клиент-серверное взаимодействие в 1С и чтобы разобраться в непростых механизмах платформы, необходимо понять, что же такое контекст, для чего предназначены директивы компиляции, что представляют собой контекстные/внеконтекстные вызовы и как наиболее оптимально описывать прикладные задачи в модулях управляемых форм.

23.08.2018    36364    0    Rain88    46    

v8: Концепция минимального изменения конфигурации для легкого обновления Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

28.01.2013    37597    0    MarSeN    57    

Теорема номер тринадцать

Математика и алгоритмы v8 Бесплатно (free)

Использование математических методов для языка запросов.

15.03.2018    11854    0    vasilev2015    24    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Нейронные сети – не единственная модель, реализующая принципы машинного обучения. Есть еще байесовская модель, которая математически строже и определеннее, поскольку построена на надежном фундаменте теории вероятностей. Применению байесовского вывода к решению интересной теоретической задачи и посвящена данная статья. Слово "взлом" в заголовке использовано для привлечения внимания. Речь идет исключительно о математическом методе, показанном на примере знакомой всем задачи. 

12.03.2018    18671    0    ildarovich    19    

Танцы с бубном! Создаём демонстрационную базу

Защита и шифрование v8 Бесплатно (free)

В статье кратко расскажу Вам о моём опыте создания демонстрационной версии базы данных 1С и способах защиты кода.

08.02.2018    14883    0    user748289    41    

Пример выбора несколько обработчиков событий записи объекта для решения одной задачи Промо

Математика и алгоритмы v8 Бесплатно (free)

Данная публикация предназначена для начинающих разработчиков и является продолжением статьи "Обработчики событий при записи объектов. Зачем и что за чем?" (ссылка далее). Содержит пример использования несколько обработчиков событий для решения одной задачи и объясняется почему выбраны именно они.

27.09.2012    193890    0    AlbinaAAA    65    

Введение в CI для 1С

Математика и алгоритмы v8 Россия Бесплатно (free)

Значение роли тестирования при разработке ПО трудно переоценить, его применение позволяет повысить надёжность продукта и улучшить качество кода. Для продуктов для платформы 1С:Предприятие существует ряд инструментов для проведения тестирования, в том числе и от самого вендора. Но, также появились открытые инструменты, реализующие мировые практики проведения тестирования (проверки продукта), поддерживаемые сообществом. В этой статье описаны базовые принципы, которые необходимо понимать перед началом применения этих инструментов.

21.11.2017    23000    0    real_MaxA    22    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

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

12.10.2017    17521    0    for_sale    58    

Пишем игру Минер. Обработка событий ActiveX в 1С

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    14530    0    user621724_Dimav1979    12    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Обмен через XML Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    41663    0    1cspecialist    13    

Как я доступ на kb.1c.ru получал

Решение задач на 1С:Специалист Математика и алгоритмы v8 Россия Бесплатно (free)

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    25674    0    ikekoval    34    

Улучшение стандарта "Структура модуля"

Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

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

26.03.2017    14164    0    o.nikolaev    23    

"Распределение в запросе" или "избавляемся от перебора"

Математика и алгоритмы Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    32767    0    alexandersh    48    

Новые функции СКД 8.2.14 Промо

Математика и алгоритмы v8::СКД 1cv8.cf Россия Бесплатно (free)

Демонстрация новых функций СКД 8.2.14

29.06.2011    214157    0    fishca    51    

Планы обмена. Квитировать или гарантировать?

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Планы обмена предлагают использовать две стратегии удаления обработанных изменений: квитирование и гарантированная доставка сообщений. Как сделать правильный выбор?

12.12.2016    16800    0    zhichkin    9    

Некоторые принципы оптимизации запросов 1С (+SQL)

Математика и алгоритмы v8 Бесплатно (free)

Разработка нового функционала часто связана с созданием новых таблиц в базе и написанием запросов. Собственно, размышляя о запросах, мы и формируем в голове содержание таблиц, индексы и количество таблиц и индексов. Заранее можно уверенно рассуждать о том, какая нужна архитектура, если задачу удалось понять. На этом этапе важно привлекать свой опыт. Что же делать, если его нет? Как рассуждать о запросах и формате хранения?

17.11.2016    10522    0    ture    40