Под словом «необычное» в заголовке понимается размещение информационной базы 1С: Предприятие
удаленно на стороне Asp.Net-провайдера, тарифный план которого включает использование
MSSQL. Экономия достигается за счет того, что компания не приобретает дорогостоящий
MSSQL-сервер и лишние лицензии 1С: Предприятие, а ограничивается покупкой 1С-сервера,
который во многих случаях уже имеется. На хостинг-провайдере может разместиться
веб-сайт, работающий на данных 1С: Предприятие. За размещение, архивирование и бесперебойную
работу базы данных и веб-сайта отвечает хостинг-провайдер.
Технология получила название Open Infobase (Открытая информационная база).
Полученное решение с одной стороны поддерживает веб-интерфейс средствами Asp.Net,
а с другой стороны 1С-интерфейс родными средствами 1С: Предприятие 8.2/8.1. Каждая
из технологий добавляет свои преимущества и усиливает общий эффект. Данные, введенные
в 1С: Предприятие, доступны в веб-интерфейсе моментально, а не с задержкой, как в
других традиционных способах, через экспортно-импортные механизмы такие как COM,
файлы обмена или явный/неявный запуск экспорта/импорта.

1С: Предприятие всегда в своем развитии придерживалось циничного и простого подхода:
продукт развивался только в том направлении, которое сулило наиболее ощутимые прибыли
по факту возникновения. Как следствие 1С: Предприятие всегда отставало в своем развитии
от мировых тенденций, а продукт популярен только в России без шансов выйти в развитые
страны, о чём свидетельствует провальный проект в Германии, с помпой стартовавший
в 2007 году. Чтобы воспрепятствовать появлению аналогов популярного бизнес-приложения,
1С закрывает форматы файлов и запутывает структуру данных.
Начиная с версии 8.2, 1С: Предприятие добавило работу через Интернет: теперь информационные
базы можно публиковать на веб-серверах. Сделано это было в свойственной 1С манере:
много багов в релизе, на каждое подключение к базе нужна лицензия, никакой речи
не идет об управлении генерацией HTML, не ждите и не пытайтесь использовать современные
технологии Flash, RSS, WAP, OpenId, AJAX, JQuery и т.д. И если есть надежда на исправление
ошибок в течение нескольких следующих лет, то веб-клиент 1С для массовых посещений
все равно не подойдет. Вместо него подойдет проверенный временем Asp.Net, лучше
версии 4.0.
Технология Asp.Net добавляет слово «Open» в название решения «Open InfoBase», подчеркивая,
что технология «открыта» для всех посетителей Интернет, поисковых систем и специальных
сервисов. Для достижения цели применим весь арсенал технологий и Asp.Net- и .Net-классов:
Asp.Net MVC, AJAX, веб-формы, локализация, многопоточность, LINQ, LINQToSQL и PLINQ
и многие другие.
При разработке приложений под Asp.Net у вас есть полный контроль над HTML-отрисовкой.
На свой выбор вы сможете реализовать любой стиль интерфейса через таблицы стилей,
оживить интерфейс средствами DHTML, поиграть с новым HTML 5. Вы сможете быстро реализовать
общее приложение на разных языках, воспользовавшись средствами локализации. Всего
этого вы не получите, применяя предложенный в 1С: Предприятие стандартный подход.
Много сил веб-разработчики уделяют оптимизации под поисковые системы или SEO. Примените
Asp.Net MVC для легкой генерации своих путей URL, создайте robots.txt, sitemap-файлы,
создавайте «на лету» необходимые метатеги title, description, keywords. Участвуйте
в обмене ссылками. Вы снова оцените преимущества Asp.Net по сравнению с 1С.
Ваше веб-приложение сохранит совместимость с Веб 2.0 и общепринятыми мировыми стандартами,
в отличие от 1С: Предприятие, которое совместимо только само с собой. Применяйте
Ajax, входите в систему через OpenId-совместимые системы, свободно используйте карты
Google и Yandex и размещайте на картах нужную информацию, публикуйте ленту новостей.
Немаловажным остается поддержка мобильных устройств. Нет никаких проблем получить
WML с необходимым минимумом информации средствами, например, Asp.Net MVC и заставить
работать мобильные устройства через Интернет с вашей информационной базой.
Не смотря на то, что 1С: Предприятие не может конкурировать в веб-разработке с Asp.Net,
1С отлично себя проявляет как Desktop-приложение. В сравнении с 1С: Предприятие .Net
Framework остается всего лишь набором несвязанных классов. Бесспорно, на .Net framework
можно переписать 1С: Предприятие, но на это потребуются многие годы. Другое преимущество
1С – это широкая распространенность системы, относительно невысокая цена, наличие
армии 1С-программистов и огромное число наработок в свободном доступе.
В подходе Open InfoBase 1С: Предприятие позволяет очень быстро разработать приложение,
пригодное для ввода данных. На простое приложение может потребоваться 1-2 дня. При
этом 1С сразу отвечает за создание структуры данных на сервере баз данных. Пользователям
данные в Desktop-приложение, коим является 1С, удобнее и быстрее вносить, чем в
веб-приложение.

Приложения 1С могут быть быстро сделаны распределенными, что позволяет соединить
несколько офисов. Например, если у агентства недвижимости филиалы в нескольких городах,
то каждый филиал работает со своими данными локально, а итоговые данные сливаются
и отображаются на веб-сайте. Другой пример – это распределение нагрузки, когда базы
данных 1С располагаются на разных серверах и средствами 1С происходит синхронизация
информации.
Начиная с версии 8.1, в 1С: Предприятие встроен богатый инструмент получения отчетов
«Система Компоновки Данных». Отчеты создаются быстро, обладают гибкостью в настройках
таблиц, колонок и строк, а также могут экспортироваться во многие форматы.

Работать с данными: вводить, редактировать, удалять и искать быстрее и удобнее в
1С: Предприятие. 1С имеет встроенный полнотекстовый поиск. Приложение может обмениваться
данными с другими конфигурациями 1С: Предприятие, такими как 1С: Бухгалтеиия или 1С: Управление
торговлей на «родном языке». Импорт/экспорт между 1С-приложениями быстро настраивается
инструментами 1С: Конвертация данных и «Перенос между идентичными конфигурациями».
1С: Предприятие включает в себя ряд специализированных объектов, хорошо отработанных
в популярных 1С-решениях. Остатки и движения по финансам, товарам быстрее и удобнее
организовать на специализированном объекте 1С: Предприятие «Регистр накопления» и
получать движения и остатки на любой период. Курсы валют целесообразнее поместить
в «Регистр сведений» и получать нужный курс на определенную дату.
Целесообразность совместного применения 1C: Предприятие и Asp.Net показана в предыдущих
разделах статьи. Обе технологии одинаково хорошо работают с СУБД Microsoft SQL Server.
Именно обращение к одним и тем же данным MSSQL использует технология Open InfoBase.
Теоретически проблем никаких нет, но возникают решаемые на практике трудности.
Как писалось ранее, 1С: Предприятие намеренно закрывает форматы своих данных и структуру
данных для противодействия появлению на рынке продуктов-клонов. Главная трудность
в случае с 1С – нет стандарта относительно наименования таблиц и полей в базе данных
1С. Если кто-нибудь заглядывал внутрь базы данных, то мог увидеть множество таблиц
с непонятными названиями, в которых расположены поля с непонятным назначением.

Это обстоятельство осложняет доступ к данным 1С из Asp.Net, например, через получение
DataReader и DataTable-объектов. Однажды сгенерированный запрос может потерять смысл
и не работать при значимом обновлении конфигурации 1C или на конфигурации другого
предприятия.
На эту трудность есть решение. Появление в .Net framework технологии LinqToSql вызвало
у многих и у меня, в том числе, резонный вопрос: «А зачем это нужно?». Ведь многие
как использовали SQL-выражения или хранимые процедуры для доступа к MSSQL-базе,
так и продолжают использовать их даже после выхода LinqToSql. Оказалось, что именно
LinqToSql подойдет для прямого доступа к информационной базе 1С.
Для работы механизмов LinqToSql необходимы специальные .Net – классы, которые генерируются
компилятором автоматически на основе DBML-файла. DBML-файл – это XML-файл с определением
соответствий между названиями таблиц, полей и названиями .Net-классов.
Для облегчения генерации DBML-файла на основе метаданных 1С была создана утилита
Elisy.LinqTo1C. Поставляется вместе с расширением Elisy .Net Bridge, так как обращается
к функциональности .Net framework из 1C: Предприятие. После указания строки подключения
к СКЛСерверу, имени выгружаемого файла, имен выгружаемых объектов обработка Elisy.LinqTo1C
на выходе получает соответствующие dbml- и cs-файлы. CS-файл содержит все необходимые
описания классов и может быть вставлен в .Net-проект. На DBML-файл можно смотреть
из редактора Visual Studio. Доступ к данным значительно преображается.

Другая трудность, с которой удалось столкнуться на практике – это обращение к изображениям
и файлам, помещенным в информационную базу 1С. Дело в том, что для хранения файла
1С использует объекты ХранилищеЗначения и СжатиеДанных. В базу данных помещается
не содержимое файла, а сериализация объектов 1С, содержащая в себе файл. Трудность
решается распарсиванием сериализации и выкусыванием из нее необходимого файла.
Прямой доступ к данным информационной базы 1С рождает противоречие между законодательством
Российской Федерации и лицензией 1С: Предприятие. Некоторые безответственные лица,
не разобравшись в тонкостях законодательства, вводят в заблуждение оставшуюся часть
общества, утверждая, что прямой доступ к данным 1С запрещен.
Позиция компании 1С по поводу прямого доступа следующая: «Нельзя обращаться к данным
информационной базы напрямую, минуя уровень объектов работы с данными «1С: Предприятия»
– например, при помощи средств СУБД».
Фирма 1С, закладывая такие пункты в лицензию, лукавит и сама нарушает законодательство
РФ, а именно статьи: Статья 1334 п.1 «Исключительное право изготовителя базы данных»
ГК РФ часть 4, а также Статья 25 п.1 и п.3 «Свободное воспроизведение программ для
ЭВМ и баз данных. Декомпилирование программ для ЭВМ» Закона об авторском праве и
смежных правах. В Гражданском Кодексе сказано:
«Изготовителю базы данных, создание которой (включая обработку или представление
соответствующих материалов) требует существенных финансовых, материальных, организационных
или иных затрат, принадлежит исключительное право извлекать из базы данных материалы
и осуществлять их последующее использование в любой форме и любым способом».
В заключение хотелось бы перечислить некоторые преимущества предложенной в статье
технологии, основанной на соединении двух технологий Asp.Net и 1С: Предприятие. Максимальный
эффект достигается в уникальных проектах, которые пишутся «с нуля».
удаленно на стороне Asp.Net-провайдера, тарифный план которого включает использование
MSSQL. Экономия достигается за счет того, что компания не приобретает дорогостоящий
MSSQL-сервер и лишние лицензии 1С: Предприятие, а ограничивается покупкой 1С-сервера,
который во многих случаях уже имеется. На хостинг-провайдере может разместиться
веб-сайт, работающий на данных 1С: Предприятие. За размещение, архивирование и бесперебойную
работу базы данных и веб-сайта отвечает хостинг-провайдер.
Технология получила название Open Infobase (Открытая информационная база).
Полученное решение с одной стороны поддерживает веб-интерфейс средствами Asp.Net,
а с другой стороны 1С-интерфейс родными средствами 1С: Предприятие 8.2/8.1. Каждая
из технологий добавляет свои преимущества и усиливает общий эффект. Данные, введенные
в 1С: Предприятие, доступны в веб-интерфейсе моментально, а не с задержкой, как в
других традиционных способах, через экспортно-импортные механизмы такие как COM,
файлы обмена или явный/неявный запуск экспорта/импорта.

Вклад Asp.Net в общее решение
1С: Предприятие всегда в своем развитии придерживалось циничного и простого подхода:
продукт развивался только в том направлении, которое сулило наиболее ощутимые прибыли
по факту возникновения. Как следствие 1С: Предприятие всегда отставало в своем развитии
от мировых тенденций, а продукт популярен только в России без шансов выйти в развитые
страны, о чём свидетельствует провальный проект в Германии, с помпой стартовавший
в 2007 году. Чтобы воспрепятствовать появлению аналогов популярного бизнес-приложения,
1С закрывает форматы файлов и запутывает структуру данных.
Начиная с версии 8.2, 1С: Предприятие добавило работу через Интернет: теперь информационные
базы можно публиковать на веб-серверах. Сделано это было в свойственной 1С манере:
много багов в релизе, на каждое подключение к базе нужна лицензия, никакой речи
не идет об управлении генерацией HTML, не ждите и не пытайтесь использовать современные
технологии Flash, RSS, WAP, OpenId, AJAX, JQuery и т.д. И если есть надежда на исправление
ошибок в течение нескольких следующих лет, то веб-клиент 1С для массовых посещений
все равно не подойдет. Вместо него подойдет проверенный временем Asp.Net, лучше
версии 4.0.
Технология Asp.Net добавляет слово «Open» в название решения «Open InfoBase», подчеркивая,
что технология «открыта» для всех посетителей Интернет, поисковых систем и специальных
сервисов. Для достижения цели применим весь арсенал технологий и Asp.Net- и .Net-классов:
Asp.Net MVC, AJAX, веб-формы, локализация, многопоточность, LINQ, LINQToSQL и PLINQ
и многие другие.
При разработке приложений под Asp.Net у вас есть полный контроль над HTML-отрисовкой.
На свой выбор вы сможете реализовать любой стиль интерфейса через таблицы стилей,
оживить интерфейс средствами DHTML, поиграть с новым HTML 5. Вы сможете быстро реализовать
общее приложение на разных языках, воспользовавшись средствами локализации. Всего
этого вы не получите, применяя предложенный в 1С: Предприятие стандартный подход.
Много сил веб-разработчики уделяют оптимизации под поисковые системы или SEO. Примените
Asp.Net MVC для легкой генерации своих путей URL, создайте robots.txt, sitemap-файлы,
создавайте «на лету» необходимые метатеги title, description, keywords. Участвуйте
в обмене ссылками. Вы снова оцените преимущества Asp.Net по сравнению с 1С.
Ваше веб-приложение сохранит совместимость с Веб 2.0 и общепринятыми мировыми стандартами,
в отличие от 1С: Предприятие, которое совместимо только само с собой. Применяйте
Ajax, входите в систему через OpenId-совместимые системы, свободно используйте карты
Google и Yandex и размещайте на картах нужную информацию, публикуйте ленту новостей.
Немаловажным остается поддержка мобильных устройств. Нет никаких проблем получить
WML с необходимым минимумом информации средствами, например, Asp.Net MVC и заставить
работать мобильные устройства через Интернет с вашей информационной базой.
Вклад 1С: Предприятие в общее решение
Не смотря на то, что 1С: Предприятие не может конкурировать в веб-разработке с Asp.Net,
1С отлично себя проявляет как Desktop-приложение. В сравнении с 1С: Предприятие .Net
Framework остается всего лишь набором несвязанных классов. Бесспорно, на .Net framework
можно переписать 1С: Предприятие, но на это потребуются многие годы. Другое преимущество
1С – это широкая распространенность системы, относительно невысокая цена, наличие
армии 1С-программистов и огромное число наработок в свободном доступе.
В подходе Open InfoBase 1С: Предприятие позволяет очень быстро разработать приложение,
пригодное для ввода данных. На простое приложение может потребоваться 1-2 дня. При
этом 1С сразу отвечает за создание структуры данных на сервере баз данных. Пользователям
данные в Desktop-приложение, коим является 1С, удобнее и быстрее вносить, чем в
веб-приложение.

Приложения 1С могут быть быстро сделаны распределенными, что позволяет соединить
несколько офисов. Например, если у агентства недвижимости филиалы в нескольких городах,
то каждый филиал работает со своими данными локально, а итоговые данные сливаются
и отображаются на веб-сайте. Другой пример – это распределение нагрузки, когда базы
данных 1С располагаются на разных серверах и средствами 1С происходит синхронизация
информации.
Начиная с версии 8.1, в 1С: Предприятие встроен богатый инструмент получения отчетов
«Система Компоновки Данных». Отчеты создаются быстро, обладают гибкостью в настройках
таблиц, колонок и строк, а также могут экспортироваться во многие форматы.

Работать с данными: вводить, редактировать, удалять и искать быстрее и удобнее в
1С: Предприятие. 1С имеет встроенный полнотекстовый поиск. Приложение может обмениваться
данными с другими конфигурациями 1С: Предприятие, такими как 1С: Бухгалтеиия или 1С: Управление
торговлей на «родном языке». Импорт/экспорт между 1С-приложениями быстро настраивается
инструментами 1С: Конвертация данных и «Перенос между идентичными конфигурациями».
1С: Предприятие включает в себя ряд специализированных объектов, хорошо отработанных
в популярных 1С-решениях. Остатки и движения по финансам, товарам быстрее и удобнее
организовать на специализированном объекте 1С: Предприятие «Регистр накопления» и
получать движения и остатки на любой период. Курсы валют целесообразнее поместить
в «Регистр сведений» и получать нужный курс на определенную дату.
Трудности одновременной работы 1С: Предприятие и Asp.Net
Целесообразность совместного применения 1C: Предприятие и Asp.Net показана в предыдущих
разделах статьи. Обе технологии одинаково хорошо работают с СУБД Microsoft SQL Server.
Именно обращение к одним и тем же данным MSSQL использует технология Open InfoBase.
Теоретически проблем никаких нет, но возникают решаемые на практике трудности.
Как писалось ранее, 1С: Предприятие намеренно закрывает форматы своих данных и структуру
данных для противодействия появлению на рынке продуктов-клонов. Главная трудность
в случае с 1С – нет стандарта относительно наименования таблиц и полей в базе данных
1С. Если кто-нибудь заглядывал внутрь базы данных, то мог увидеть множество таблиц
с непонятными названиями, в которых расположены поля с непонятным назначением.

Это обстоятельство осложняет доступ к данным 1С из Asp.Net, например, через получение
DataReader и DataTable-объектов. Однажды сгенерированный запрос может потерять смысл
и не работать при значимом обновлении конфигурации 1C или на конфигурации другого
предприятия.
На эту трудность есть решение. Появление в .Net framework технологии LinqToSql вызвало
у многих и у меня, в том числе, резонный вопрос: «А зачем это нужно?». Ведь многие
как использовали SQL-выражения или хранимые процедуры для доступа к MSSQL-базе,
так и продолжают использовать их даже после выхода LinqToSql. Оказалось, что именно
LinqToSql подойдет для прямого доступа к информационной базе 1С.
Для работы механизмов LinqToSql необходимы специальные .Net – классы, которые генерируются
компилятором автоматически на основе DBML-файла. DBML-файл – это XML-файл с определением
соответствий между названиями таблиц, полей и названиями .Net-классов.
Для облегчения генерации DBML-файла на основе метаданных 1С была создана утилита
Elisy.LinqTo1C. Поставляется вместе с расширением Elisy .Net Bridge, так как обращается
к функциональности .Net framework из 1C: Предприятие. После указания строки подключения
к СКЛСерверу, имени выгружаемого файла, имен выгружаемых объектов обработка Elisy.LinqTo1C
на выходе получает соответствующие dbml- и cs-файлы. CS-файл содержит все необходимые
описания классов и может быть вставлен в .Net-проект. На DBML-файл можно смотреть
из редактора Visual Studio. Доступ к данным значительно преображается.

Другая трудность, с которой удалось столкнуться на практике – это обращение к изображениям
и файлам, помещенным в информационную базу 1С. Дело в том, что для хранения файла
1С использует объекты ХранилищеЗначения и СжатиеДанных. В базу данных помещается
не содержимое файла, а сериализация объектов 1С, содержащая в себе файл. Трудность
решается распарсиванием сериализации и выкусыванием из нее необходимого файла.
Кто в данных хозяин
Прямой доступ к данным информационной базы 1С рождает противоречие между законодательством
Российской Федерации и лицензией 1С: Предприятие. Некоторые безответственные лица,
не разобравшись в тонкостях законодательства, вводят в заблуждение оставшуюся часть
общества, утверждая, что прямой доступ к данным 1С запрещен.
Позиция компании 1С по поводу прямого доступа следующая: «Нельзя обращаться к данным
информационной базы напрямую, минуя уровень объектов работы с данными «1С: Предприятия»
– например, при помощи средств СУБД».
Фирма 1С, закладывая такие пункты в лицензию, лукавит и сама нарушает законодательство
РФ, а именно статьи: Статья 1334 п.1 «Исключительное право изготовителя базы данных»
ГК РФ часть 4, а также Статья 25 п.1 и п.3 «Свободное воспроизведение программ для
ЭВМ и баз данных. Декомпилирование программ для ЭВМ» Закона об авторском праве и
смежных правах. В Гражданском Кодексе сказано:
«Изготовителю базы данных, создание которой (включая обработку или представление
соответствующих материалов) требует существенных финансовых, материальных, организационных
или иных затрат, принадлежит исключительное право извлекать из базы данных материалы
и осуществлять их последующее использование в любой форме и любым способом».
Заключение
В заключение хотелось бы перечислить некоторые преимущества предложенной в статье
технологии, основанной на соединении двух технологий Asp.Net и 1С: Предприятие. Максимальный
эффект достигается в уникальных проектах, которые пишутся «с нуля».
- Экономия средств – установить MSSql внутри организации стоит немалых
денег, а база данных у Asp.Net хостинг-провайдера чаще всего уже включена в тарифный
план хостинга. При публикации веб-сайта не требуется приобретение многочисленных
лицензий 1С: Предприятие для Интернет-пользователей. - Экономия времени – Экономию времени пользователей обеспечивает
Desktop-приложение, которым является 1С: Предприятие. Работать с данными быстрее
и удобнее через 1С, чем через веб-интерфейс. - Дополнительные возможности 1С – 1С предоставляет дополнительные
возможности для администрирования базы данных, облегчая жизнь разработчикам. К возможностям
1С относятся: выгрузка и загрузка информационной базы, правила конвертации, планы
обмена, огромные возможности отчетов. Предложенное решение, с одной стороны являясь
веб-интерфейсом, с другой стороны является desktop-приложением, в котором можно
использовать на стороне офиса бесконечное множество внешних 1С-обработок/ответов
для анализа и изменения данных, торговое оборудование, GSM-модемы и т.д. - Дополнительные возможности Asp.Net – технология Asp.Net добавляет
в решение полный контроль над отрисовкой Html и дизайном интерфейса. Веб-приложение
допустимо сделать SEO-оптимизированным с добавлением современных модных технологий
Веб 2.0. - Разграничение ответственности – в больших проектах легко разграничить
зону ответственности между сотрудниками: между 1С-отделом и .Net-разработчиками.
1С-отдел занимается Desktop-интерфейсом, поддержкой базы и экспортом-импортом данных,
а .Net-разработчики разрабатывают веб-сайт на Asp.Net. - Сбор информации с нескольких баз 1С – способ допускает написание
правил конвертации данных для экспорта и импорта таким образом, что данные могут
поступать в удаленную базу из нескольких рабочих баз 1C: Бухгалтерия или 1С: Управление
торговлей организации или нескольких организаций. Распределенные информационные
базы позволят связать несколько городов или распределить нагрузку на сервера.