При разработке и адаптации систем на базе 1С часто возникает соблазн не изобретать велосипед, а позаимствовать готовый функциональный блок из другой конфигурации. Например, если в «1С:Бухгалтерии» (БП) функционал учета бланков строгой отчетности (БСО) реализован минимально, а в «1С:Бухгалтерии государственного учреждения» (БГУ) он представлен полноценной подсистемой. Разберем подробно, какие юридические и технические последствия влечет за собой такой перенос, и как сделать это правильно.
Рассмотрим ситуацию с точки зрения закона. Согласно Гражданскому кодексу РФ, любая компьютерная программа является объектом авторского права и защищается так же, как литературное произведение. Исходный код, структура метаданных (справочники, документы, регистры) и даже экранные формы являются интеллектуальной собственностью правообладателя — фирмы «1С» или ее партнеров.
Проанализируем Лицензионное соглашение (EULA). Оно дает пользователю право модифицировать **приобретенную** программу для своих нужд. Однако это право не распространяется на программы, лицензию на которые пользователь не покупал. Если мы возьмем 80% кода из БГУ и перенесем его в БП, не имея купленной коробки БГУ, это будет квалифицировано как «переработка программы» без разрешения правообладателя.
Многие ошибочно полагают, что изменение имен переменных или добавление префиксов в названия процедур (например, превращение ПроцедураРасчета в ПроцедураРасчета1) делает код «новым» или «самобытным». Выясним причину, почему это не так: при проведении судебной технической экспертизы специалисты используют инструменты сравнения алгоритмической логики. Если структура запросов, последовательность вызовов и логика обработки данных совпадают, эксперт признает это плагиатом.
Важный момент: Чтобы легально использовать фрагменты кода из другой конфигурации, организация должна владеть лицензиями на обе программы — и на ту, куда переносится код, и на ту, из которой он заимствуется. При наличии обеих лицензий вы имеете право комбинировать их функционал для автоматизации деятельности внутри одной организации.
Посмотрим на техническую сторону процесса. Современные конфигурации 1С строятся на базе библиотек, таких как БиблиотекаСтандартныхПодсистем (БСП), БиблиотекаПодключаемогоОборудования (БПО) или БиблиотекаЭлектронногоДокументооборота (БЭДО). Это создает ряд сложностей:
ПланыВидовХарактеристик, роли и параметры сеанса. Простой перенос объектов метаданных приведет к тому, что система выдаст ошибки при компиляции, так как не найдет необходимых зависимостей в целевой конфигурации.ОбщегоНазначения.ЗначениеРеквизитаОбъекта(), а в целевой базе этот метод имеет другие параметры или вообще перемещен в другой модуль, система «упадет».Разберем вопрос использования БСП. Существует мнение, что это «открытый» код, который можно брать всем. На самом деле, право на использование БСП имеют только:
Использование кода БСП в полностью самописных конфигурациях без наличия легальной «основной поставки» также является нарушением лицензионных условий.
Если вам все же необходимо внедрить функционал из БГУ в БП, проанализируем наиболее безопасные и законные пути решения этой задачи.
Самый простой и дешевый способ «очистить» совесть и юридические риски — купить базовую версию конфигурации-источника (в нашем примере — «1С:БГУ Базовая»). Стоимость базовой версии невелика, но ее наличие дает вам законное право изучать код и использовать его фрагменты в своих разработках в рамках той же организации. Однако помните, что для разработки удобнее иметь версию ПРОФ, так как в базовых версиях функционал конфигуратора ограничен.
Чтобы не снимать основную конфигурацию («1С:Бухгалтерия») с поддержки, крайне рекомендуется оформлять весь переносимый функционал в виде Расширения (.cfe). Разберем преимущества этого метода:
ОбщегоНазначения или ИнформационнаяБазаВызовСервера изменились.Вместо того чтобы переносить 80% кода «как есть», проанализируйте алгоритм. Часто бывает эффективнее написать свою упрощенную версию, используя только ключевую логику расчета или структуру хранения данных, но реализуя ее на базе механизмов, уже имеющихся в вашей целевой конфигурации (БП). Это значительно снизит количество внешних зависимостей.
Предположим, мы переносим процедуру формирования печатной формы БСО. Рассмотрим, на что стоит обратить внимание в коде:
// Пример заимствованного кода, требующего адаптации
Процедура ПечатьБСО(МассивОбъектов, ПараметрыПечати) Экспорт
// В БГУ может использоваться специфический модуль ГИС_ГМП или специфические учетные механизмы госсектора
Если БГУ_Сервер.ЭтоУчреждениеГосударственное(Объект.Организация) Тогда
// Данный код в БП никогда не сработает и вызовет ошибку
КонецЕсли;
// Рекомендуется заменить на универсальные вызовы БСП, которые точно есть в БП
ДанныеОбъектов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивОбъектов, "Номер, Дата, Организация");
КонецПроцедуры
Выясним, что мы сделали: мы заменили специфический вызов БГУ_Сервер на стандартный метод ОбщегоНазначения из БСП. Такой подход делает код более жизнеспособным в новой среде.
Резюмируя наше исследование, можно выделить три главных правила:
Соблюдение этих правил позволит вам создать стабильную и юридически чистую систему автоматизации.