Ситуация, когда после завершения договора на разработку заказчик обнаруживает в конфигурации 1С «запутанный» код (обфускацию), встречается довольно часто. Это вызывает множество вопросов: считается ли такой код открытым, нарушает ли это авторские права и как заставить исполнителя вернуть читаемые исходники? В данной статье мы проанализируем ситуацию с юридической и технической точек зрения и разберем по шагам план действий по восстановлению контроля над системой.
Обфускация — это намеренное приведение исходного кода программы к виду, сохраняющему функциональность, но крайне затрудняющему чтение, анализ и модификацию человеком. В среде 1С это обычно достигается автоматизированными средствами, которые меняют осмысленные имена переменных на бессмысленные наборы символов и превращают логическую структуру в «спагетти-код» с использованием операторов Перейти.
Рассмотрим пример типичного обфусцированного модуля, который формально является открытым текстом, но фактически не поддается поддержке:
Функция ___a_() Экспорт
Перейти ~a__;
~___a:Перейти ~_a_;
~_a:Перейти ~__a;
~__a__:Возврат "Проверка ""нетленки"" на наличие в тексте ""ковычек""";
~__a:Перейти ~___a;
~_a___:Возврат -1;
~__a_:Возврат Новый СписокЗначений();
~a__:Перейти ~_a;
~a___:Возврат ИСТИНА;
~_a__:Возврат "";
~_a_:Перейти ~a___;
КонецФункции
Как мы видим, здесь используются штатные возможности платформы 1С, однако проанализировать ситуацию и внести изменения в такой алгоритм без деобфускатора практически невозможно.
Выясним, нарушает ли исполнитель закон, передавая такой код. Здесь ключевое значение имеет текст договора и Технического задания (ТЗ). Если в ТЗ прямо указано, что конфигурация должна быть выполнена с открытым исходным кодом, то обфускация может быть признана ненадлежащим исполнением обязательств.
Рассмотрим важные юридические нюансы:
Если исполнителем является официальный партнер фирмы «1С» (франчайзи), ситуация для заказчика упрощается. Фирма «1С» предъявляет жесткие требования к качеству кода, который пишут партнеры. Существует «Система стандартов и методик разработки», где четко прописано, что идентификаторы (переменные, процедуры) должны быть понятными. Например, вместо а1 должно быть СуммаДокумента.
Использование обфускатора в заказной разработке — это грубое нарушение партнерского договора. Жалоба в контрольную группу фирмы «1С» (отдел «К») может привести к серьезным санкциям для франчайзи, вплоть до лишения статуса.
Если вы обнаружили обфускацию, разберем по шагам, как правильно действовать:
Шаг 1: Проверка договора и ТЗ. Найдите все упоминания слов «открытый код», «исходный код», «сопровождение сторонними специалистами». Даже если четких критериев оформления кода нет, сам факт наличия ТЗ на разработку подразумевает передачу пригодного к использованию продукта.
Шаг 2: Фиксация состояния. Пригласите независимого специалиста или эксперта, который задокументирует, что код является нечитаемым и не соответствует стандартам разработки 1С. Это пригодится для суда.
Шаг 3: Переговоры с руководством исполнителя. Зачастую обфускация — это личная инициатива обиженного программиста, о которой руководство франчайзи может не знать. Сообщите им, что вы намерены подать официальную жалобу в фирму «1С» и обратиться в суд.
Шаг 4: Досудебная претензия. Подготовьте официальную претензию. В ней укажите, что работа выполнена ненадлежащим образом, так как переданный код не позволяет осуществлять поддержку продукта, предусмотренную договором. Требуйте предоставления оригинальных (необфусцированных) модулей в течение определенного срока.
Шаг 5: Обращение в 1С. Напишите письмо на адрес k@1c.ru с подробным описанием ситуации, приложив копии договора и примеры «запутанного» кода. Фирма «1С» дорожит репутацией и часто выступает медиатором в таких спорах.
Пока идут юридические споры, проанализируем ситуацию с технической стороны:
Перейти и заменить _а1 на Переменная_1. Смысл кода это не вернет, но сделает его хотя бы минимально пригодным для отладки через Табло и Стек вызовов.Обфускация кода в заказной разработке 1С при условии договора на «открытый код» — это недобросовестная практика, граничащая с правонарушением. Посмотрим на итог: наиболее эффективным методом борьбы является сочетание официальной претензии, угрозы жалобы в фирму «1С» и поиск человеческого контакта с исполнителями. Как показывает практика, при грамотном давлении оригинальные исходники находятся «чудесным образом» в течение нескольких дней.