17 January 2012

Необычно-экономное использование 1С: Предприятие 8 на Asp.Net-хостинге

Website developmentMicrosoft SQL Server
Под словом «необычное» в заголовке понимается размещение информационной базы 1С: Предприятие
удаленно на стороне Asp.Net-провайдера, тарифный план которого включает использование
MSSQL. Экономия достигается за счет того, что компания не приобретает дорогостоящий
MSSQL-сервер и лишние лицензии 1С: Предприятие, а ограничивается покупкой 1С-сервера,
который во многих случаях уже имеется. На хостинг-провайдере может разместиться
веб-сайт, работающий на данных 1С: Предприятие. За размещение, архивирование и бесперебойную
работу базы данных и веб-сайта отвечает хостинг-провайдер.

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

Общий смысл технологии Elisy Open InfoBase


Вклад 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-2 дня

Приложения 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С:Предприятие

Это обстоятельство осложняет доступ к данным 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. Доступ к данным значительно преображается.

Результат получения DBML-файла для внутренней структуры данных 1С:Предприятие

Другая трудность, с которой удалось столкнуться на практике – это обращение к изображениям
и файлам, помещенным в информационную базу 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С: Управление
    торговлей организации или нескольких организаций. Распределенные информационные
    базы позволят связать несколько городов или распределить нагрузку на сервера.


Tags:asp.netasp.net mvc.net 4.01c:предприятие1c.net1с:предприятие1с предприятие 8sql server
Hubs: Website development Microsoft SQL Server
-6
3.1k 17
Comments 23
Top of the last 24 hours