договор isbl что такое

ISBL для чайников и не только

Опубликовано:
5 декабря 2017 в 13:01

Несколько слов перед тем, как начать

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

Как уже было сказано ранее, ISBL – встроенный в платформу IS-Builder высокоуровневый интерпретируемый язык программирования, предназначенный главным образом для описания алгоритмов решения прикладных задач. Что это значит? В первую очередь то, что внутри системы DIRECTUM на ISBL можно сделать всё (ну или почти всё, поскольку существует такая вещь, как ограничения платформы) при наличии хотя бы небольшого опыта в программировании. Но и отсутствие такого опыта серьёзным препятствием для изучения ISBL не станет: у него несложный синтаксис и развитая документация. Опытных же разработчиков порадует встроенный редактор текста ISBL с развитым CodeInsight и отладчик с возможностью отслеживания длительности выполнения фрагментов кода.

Особенности ISBL

Как всякий уважающий себя язык программирования, ISBL включает в себя поддержку констант, переменных, многомерных массивов, функций, циклов и операторов ветвления. Плюсом ко всему этому прилагается возможность использования COM-объектов, что позволяет программно работать, например, с документами MS Word и Excel, а в последние версии входит библиотека NPOComputer.DocumentProcessing.dll, которую можно применять для работы с документами Open Office и Libre Office.

Основной синтаксис

С чего начинается знакомство с новым языком программирования? Разумеется, с его синтаксиса, без знания которого будет затруднительно написать даже классический вывод на экран строки «Hello, world!». И у ISBL, как уже упоминалось, синтаксис довольно прост.

Комментарии

Сам по себе факт наличия такого элемента, как комментарии, вряд ли нуждается в разъяснениях. Комментарии позволяют как раскрыть туманный смысл участка выполняемого кода, так и временно заблокировать его выполнение без удаления. ISBL поддерживает комментарии двух видов:

Типы данных, переменные и константы

Для того, чтобы объявить и инициализировать переменную, в неё достаточно записать любое значение. При этом явно указывать тип данных в большинстве случаев не требуется, так как ISBL поддерживает динамическую типизацию. Это означает, что переменная будет иметь тип, определяемый присваиваемым значением. Указать тип переменной можно и явно (например, для корректной работы CodeInsight), но только если определяемый тип данных не является простым. Ниже перечислены основные типы данных, используемые в ISBL:

Строковый. Может содержать произвольное количество символов, заключённых в кавычки или апострофы:

Константой называется любое постоянное в рамках определённого участка кода значение. В ISBL константы делятся на явные (заданные разработчиком) и системные (зарезервированные имена со строго определёнными значениями). Системные константы – это NULL, nil, FALSE, SYSREQ_NAME и т.д.

Структуры данных

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

Подробнее об этих функциях и параметрах, которые они принимают на входе, можно прочесть в справке по ним в компоненте «Функции ISBL».

Операторы

Данные любого типа бессмысленны, если ими нельзя манипулировать: читать, изменять, записывать, создавать и удалять. Для базовой работы с данными в ISBL поддерживаются следующие операторы:

Помимо этого, в ISBL поддерживаются операторы ветвления и цикла:

Такой цикл можно экстренно прервать, используя ключевое слово exitfor.

А также есть две конструкции для обработки исключений:

Подробнее обработка исключений с их помощью будет разобрана в следующей статье, а пока можно отметить, что разница между ними заключается в том, что вычисления блока except выполняются только при возникновении исключения в блоке try, а вычисления блока finally выполняются всегда, независимо от возникновения исключений в блоке try.

Встроенные функции

Классически, функция в программировании – это именованный блок кода, который может вызываться по своему имени из других частей кода несколько раз. В ISBL есть множество встроенных функций и возможность создания собственных в компоненте «Функции ISBL». Для большинства встроенных функций есть справка, просмотреть которую можно по нажатию Ctrl+F1 из редактора текстов ISBL, установив перед этим курсор на имя функции.

Объекты и объектная модель

Значительным преимуществом ISBL является уже упомянутая выше возможность работы с COM-объектами. Это позволяет обратиться как к объекту, скажем, MS Word из текста вычислений на ISBL, так и к объекту DIRECTUM из текста каких-либо внешних вычислений. Соответственно, с точки зрения разработчика ISBL, все объекты можно поделить на два вида: внутренние, составляющие объектную модель IS-Builder, и внешние, например MS Excel. Каждый объект имеет свой собственный набор свойств и методов для работы с ним. Синтаксис обращения к методам и свойствам объектов в ISBL ничем не отличается от такового в других ЯП:

Внутренняя объектная модель IS-Builder позволяет работать с практически любыми элементами системы DIRECTUM: электронными документами и подписями, записями справочников, задачами, пользователями и даже элементами интерфейса. Подробный список доступных объектов содержится в справке по ссылке: https://club.directum.ru/webhelp/directum/5.5/index.html?om_obekty_directum.htm.

Редактор текста ISBL

Для того, чтобы программисту на ISBL было немного легче и приятнее работать, в IS-Builder есть встроенный редактор текстов на ISBL. От обычного текстового редактора его отличает:

Отладчик ISBL

Процесс отладки и альфа-тестирования кода на ISBL был бы невыносим без возможности построчного выполнения кода с отслеживанием значений переменных. Такую возможность предоставляет отладчик ISBL – утилита STDbg.exe. Помимо непосредственно отладки он также позволяет анализировать производительность вычислений – на отдельной вкладке «Профилирование» разработчик может посмотреть, сколько времени выполняется любой фрагмент кода, и при получении неудовлетворительных результатов оптимизировать вычисления.

Вместо заключения

Всё вышесказанное представляет собой довольно сжатый обзор возможностей ISBL. Его имеющиеся преимущества, такие как низкий порог вхождения, хорошая документированность и широкие возможности модификации любых систем на базе IS-Builder, делают его практически идеальным инструментом сопровождения этих систем, доступным как «чайникам», так и их более продвинутым коллегам.

Источник

Функциональное программирование на ISBL

Опубликовано:
6 апреля 2010 в 18:37

Кто здесь?

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

В чем соль?

Всё есть функция

Функциональное программирование рассматривает любую сущность программы как функцию. Например, константа – это функция, возвращающая константное значение.

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

«Нет!» циклам

Чистое ФП категорически отвергает любое применение циклов. Вместо них применяется либо рекурсия, либо функции обработки списков (например, функции для обработки диапазонов в Excel).

Анонимные функции

Поскольку в ФП часто передаются функции в качестве аргументов и возвращаемого значения, то очень ценной становится возможность конструирования функций прямо по ходу, без предварительного их объявления.

Pro et contra

Компактность, верифицируемость и сложность

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

На Python это будет выглядеть следующим образом:

Производительность и масштабируемость

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

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

Да кому нужен этот неуловимый Джо?

В настоящее время ФП используется в основном для нишевых решений, например:

А что у нас?

Мы будем рассматривать только некоторые приемы ФП: функции работы со списками (отказ от циклов) и анонимные функции (получаемые за счет применения динамического ISBL).

Соглашения

Основной тип данных, для которого применяются приемы ФП, это список. Под списком в случае разработки на IS-Builder могут пониматься:

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

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

_a – элемент первого списка;

_b – элемент второго списка и т.д.;

__Var – переменная окружения с именем Var.

Конструирование вызовов

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

Map – преобразование списка

Функция Map() предназначена для преобразования списка поэлементно. Имеет два параметра:

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

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

Для возведения элементов списка в квадрат, достаточно поменять

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

MapC («Map with Closures») – функция, аналогичная Map, но распознающая ссылки на переменные окружения.

Reduce – сворачивание (редуцирование) списка

Функция Reduce() предназначена для сворачивания списка в скалярную величину. Имеет два параметра:

Функция применяет указанное выражение к первому и второму элементам списка. Потом то же самое выражение к результату и третьему элементу, и т.д. В результате, как правило, получается скалярное выражение.

Сумма элементов массива:

Произведение элементов массива:

Конкатенация элементов массива:

Filter – фильтрация списка

Функция Filter() предназначена для фильтрации списка. Имеет следующие параметры:

Функция возвращает список составленный из тех элементов исходного списка, которые удовлетворяют указанному условию.

Отфильтровать положительные элементы массива:

Пример

Все вышеописанные арифметические вычисления любопытны, но хотелось бы, конечно, проверить работу ФП на чем-то более приближенном к действительности. Рассмотрим такую задачу:

Необходимо экспортировать выбранные пользователем «последние» документы. При этом:

Решение

Вместо заключения

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

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

Источник

Язык ISBL

Опубликовано:
29 марта 2011 в 13:25

В предыдущей статье мы рассматривали компоненты разработчика в IS-Builder и выяснили, что IS-Builder предоставляет широкие возможности по разработке и настройке и по сути является платформой для крупных корпоративных систем управления предприятием. Одним из свойств характеризующих IS-Builder как инструмент разработки является наличие мощного внутреннего языка программирования – ISBL (IS-Builder Language). Именно ему будет посвящена данная статья.

Язык ISBL – встроенный в платформу IS-Builder высокоуровневый интерпретируемый язык программирования, предназначенный для описания алгоритмов функционирования прикладных задач. Синтаксис языка напоминает смесь разных языков, таких как: Basic, 1С и пр. В языке ISBL используются конструкции, как в традиционном английском варианте, так и на русском языке. Если вы имеете хотя бы небольшой опыт в программировании, то разобраться в тонкостях разработки программ на ISBL вам не составит большого труда.

ISBL как и любой высокоуровневый язык программирования содержит все основные конструкции: константы, переменные, многомерные массивы, циклы, операторы ветвления, функции, комментарии и пр. Важной особенностью языка является возможность работы с COM-объектами. Это позволяет, например, программно запустить Microsoft Excel, создать в нем новый документ и добавить в него произвольную информацию.

Попробуем разобраться в особенностях синтаксиса ISBL рассмотрев простой пример.

Комментарии

Первой строкой нашего примера идет комментарий. В тексте программы часто бывает необходимо прокомментировать выполнение участка программы или временно блокировать выполнение определенного кода. Для этих целей используются комментарии. В языке ISBL есть поддержка комментариев двух видов:

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

Вообще, язык ISBL, является языком с так называемым свободным типом данных Variant. Это означает, что переменная будет иметь тип, который определяется типом присваиваемого значения. Каким либо специальным образом тип переменной в тексте программы не объявляется. Рассмотрим возможные типы значений переменных:

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

Строковый тип. Может содержать произвольное количество символов заключенных в кавычки или апострофы.

Дата и время.Содержит значение даты и времени в секундах. Для вывода значения можно использовать следующий формат “d[d].m[m].[yy[yy] hh[:nn[:ss]]]”

Логический тип. Используется для представления логических значений

Константы

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

Полный список системных констант можно найти в справочной системе, в разделе «Объектная модель DIRECTUM» > «Системные константы ISBL».

Массивы

Пример обращения к элементам массива:

Подробнее работа с массивами будет рассмотрена в следующих статьях.

Операции

После рассмотрения типов данных логично было бы рассмотреть операции, которые можно проводить с различными типами данных. Относительно нашей программы, можно привести пример из шестой строки, где проходит объединение строк Str3 = Str3 & «A». Рассмотрим подробнее типы операций используемые в ISBL:

Примечание: Для сравнения дат необходимо использовать специальную функцию DateDiff.

Операторы

В первом случае исключение, возникшее в блоке [try statements], гасится, выполнение блока прекращается, а управление передается в блок [except statements]. Это позволяет обработать исключение без прекращения работы вычисления. Во втором случае при возникновении исключения в блоке [try statements] выполнение блока прекращается, само исключение не гасится, но перед генерацией исключения будут выполнены операторы блока [finally statements]. Это позволяет в случае ошибки выполнить вычисление, в котором будут гарантированно освобождены объекты, созданные в блоке [try statements].

Функции

Функция, в программировании — это именованная часть программы, которая может вызываться из других частей программы нестолько раз. В ISBL встроено множество функций позволяющих значительно упростить процесс создания программ. Кроме того есть возможность создания собственных функций. Так, например в нашей программе для подсчета количества символов в строке использовалась всего одна функция Length(Str3). Рассмотрим еще несколько примеров наглядно демонстрирующих действие функций:

Посмотреть справку по определенной функции можно нажав комбинацию клавиш Ctrl+F1, предварительно установив курсор на имени функции.

Объекты

Большим преимуществом ISBL является возможность работы с COM объектами. Все объекты можно разделить на две категории:

У каждого объекта есть определенный набор методов и свойств используемых для работы с объектом. Так, например, всю необходимую информацию об объектах DIRECTUM можно посмотреть в справочной системе, в разделе «Объектная модель DIRECTUM». Информацию о внешних объектах нужно искать в соответствующей документации по этим объектам. Для обращения к свойствам и методам объектов в IS-Builder используется следующий синтаксис:

В данном примере мы обращаемся к фабрике электронных документов IEDocumentFactory с помощью метода GetObjectById() в качестве параметра передавая уникальный ИД документа зарегестрированного в системе. В результате выполнения данного кода в переменной Edoc будет содержаться об ъ ект-документ IEDocument. Следующим шагом будет получение реквизита, за это отвечает свойство Requisites() документа EDoc. В качестве параметра в свойство Requisites() передается системная константа SYSREQ_EDOC_NAME. Из справочной системы выясняем, что константа содержит значение «ISBEDocName». Это соответствует реквизиту с наименованием электронного документа. После выполнения данного метода будет получен об ъ ект-реквизит IRequisite, если быть точнее IStringRequisite. Чтобы получить значение реквизита в виде строки мы обращаемся к свойству AsString об ъ екта-реквизита.

Более подробно обектная модель IS-Builder и работа с об ъ ектами будет рассмотрена следующих статьях.

Встроенный редактор текста ISBL

В IS-Builder есть встроенный специализированный редактор текстов, позволяющий значительно упростить процесс написания программ на ISBL. Важными особенностями, отличающими встроенный редактор от обычного текстового редактора, являются:

Начиная с DIRECTUM 5.1 функционал редактора вычислений расширен. Для упрощения разработки на ISBL добавлены подсказки по объектной модели:

Кроме того, в версии DIRECTUM 5.1 справочная система переведена в веб-формат. Это значит, что:

Документация в формате chm и pdf, как и ранее, будет поставляться на диске.

Отладчик

Отладчик позволяет выполнять трассировку вычислений на ISBL, отслеживать стек вызовов, значения переменных вычисления и окружения. В DIRECTUM 5.1 отладчик получил развитие и кроме знакомых всем функций отладчика теперь позволяет анализировать код вычислений и выявлять в нем узкие места, негативно сказывающиеся на производительности вычислений: неоптимальные прикладные запросы, циклы с большим количеством итераций и «тяжелым» телом и так далее. Подробнее об отладчике можно почитать в этом материале.

Заключение

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

Источник

«Что такое соглашение NDA и как оно защищает компанию от потери конфиденциальной информации?» Евгений Карноухов для «Юриста компании»

В современном мире информация – один из самых важных ресурсов, который может использоваться как во благо, так и во вред. Финансовый урон, которые наносят утечки конфиденциальной информации, могут существенно подкосить, а иногда и полностью разрушить бизнес. В России при этом возникла печальная динамика по росту числа таких инцидентов. По данным исследований InfoWatch в более чем половине случаев виновными оказываются «внутренние нарушители», то есть рядовые сотрудники или топ-менеджмент компании. И хотя чаще всего причиной «сливов» становится простая некомпетентность в сфере информационной безопасности, существует опасность и намеренного разглашения коммерческой тайны. Чтобы избежать подобной ситуации, бизнесу стоит воспользоваться NDA.

Что такое NDA

Термин NDA (non disclosure agreement) заимствован у зарубежных коллег и означает буквально «соглашение о неразглашении». Под его «защиту» попадают разные данные, но в широком смысле — любая конфиденциальная информация, относительно которой стороны установили особый режим ее распространения, частичный или полный запрет такового. Чаще всего инициатором соглашения становится компания или гражданин, которые передают важную для них информацию, чтобы не допустить ее последующее разглашение. Наибольшей популярностью NDA пользуется во время реализации инвестиционных контрактов, покупки активов, сделок слияния и поглощения, переговоров по поводу заключения договоров. Подобные соглашения также востребованы в IT-индустрии и для регулировки правоотношений между работодателем и его сотрудниками.

Вопреки расхожему мнению, предметом NDA не всегда становится именно коммерческая тайна, понятие которой отнюдь не идентично термину «конфиденциальность информации». Также следует отметить принципиальные отличия в правовой природе NDA, заключенных между компаниями и ее сотрудниками или компаниями и контрагентами. Их правовое регулирование различается — первые основываются на трудовом законодательстве, вторые — на гражданском.

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

Системный анализ норм гражданского законодательства позволяет прийти к выводу о том, что для NDA применима простая письменная форма. Следует также отметить, что NDA в условиях делового оборота зачастую не оформляется в виде отдельного контракта, а имплементируется в текст основного договора как «оговорка о неразглашении», являясь по сути его отдельным разделом (иногда довольно объемным по своему содержанию). Все же в классическом понимании NDA – это составленное в простой письменной форме соглашение сторон в виде отдельного документа, требования к содержанию которого определяются, исходя из его предмета, сторонами самостоятельно или с учетом установленных законом требований.

Какие требования к содержанию соглашения о неразглашении?

Ответ на данный вопрос зависит от того, является ли предметом «Соглашения о неразглашении» конфиденциальная информация, относящаяся именно к коммерческой тайне. Дело в том, что согласно статье 432 ГК «договор считается заключенным, если между сторонами, в требуемой форме, достигнуто соглашение по всем существенным условиям. Если с формой NDA все достаточно понятно, то какие условия договоров данного вида и в каких случаях можно считать существенными?

Согласно подпункту 7 пункта 3 статьи 2 Федерального закона от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации» конфиденциальность информации — это обязательное для выполнения лицом, получившим доступ к определенной информации, требование не передавать такую информацию третьим лицам без согласия ее обладателя. Следовательно, NDA в отношении конфиденциальной информации будет заключен тогда, когда передающая и принимающая стороны определят предмет – обозначат информацию, которую считают конфиденциальной, и зафиксируют требование не передавать ее третьим лицам. Все иные условия стороны вольны определять самостоятельно, руководствуясь общими нормами и принципами гражданского законодательства (положения NDA не могут иметь целью причинение вреда, противоречить закону, нарушать публично-правовые интересы, а также права третьих лиц).

Однако конфиденциальность информации и коммерческая тайна понятия отнюдь не тождественные, ведь критерием последней является именно коммерческая выгода от соблюдения режима конфиденциальности, который четко регламентирован Федеральным законом от 29.07.2004 № 98-ФЗ «О коммерческой тайне». Следовательно, как только стороны поименуют в качестве предмета NDA сведения, составляющие коммерческую тайну, сразу начнут действовать императивные требования закона, позволяющие определить существенные условия, необходимые для договоров данного вида:

определение самой конфиденциальной информации;

определение прав и обязанностей сторон по охране режима коммерческой тайны;

определение срока неразглашения конфиденциальной информации.

Такой вывод следует из постановления Суда по интеллектуальным правам от 31.10.2018 по делу № А56-92673/2016. Несоблюдение этих требований может повлечь признание NDA в отношении информации, составляющей коммерческую тайну, незаключенным, как следствие, отказ в правовой охране коммерческой тайны. Это подтверждает постановление Арбитражного суда Московского округа от 20.01.2017 по делу № А40-83833/15.

Какие разделы включить в NDA

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

Необходимо досконально определить, что будет считаться конфиденциальной информацией: только лишь сведения, отнесенные к коммерческой тайне, или какая-либо иная конфиденциальная информация?

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

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

Что грозит за нарушение NDA?

Выбор средств правовой охраны и правовые последствия нарушения NDA зависят от того, кто является субъектом нарушения — работник или контрагент. Также нужно учитывать, является ли разглашенная информация коммерческой тайной или иной конфиденциальной информацией.

Административная ответственность

Нарушение NDA контрагентом (юридическим лицом или индивидуальным предпринимателем), разгласившим конфиденциальные сведения, при определенных обстоятельствах может повлечь административную ответственность на основании ст. 14.33 КоАП РФ (недобросовестная конкуренция) с наложением штрафа на должностных лиц в размере от 12000 до 20000 рублей; на юридических лиц – от 100000 до 500000 рублей. Вопреки расхожему мнению административная ответственность по ст. 13.14 КоАП РФ (разглашение информации с ограниченным доступом) не связана с нарушением NDA.

Уголовная ответственность

К уголовной ответственности по ч. 2 ст. 183 УК РФ (максимально возможное наказание – лишение свободы на срок до трех лет) может быть привлечен, во-первых, исключительно работник или служащий организации, во-вторых, допустивший несанкционированное работодателем разглашение коммерческой тайны именно в смысле ФЗ «О коммерческой тайне», а не любых конфиденциальных сведений (апелляционное постановление Московского городского суда от 19.03.2019 № 10-1675/2019).

Дисциплинарная и материальная ответственность работника

Трудовой договор может быть расторгнут работодателем в случаях разглашения охраняемой законом тайны, в том числе, коммерческой, ставшей известной работнику в связи с исполнением им трудовых обязанностей (пп. «в» п. 6 ч. 1 ст. 81 ТК РФ). Следует отменить, что правоприменительной практики, подтверждающей законность увольнения по указанному основанию очень много. По общему правилу работник несет материальную ответственность за ущерб, причиненный по его вине, в пределах своего среднего месячного заработка, однако, согласно п. 7 ст. 243 ТК РФ в случае разглашения работником сведений, составляющих охраняемую законом тайну, в том числе, коммерческую, он несет материальную ответственность в полном размере причиненного ущерба. Несмотря на наличие заключенного с работником NDA, для наступления полной материальной ответственности необходима совокупность условий: работодателем должны быть выполнены все меры по установлению режима коммерческой тайны согласно ФЗ и проведена проверка для установления размера ущерба и причин его возникновения (ст. 247 ТК РФ). При этом включение в NDA, заключаемых с работниками, условий о взыскании с них штрафов/неустоек за нарушение обязательств о неразглашении – незаконно и повлечет за собой административную ответственность уже самого работодателя (ст. 5.27 КоАП РФ).

Корпоративные последствия нарушения NDA

Невыполнение участником общества обязанности не разглашать конфиденциальную информацию о деятельности компании может служить основанием для применения мер гражданско-правовой ответственности, вплоть до исключения из числа участников согласно п. 1 ст. 67 ГК РФ. Кроме того, отказ участника общества в подписании NDA перед получением заверенных копий документов о финансово-хозяйственной деятельности общества является основанием для отказа в предоставлении запрошенных им документов (п. 5 ст. 50 ФЗ «Об обществах с ограниченной ответственностью»).

Гражданско-правовая ответственность

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

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

Наиболее действенным инструментом является установленный в NDA штраф за каждый случай нарушения (разглашения конфиденциальной информации). По требованию об уплате штрафа истец не обязан доказывать причинение ему убытков – необходимо лишь доказать вину ответчика в разглашении конфиденциальных сведений, перечисленных в NDA. Кроме того, стороны свободны в определении размера штрафа. В нашей практике встречались NDA, содержащие условия о многомиллионных штрафах, не соответствующих реальной степени возможного нарушения, со всей очевидностью направленные на запугивание контрагента. Между тем, такое поведение стороны, инициирующей подобные «кабальные» штрафы, во-первых, может быть расценено в ходе судебного рассмотрения как злоупотребление правом, что является основанием для отказа в судебной защите (читай – для отказа в иске), а во-вторых, дает суду право уменьшить сумму штрафа при наличии соответствующего заявления ответчика, ввиду несоразмерности допущенному нарушению.

Еще одним механизмом, освобождающим истца от доказывания сложного состава правонарушения, является включение в NDA условия о возмещении потерь (ст. 406.1 ГК РФ). Отличительной особенностью этого правового института, позаимствованного отечественной правовой системой у зарубежных правопорядков, является сугубо предпринимательский характер. Включение условия о возмещении потерь в текст NDA возможно только, если стороны заключают соглашение при осуществлении ими предпринимательской деятельности (включая корпоративные отношения, участником которых является физическое лицо). Данное условие позволяет предусмотреть обязанность одной стороны возместить имущественные потери другой стороны, возникшие в случае наступления определенных в таком соглашении обстоятельств, не связанных с нарушением стороной обязательства. Иными словами, самого факта наступления определенного соглашением обстоятельства уже будет достаточно для возмещения оговоренных в соглашении денежных потерь независимо от вины принявшей это обязательство стороны.

Требующей компенсации стороне все же необходимо будет доказать факт наступления потерь или неизбежность их наступления в будущем, а также причинную связь между наступившим событием и потерями. В случае с NDA, если передаваемые конфиденциальные сведения имеют рыночную стоимость и подлежат оценке, то соглашением может быть установлен размер соответствующих потерь, подлежащих возмещению другой стороной при попадании охраняемой информации в открытый доступ для неограниченного круга лиц. Вместе с тем, важно помнить, что потери – это не убытки, поскольку они не являются следствием нарушения обязательства. Наиболее классический пример возмещения потерь – это обязанность продавца контрольного пакета акций возместить потери, связанные с предъявлением к компании налоговых претензий, основанных на фактах хозяйственной деятельности, имевших место до смены акционера. В этой связи, при необдуманном включении в текст NDA условия о возмещении потерь c целью «прикрыть» положения о взыскании убытков существует риск признания судом соответствующих условий недействительными (притворными).

Источник: Юрист компании
Автор: Карноухов Евгений, Управляющий партнер. Руководитель практики разрешения споров.

Источник

Добавить комментарий

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