Запутывание кода 1С




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

62 Comments

  1. Rustig

    (0) зачем это нужно?

    Reply
  2. VmvLer

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

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

    Reply
  3. Rustig

    (0) понимаю, что хочется защитить свой продукт, но хотелось бы пофилософствовать на эту тему — насколько выигрышна такая стратегия разработки кода? всем заранее спасибо за предоставленные ответы

    Reply
  4. VmvLer

    (3) 100500 раз обсуждали тут, на мисте и пр..

    вывод — «запутывания кода» от лукавого.

    Reply
  5. brr

    (3) Иногда это единственная возможность получения денег за работу. Не будьте сказочным эльфом, ирл достаточно жадных упырей для которых кинуть кого то вроде спорта.

    Reply
  6. leoxz

    (1)для защиты своих разработок. Чтобы после определенной даты планируемой оплаты обработка перестала работать.

    Вам никогда не приходилось самим вытаскивать дебиторку с заказчиков?

    Да этот метод не даёт 100% гарантии защиты, можно байт код разобрать, но думаю не честный заказчик наврятли не заплатив одному программисту наймёт другого, чтобы он разбирался в защищённом коде. Тем более, что этот метод защиты занимает один клик.

    Reply
  7. Rustig

    (3), (5) так не работайте с такими, и всем рассказывайте про таких, отдайте конкурентам — много не потеряете… не доводите дебиторку до больших сумм… какие у вас примеры из жизни? у меня вот 120 тыс однажды полгода не платили, 60 тыс до сих пор и 5 тыс не заплатили…. но продолжать работать с ними — себе хуже делать….

    Reply
  8. Denis_CFO

    Название функции «ф2021()» уже само является обфускацией 🙂

    Reply
  9. leoxz

    (3)Можно открыто сказать что это не дает 100 % защиты — можно взломать через байт код (например если модуль исключен), если в форме там код исключить нельзя, значит можно посидеть и разобрать этот код (я так и сделал при анализе обработки [2 in 1] «Обфускация кода 1С» и «RegExp Тестер»).

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

    Reply
  10. leoxz

    (7)А что хорошего, когда вы подарили 60 тыс? Почему кто-то должен работать за бесплатно?

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

    «так не работайте с такими» — 100 % не угадаешь я такого способа не знаю….

    «и всем рассказывайте про таких» — мне не хочется тратить на это время, есть более интересные занятия.

    Reply
  11. leoxz

    (8)после выполнения обработки, еще интереснее))

    ,а если серьезно — 2021 это номер символа куда вставляется процедура.

    Reply
  12. Denis_CFO

    А дополнение к времени использования можно добавить:

    ТекстДемо = «»;
    Если КлиентНеНадёжен() Тогда
    ТекстДемо = » ПЕРВЫЕ 3 «;
    КонецЕсли;
    
    ТекстЗапроса = «Выбрать » + ТекстДемо + » ТМ.Ссылка Из Таблицы КАК ТМ»
    
    

    Показать

    Reply
  13. Denis_CFO

    (12) к этому:

    Комментарии и пожелания по улучшению обработки приветствуются.
    Reply
  14. leoxz

    (12)вы не написали самое главное — описание функции — КлиентНеНадёжен() )))

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

    Reply
  15. leoxz

    (13)Осталось сделать базу надежных заказчиков)) — это идея для следующей разработки))

    Reply
  16. Denis_CFO

    (14)

    описание функции — КлиентНеНадёжен() )))

    Так тут всё просто:

    З = Новый Запрос(«Выбрать П.Ссылка Из Документы.ПлатежноеПоручение КАК П ГДЕ П.Сумма = 150000 И П.Дата <= ДатаВремя(ТекущаяДата()) И П.Контрагент.ИНН = «12345567890»»);
    Возврат З.Выполнить().Выбрать().Пустой();
    
    Reply
  17. Denis_CFO

    (14)

    другой сценарий

    такое уже делал раньше. Потом стал клиентов лучше отбирать.

    Но тема интересная, в силу концепции 1С об открытости кода.

    Иногда это нужно.

    Reply
  18. leoxz

    (16)тогда, лучше отправлялось письмо президенту, о не добросовестном закачке — эффективнее))

    Reply
  19. SerVer1C

    Сколько уже можно про это говорить: обфускация исходника 1С без отклонения от потока выполнения — это почти бесполезное занятие. Для защиты надо обфусцировать п-код!

    Reply
  20. leoxz

    (19)подскажите такую обработку или методику для обфускации п-кода.

    Reply
  21. SerVer1C

    Тут кто на что горазд. Но есть и коммерческие решения, типа WiseAdvice.

    Reply
  22. leoxz

    (21)по вопросу вскрытия кода я уже отвечал выше, открыть можно. Вопрос только во времени. Сомневаюсь, что не честный заказчик не заплативший за разработку начнёт заниматься декомпиляцией кода 1с.

    Декомпилировать обфусцированный код, тоже то ещё удовольствие, все же имена переменных изменены.

    Reply
  23. leoxz

    (21)про WiseAdvice читал, netlenka1с тоже предлагает обфускацию п-кода. это коммерческие решения в живую их не использовал.

    Reply
  24. Rustig

    (10)

    А что хорошего, когда вы подарили 60 тыс?

    я 10 раз окупил потери, переместив акцент на работу с теми, кто платит.

    надо искать долгосрочные отношения и чтобы, когда работаете и не переживаете «залпатят/не заплатят».

    (10)

    «и всем рассказывайте про таких» — мне не хочется тратить на это время, есть более интересные занятия.

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

    (10)

    «так не работайте с такими» — 100 % не угадаешь я такого способа не знаю….

    риски есть в любых делах, просто минимизируйте их — разбейте проект на подзадачи с оплатой фактически выполненных работ. Поясните в устной форме, что надо проверить друг друга на состоятельность — вас на профпригодность, Заказчика на финансовую состоятельность.

    Reply
  25. Rustig

    (22) были случаи, когда модули паролились,в итоге в одной мед.программе я перестал использовать типовой календарь (сетку расписания) врачей, написал свою сетку расписания https://infostart.ru/public/664095/, таким образом родилось вполне адекватное решение на тех же самых регистрах, запись и чтение регистров я написал СВОИ

    как только вижу закрытый модуль, то сразу его обхожу — пишу свои методы, кроме случаев,

    когда работа связана с внешним оборудованием или матем. алгоритмами.

    Reply
  26. o.kovalev

    Самое главное это долгосрочные доверительные и дружеские отношения с заказчиком, тогда и запутывать ничего

    не не нужно будет.

    Если бы мне как заказчику такое принесли, то сомневаюсь на дальнейшее сотрудничество, пойди разбери что за «бомба» там вшита, а с ненадежными и дело иметь не нужно.

    Reply
  27. d.zhukov

    Как ваша программа поведет себя в строке типа

    Запрос = Новый Запрос

    ?

    Какие слова зашифрует, подскажите плз

    Reply
  28. d.zhukov

    (25)

    как только вижу закрытый модуль, то сразу его обхожу — пишу свои методы, кроме случаев,

    Главное чтоб ваш работодатель не знал, что вы изобретаете велосипед за его счет)

    p.s. про безопасность можете не писать. это далеко не всегда оправдывает подобные решения

    Reply
  29. leoxz

    (27)

    Какие слова зашифрует, подскажите плз

    i1414 = Новый Запрос

    или

    a763cfbb-f94f4c678e130e96a3a7f353 = Новый Запрос

    Замениться переменная на новое имя идентификатора.

    Reply
  30. d.zhukov

    (29)

    мя идентифик

    И ваша обработка поймет, что третье слово «Запрос» заменять не нужно? или ее надо как то обучить этому?

    Reply
  31. Darklight

    (22)Обычно нет нужды разбираться глубоко в обфускированных исходниках — когда они есть — для того, чтобы просто снять защиту — тут да, чисто финансовый вопрос — если разработка дорогая и очень нужная заказчику — он её вскрорет за существенно меньшие средства (либо своими силами — затрты на время своих сотруджников мало кто считает), либо сторонними.

    Конечно же, когда исходники восстановить автоматически не возможно (как в ряде коммерческих решений защиты), когда часть кода зашифрована и выполняется после расшифровки как «выполнить» (увы — создавать внешние обработки из потока пока нельзя — а было бы круто), или располагается во внешних компонентах, или, как шик — вообще вынесена в HASP ключ — где алгоритм и выполняется. Тогда да — такая защита действительно очень трудна для вскрытия — мало кто на это решится, даже для очень дорогих разработок!

    А для дешёвых разработок обфускация скорее будет являться отталкивающим фактором — если нет возмдности покапаться в исходниках — то проще взять другое решение или сделать самому. Остальные реальные покупатели купят в любом случае — будет или не будет решение иметь защиту — без разницы — т.е. итоговый доход с обфускацией может быть меньше, чем без неё — т.к. часть купивших будет одинаковая — но другую часть потенциальных покупателей обфускация отпугнёт от покупки.

    И помните — что более менее серьёзным заказчикам важно видеть код целиком — чтобы в нём не было встроенных «зловредов» — без этого они разработку могут даже не смотреть — отдел ИБ всё равно не пропустит!

    Reply
  32. Darklight

    Для обхода ограничений по комментариям с кавычками можно использовать замену строк исходного кода на текст обрабатываемый корректно и возвращать его обратно при получении результата. Например заменить «https://infostart.ru/public/959902/» на «СайтПроекта», а потом вернуть обратно.

    Поясните, пожалуйста, что тут за проблема и как она решается?

    Reply
  33. leoxz

    (30)Что Вас так удивляет?

    Например:

    Процедура СуперЗапрос()
    
    Запрос = Новый Запрос;
    Запрос.Текст = «ВЫБРАТЬ 1»;
    
    КонецПроцедуры

    Будет в результате:

     Процедура i10() i11=Новый Запрос;i11.Текст=»ВЫБРАТЬ 1″;КонецПроцедуры  
    Reply
  34. leoxz

    (32)Комментарии при обработке удаляются. строковые данные при этом должны остаться. как написать это условие на регулярных выражениях я еще не придумал.

    Получается у нас могут быть ситуации:

    Случай 1: //»Текст»
    Случай 2: «ВЫБРАТЬ 1  //Комментарий»
    Случай 3: «ВЫБРАТЬ 2» //Комментарий
    

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

    По случаю 2 получиться:

    «ВЫБРАТЬ

    без закрывающих кавычек, что приведет к ошибкам при работе.

    По случаю 3 получиться:

    «ВЫБРАТЬ 2»

    что тоже правильно.

    Резюмируя: комментарии удаляются полностью, там где они должны остаться для корректной работы программы и делается подмена (можно задать в настройках), а потом в результате заменяется обратно.

    В примере «https://infostart.ru/public/959902/» — будет заменен на «https: — что не корректно, поэтому он вначале заменяется на корректно обрабатываемую строку «СайтПроекта».

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

    Reply
  35. Rustig
  36. Elisy

    Вот пример еще одной обфускации, полученной из байт-кода

    Reply
  37. Yury1001

    Ну не плохо, не плохо. Делал себе такую лет 12-15 назад на 7.7, использовал в качестве имен переменных различные сочетания букв «ООООО» латиницы и кириллицы, получалось очень лампово. Потом пришел к тому, что кроме меня это никому не мешает.

    Ностальгия.

    Reply
  38. leoxz

    (25)

    (36)

    обфускации, полученной из байт

    Elisy, каким способом это было сделано?

    Reply
  39. leoxz

    (36)

    Вот пример еще одной обфускации, полученной из байт-кода

    Elisy, подскажите каким методом сделали такую защиту.

    Reply
  40. Elisy

    (39) Этот пример прилетел ко мне не онлайн-декомпилятор. Каким способом он был получен, не знаю.

    Reply
  41. МимохожийОднако

    Публикация обфускаторов и подобных методов защиты вне зависимости от качества почему-то вызывает ощущение шизофрении. Они конечно имеют право на жизнь, но как-то нехорошо и неуютно

    Reply
  42. leoxz

    (41)Наверно на это несколько причин:

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

    2) Средств защиты доработок сама платформа предоставляет мало (Пароль на модули и исключение исходных текстов из поставки).

    3) Проще разобраться в поведении системы когда имеются исходные коды.

    Но,

    1) Сама платформа себя хорошо защищает и не предоставляет исходные коды.

    2) Отраслевые конфигурации созданные даже партнерами 1С хорошо защищены.

    3) Например в ЗУП 3.1.10 появилась вставка:

    // Copyright © 2019, ООО 1С-Софт
    // Все права защищены. Эта программа и сопроводительные материалы предоставляются
    // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
    // Текст лицензии доступен по ссылке:
    // https://creativecommons.org/licenses/by/4.0/legalcode

    1С довольно щепетильно относиться к своим правам и понимает, что интеллектуальная собственность стоит денег. И будет свои права защищать.

    Поэтому, понятен ажиотаж в темах защиты разработок: с одной стороны платформа не дает 100% способов защиты исходных текстов, с другой и 1С и сторонние разработчики стремятся защитить свои разработки.

    Reply
  43. Region102

    1. Не работайте с клиентами без договора!!!

    2. Не работаете с клиентами без предоплаты!!!

    Вот вы разработали тиражное решение с закрытым кодом, вы его поддерживаете получаете +100500 млн рублей, а завтра бац и покинули этот мир. Думаю все ваши клиенты скажут вам огромное спасибо.

    Те кто шифруют код в принципе не понимают элементарных вещей, кто хочет кинуть или халявы, никогда не заплатит. Мне таких клиенты встречались, я даже думаю, что мои разработки по инету ходят и мои курсы на складчинах висят, но таковых всего 1-5% от общего числа. Чем больше вы даете бесплатно, тем больше вы получаете от жизни обратно.

    Reply
  44. d.zhukov

    (43)

    1. Не работайте с клиентами без договора!!!

    2. Не работаете с клиентами без предоплаты!!!

    1. вы о чем? o_O

    2. подскажите, плз. какую предоплату брать с клиента, чтоб заранее компенсировать вероятное выкладывание им моих работ на бесплатных для скачивания ресурсах?

    Reply
  45. Den75Ch

    (44) 100 стартмани

    Reply
  46. d.zhukov

    (43)

    Вот вы разработали тиражное решение с закрытым кодом, вы его поддерживаете получаете +100500 млн рублей, а завтра бац и покинули этот мир. Думаю все ваши клиенты скажут вам огромное спасибо.

    Те кто шифруют код в принципе не понимают элементарных вещей, кто хочет кинуть или халявы, никогда не заплатит. Мне таких клиенты встречались, я даже думаю, что мои разработки по инету ходят и мои курсы на складчинах висят, но таковых всего 1-5% от общего числа. Чем больше вы даете бесплатно, тем больше вы получаете от жизни обратно.

    Это ваше мнение, которое вам кажется верным, но с вами многие не согласятся, так как у них есть на это свое, обратное вашему, которое тоже является справедливым

    Reply
  47. Region102

    (44) разрабатывая интеллектуальную собственность, будте готовы к пиратству, или на вашем компьютере нет ни одной пиратской программы/книги? Еще раз повторю, те кто ищет пиратскую версию никогда не купят вашу лицензионную продукцию.

    Reply
  48. Region102

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

    Reply
  49. d.zhukov

    (47)

    или на вашем компьютере нет ни одной пиратской программы/книги?

    Те ребята еще более активно ведут борьбу с пиратством и используют системы шифрования гораздо более мощные чем мы)

    кто ищет пиратскую версию никогда не купят вашу лицензионную продукцию

    Множество примеров есть, когда пытались залесть в код декомпилятором, потом возвращались

    и покупали платную версию (отслеживал по никам на тематических форумах).

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

    Reply
  50. d.zhukov

    (48)

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

    нет вы не правы) поспешный вывод

    Reply
  51. Region102

    (49)

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

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

    (49)

    (отслеживал по никам на тематических форумах)

    Рад что на это у вас есть время

    (49)

    Те ребята еще более активно ведут борьбу с пиратством и используют системы шифрования гораздо более мощные чем мы)

    Общался с крупными разработчиками, конкретно из Jetbrains, пиратов они не любят, но относятся к ним спокойно.

    Reply
  52. d.zhukov

    (51)

    Общался с крупными разработчиками, конкретно из Jetbrains, пиратов они не любят, но относятся к ним спокойно.

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

    Рад что на это у вас есть время

    а без этого никак. нужно оценить риски и принять соотв.меры

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

    возможно. не знаком с вами)

    Reply
  53. leoxz

    (51)

    Общался с крупными разработчиками, конкретно из Jetbrains, пиратов они не любят, но относятся к ним спокойно.

    Что значит относятся к ним спокойно? — значит их исходные коды можно копировать и использовать?

    Коллеги, в данном вопросе мне нравиться пример 1С.

    — покажите мне исходные коды платформы, (к комментарию (46) ) ))

    — защита 1С (программные, физические), мы все знаем, что ее можно сломать, но 1С же от этого не начинает раздавать свои исходные коды в открытом виде.

    — например конфигурация ТОИР — попробуйте ее открыть)) там даже в коде написано «Если вы удалите эту проверку, это вам НЕ поможет, программа все равно работать не будет…».

    Если крупные фирмы защищают свою интелектуальную собственность, почему это не должны делать фрилансеры и программисты 1С?

    Reply
  54. Region102

    (53) вы либо реально не понимаете контекста, либо утрируете. Имеется ввиду программное обеспечение разработанное с помощью 1С, или IDE от Jetbrains. Давайте ещё сайты начнём шифровать.

    Уверен, что ПО с открытым исходным кодом зарабатывает больше. Так как клиент зачастую выбирает отрытые коды, когда есть альтернатива.

    Reply
  55. Region102

    (53) покажите мне закрытый исходный код в 1С:ERP

    Reply
  56. leoxz

    (55)Зачем закрывать код в ERP?

    1C ERP защищает по другому, в коде есть вставка:

    // Copyright © 2019, ООО 1С-Софт
    // Все права защищены. Эта программа и сопроводительные материалы предоставляются
    // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
    // Текст лицензии доступен по ссылке:
    // https://creativecommons.org/licenses/by/4.0/legalcode

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

    Reply
  57. leoxz

    (54)

    Давайте ещё сайты начнём шифровать.

    В таком случае покажите мне исходные коды движка Инфостарт.

    Reply
  58. Region102

    (56)

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

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

    При наличии конкуренции, и похожего функционала, клиент купит разработку с открытым кодом. Вопрос про открытый код мне задают примерно 80-90% покупателей моих разработок.

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

    Reply
  59. Region102

    (57) вот мне интересно, вы реально думаете, что на инфостарт мир клином сошелся? Вы с web разработкой знакомы? Судя по исходному коду главной страницы инфостарт, сайт сделан на «движке» Битрикс. Идете https://www.1c-bitrix.ru/download/cms.php по этой ссылке и скачиваете исходники движка и тыкните мне там пальцем в закрытый код. Хотя вы наверное опять напишите, что у вас нет штата юристов.

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

    Люди закрывающие свои разработки не понимают, что пытаясь ухватить максимум вы упускаете другие возможности. И ваш продукт существует на рынке ровно до тех пор пока не появится конкурент с открытым исходным кодом.

    Желаю вам удачи, ведь разработать продукт это одно, а вот суметь продать его — это совершенно другое!

    Reply
  60. vis_tmp

    Извините, если было описано, но я не нашёл — подходит ли обработка для модулей форм, отчетов и обработок в т.ч. внешних ?

    Reply
  61. leoxz

    (60)

    Извините, если было описано, но я не нашёл — подходит ли обработка для модулей форм, отчетов и обработок в т.ч. внешних ?

    Обработка работает только с текстом модулей (не меняет сами отчеты и обработки).

    Модули форм с директивами компиляции обрабатываются. Остальные модули так же обрабатываются.

    Здесь важно другое, часть идентификаторов не должна заменяться.

    Например для внешней обработки, нельзя заменять имена реквизитов обработки (чтобы в модуле с ней корректно работать). При обработке модуля обычной формы нужно оставить идентификаторы функций модуля без изменения, чтобы к ним можно было обратиться — за этим нужно следить и отключать изменение некоторых идентификаторов.

    Чтобы каждый раз не проверять список не изменяемых идентификаторов их можно описать в параметрах в тексте модуля через парметр «GlobalVar »

    //#GlobalVar Реквизит1, Реквизит2, Реквизит3, Функция4
    Reply
  62. vis_tmp

    (61)Спасибо, вроде бы, понятно

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *