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

12.11.10

Интеграция - Сайты и интернет-магазины

Статья описывает, как можно сэкономить на реализации Интернет-магазина предприятия, в который данные поступают из 1С:Предприятие 8. Данные размещаются в базе данных MSSql удаленно у хостинг-провайдера. Предлагается практический опыт гармоничной интеграции 1С:Предприятие и Asp.Net через LINQ и прямой доступ к информационной базе 1С. Строится простейшее решение, с одной стороны имеющее веб-интерфейс, а с другой стороны построенное как desktop-приложение. Тем самым достигается эффективность в наполнении веб-сайта контентом. Максимальный эффект достигается, когда Интернет-магазин проектируется «с нуля» с уникальной для предприятия структурой.

Статья описывает, как можно сэкономить на реализации Интернет-магазина предприятия, в который данные поступают из 1С:Предприятие 8. Данные размещаются в базе данных MSSql удаленно у хостинг-провайдера. Предлагается практический опыт гармоничной интеграции 1С:Предприятие и Asp.Net через LINQ и прямой доступ к информационной базе 1С. Строится простейшее решение, с одной стороны имеющее веб-интерфейс, а с другой стороны построенное как desktop-приложение. Тем самым достигается эффективность в наполнении веб-сайта контентом. Максимальный эффект достигается, когда Интернет-магазин проектируется «с нуля» с уникальной для предприятия структурой.

Под словом «необычное» в данной статье имеется в виду использование в 1С:Предприятие СУБД MSSQL удаленно на стороне хостинг-провайдера. При этом нет необходимости покупать и устанавливать Sql Server на предприятии, а можно ограничиться покупкой 1С-сервера, который на многих предприятиях уже имеется. За размещение и работу веб-сайта отвечает хостинг-провайдер.

К статье прилагаются: образец конфигурации 1С, а также пример Asp.Net MVC веб-сайта. Проект временно для отладки выложен в сети Интернет, и с ним можно ознакомиться по адресу http://www.companyvm.ru. В проекте использовано решение Elisy.LinqTo1C.

Отдельная благодарность 1С-разработчику Stive, который создал конфигурацию и правила конвертации для проекта.

Недавно примеры Elisy LinqTo1C пополнились еще одним прототипом:
Карта оптового вещевого рынка Дордой
Silverlight-приложение (карта) связано с базой 1С через Asp.Net MVC + LINQ. Прорисовка объектов карты происходит динамически. Вся информация об объектах на карте берется из базы 1С. Удаленная база 1С обменивается с базой 1С из офиса через план обмена.

Суть необычного подхода

В решениях, кода в организации используется 1С:Предприятие, традиционно применяется следующая связка: клиент 1С – сервер 1С – СУБД. Обычно система развертывается в одном офисе. Трехзвенная архитектура более надежна по сравнению с файловым вариантом работы 1С. СУБД при этом может быть выбрана бесплатная, благо фирма 1С предоставляет выбор между СУБД.

Опять же традиционно, когда необходимо сделать реализацию Интернет-магазина есть 2 подхода: размещение веб-сервера в офисе, где находится сервер 1С и СУБД и обращение к 1С через COM или специальный компонент Web-расширения для 1С. Второй подход – размещение на хостинг-провайдере популярного интернет-магазина и настройка экспорта-импорта в/из 1С. Все варианты имеют право на существование, но недостаток первого – необходимость самостоятельного администрирования веб-сервера, самоответственность за безопасность, необходимость в хорошем канале Интернет. Недостаток второго подхода - в недостаточной гибкости. Например, добавление нового атрибута выливается в следующее: нужно добавить его в 1С, переделать экспорт, переделать импорт, переделать структуру, обычно, MySql базы данных, переделать серверную php-часть для отображения.

Что предлагается? Создать мини-конфигурацию 1С, содержащую только все необходимые объекты из рабочей конфигурации организации (Управления Торговлей или Бухгалтерии). Разместить ее удаленно в созданной на Windows-хостинге базе данных MsSQL. Это должна быть как можно более облегченная конфигурация без всего лишнего, так как доступ к ней из офиса осуществляется через Интернет. Написать Asp.Net веб-сайт, который будет обращаться к данным 1С напрямую через LINQ. Файлы-описания LINQ поможет создать 1С-обработка Elisy.LinqTo1CSql.81.epf, которая входит в состав Elisy .Net Bridge SDK (сайт проекта: http://www.1centerprise.com/dotnet/). Написать правила конвертации данных для экспрота-импорта данных между мини-конфигурацией и конфигурацией организации. Это и есть суть «необычного» решения.

Создание удаленной информационной базы 1С

Первым этапом нужно создать удаленно на Windows-хостинге MSSQL-базу данных. Прописать в 1С-сервере эту базу данных и подключиться к ней через 1С-клиент. На этом этапе создана пустая конфигурация на удаленной СУБД, доступ к которой осуществляется каналами Интернет.

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

  • Справочники: Номенклатура, Контрагенты, ХранилищеДополнительнойИнформации, ЗначенияСвойствОбъектов, ТиыЦенНоменклатуры, ГруппыТоваров,
  • План видов характеристик СвойстваОбъектов,
  • Регистры сведений: ЗначенияСвойствОбъектов и ЦеныНоменклатуры;

Стоит избегать переноса регистров накопления, так как они предполагают наличия документов. Например, для остатков товаров можно сделать регистр сведений или хранить остатки на реквизите «Остаток» в справочнике Номенклатура.

Специально для проекта 1C-разработчик Stive написал мини-конфигурацию и правила конвертации. Для справки: на всю работу ему понадобилось меньше 3х дней, из которых половина времени ушла на согласования. К статье прилагается мини-конфигурация как образец.

Создание экспорта и импорта

Чтобы у хостинг-провайдера появились данные в удаленной базе необходимо их туда перенести. Так как в нашем случае есть две базы 1С: удаленная и рабочая база организации, то идеальным решением станет создание правил конвертации данных, написанных с помощью конфигурации 1С «Конвертация данных». С этой задачей справится большинство 1С-разработчиков, работающих с 8й версией.

Тема написания правил данных объемная и ее невозможно осветить здесь. Можно только отметить, что правила будут зависеть от того, какие данные должны передаваться в 1С. Возможно, нужно передавать только номенклатуру, входящую в определенную номенклатурную группу или только ту, которая есть на остатках. Контрагенты, вероятно, тоже все не нужны в удаленной базе 1С.

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

Создание веб-сайта

Хотя веб-сайт можно создать и на PHP, но максимальный эффект в предложенном способе дает создание веб-сайта на Asp.Net с доступом через LINQ. Связано это с тем, что необходим прямой доступ к базе данных 1С, а структура 1С данных очень запутана. Asp.Net предоставляет такие средства, как LINQ, а с данной технологией жизнь становится намного проще.

Рекомендуется выбрать Asp.Net MVC 2, так как гибкость решений позволяет без особого труда выполнить SEO-опримизацию. Простотой WebForms-технологии тоже не стоит пренебрегать в закрытых разделах, например, в личном кабинете.

Сгенерировать LINQ-описание можно с помощью инструментов, входящих в Elisy .Net Bridge SDK. С их помощью становятся доступными все конструкции LINQ при прямом обращении к данным 1С

var свойстваНоменклатурыЗапрос = from номенклатура in DataContext.GetTable<СправочникНоменклатура>()
        join свойство in DataContext.GetTable<РегистрСведенийЗначенияСвойствОбъектов>()
        on номенклатура.Ссылка equals свойство.Объект join типСвойства in DataContext.GetTable<ПланВидовХарактеристикСвойстваОбъектов>()
        on свойство.Свойство equals типСвойства.Ссылка join значениеСвойства in DataContext.GetTable<СправочникЗначенияСвойствОбъектов>()
        on свойство.Значение equals значениеСвойства.Ссылка into temp1 where номенклатура.Код.ToLower()
        == code.ToLower() from row in temp1.DefaultIfEmpty() orderby типСвойства.Наименование
        select new { Номенклатура = номенклатура.Наименование, Свойство = типСвойства.Наименование,
        Тип = свойство.ЗначениеТип.ToArray(), ЗначениеСправочник = row.Наименование, ЗначениеЧисло
        = свойство.ЗначениеЧисло }; 

В коде становится все четко и понятно.

Asp.Net-программирование тоже объемная тема, о которой написано много книг. Освещать ее отдельно в данной статье – задача невыполнимая.

Заключение

В заключение хотелось бы перечислить некоторые преимущества предложенной в статье технологии, основанной на удаленном размещении базы 1С:

  • Экономия средств – установить MSSql внутри организации стоит немалых денег, а база данных у хостинг-провайдера уже включена в тарифный план хостинга.
  • Экономия времени – в некоторых других традиционных подходах необходимо дублировать структуру баз данных для Интернет-магазина и базы 1С. Например, это касается MySQL-решений, когда изменение структуры 1С приводит к изменению структуры MySQL-решений. В предложенном варианте необходимо следить только за 1С-структурой, которая является общей для 1С и веб.
  • Дополнительные возможности 1С – 1С предоставляет дополнительные возможности для администрирования базы данных, облегчая жизнь разработчикам. К возможностям 1С относятся: выгрузка и загрузка информационной базы, правила конвертации, планы обмена. Предложенное решение, с одной стороны являясь веб-интерфейсом, с другой стороны является desktop-приложением, в котором можно использовать на стороне офиса бесконечное множество внешних 1С-обработок/ответов для анализа и изменения данных, торговое оборудование, GSM-модемы и т.д.
  • Разграничение ответственности – в больших проектах в предлагаемом решении легко разграничить зону ответственности между сотрудниками: между 1С-отделом и .Net-разработчиками. 1С-отдел занимается поддержкой базы и экспортом-импортом данных, а .Net-разработчики разрабатывают веб-сайт.
  • Сбор информации с нескольких баз 1С – способ допускает написание правил конвертации данных для экспорта и импорта таким образом, что данные могут поступать в удаленную базу из нескольких рабочих 1С-баз организации или нескольких организаций.

LinqTo1CMSSQLHostingProvider.cf (183.60 kb) - пример конфигурации для удаленной базы 1С:Предприятие

LinqTo1CMSSQLHostingProvider.zip (177.01 kb) - пример Asp.Net MVC 2 веб-сайта для отображения данных удаленной конфигурации

См. также

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер).

20400 руб.

19.12.2023    5098    37    11    

35

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17780    19    22    

16

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19845    13    17    

16

СБП. Оплата по QR-коду Сайты и интернет-магазины Программист Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Россия Бухгалтерский учет Управленческий учет Платные (руб)

В настоящее время система СБП очень часто стала использоваться в повседневной жизни. Одна из систем интеграции СБП через СБЕР. Данная конфигурация является инструментом интеграции СБП в Альфа Авто. Данная система не просто формирует статический QR, а динамический, а значит, в системе будет привязка и на покупателя, и на документ.

7200 руб.

25.10.2022    6306    33    4    

11

Сайты и интернет-магазины Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Управленческий учет Платные (руб)

Программа позволяет одним кликом настроить сбор цен ваших конкурентов или дилеров в интернете. Автоматически собирает данные результата поиска Яндекса (вам не придется вручную добавлять каждый сайт, за которым нужно следить). Обновление цен происходит по заданному вами расписанию автоматически. Можете легко отслеживать позиции вашего сайта в Яндексе по ключевым словам и фразам. Этот инструмент даст вам лучшее понимание того, как ваша SEO-стратегия влияет на видимость вашего сайта в поисковой выдаче, и поможет вам улучшить контент и структуру сайта для повышения его позиций. Функция доступна во всех тарифах.

19950 руб.

23.09.2019    31021    7    12    

30
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ihty 226 17.11.10 14:18 Сейчас в теме
Вопрос про экономию:
Как насчет лицензирования удаленной базы 1С?
3. Elisy 951 18.11.10 06:08 Сейчас в теме
(1) SQL-сервер куплен хостинг-провайдером, поэтому его лицензировать не нужно. Законность в таком варианте поддерживается.
2. v3rter 17.11.10 21:39 Сейчас в теме
Ну так на интернет-сервере крутится самоделка, которую не надо лицензировать.
Сервер предприятия "дома". Экономия на дорогущем SQL-сервере :)
4. floodprog 23 07.03.11 08:08 Сейчас в теме
- нет канала, нет продаж - жестко битый такелаж...
5. Elisy 951 07.03.11 08:35 Сейчас в теме
(4) И вас тоже с наступающим 8 марта )))
6. floodprog 23 07.03.11 08:47 Сейчас в теме
(5) не посчитайте за грубость. С праздником вас ! (наступающем на печень :D )
сам сижу на:
1. Сайте("поччти инет-магазине :D )
2. Почте (аЦкой)
3. Удаленными пользователями
с такелажем проблемы у провайдера, а я канал передачи ...
7. cool.vlad4 2 07.03.11 09:51 Сейчас в теме
(6) Если с почтой траблы, а заморачиватся с собственными серверами не хочется, советую посмотреть google apps, там как платное решение есть, так и бесплатное (с ограничением в 50 пользователей).
8. floodprog 23 07.03.11 10:12 Сейчас в теме
(7) пасиб за совет. у меня с гуглом родственные связи. а с руководством, половые. все разжеванно не раз. сути нет есть факты...
9. Elisy 951 16.02.12 09:50 Сейчас в теме
Эта же статья опубликована на:
http://habrahabr.ru/blogs/webdev/136415/
Интересны комментарии.
10. bolush 12.03.12 15:01 Сейчас в теме
Спасибо за совет у меня с гуглом родственные связи. а с руководством, половые. все разжеванно не раз. сути нет есть факты...
11. nano1c 172 06.04.15 17:50 Сейчас в теме
непонятно зачем сразу две связи: и выгрузка и напрямую с sql. достаточно одной же! как мне видится самый простой вариант: это прямой доступ к бд любого сайта: и чтение и запись. я делал чтение через объект 1с ВнешниеИсточникиДанных но это не работает через веб да и записать нельзя. Но есть же компоненты прямого DROP-INSERT, непонятно только как из заставить работать через веб. теоретически весь этот тырнет-магаз может представлять из себя тупо внешнюю обработку для УТ. И если напрямую нельзя то уж через xml точно можно, но уже нужна работа веб-прогеров
12. Elisy 951 08.04.15 12:48 Сейчас в теме
(11) можно обойтись 1 связью, если веб-сервер расположен в офисе предприятия. 2 связи показаны для самых извращенных случаев, где 2я связь не обязательно правила конвертации, а, например, РБД.
Прямой доступ к базе данных любого сайта приводит к необходимости постоянной синхронизации 1С и движка сайта. Создание такого импорта-экспорта в несколько раз сложнее, чем настройка правил обмена между базами 1С.
Оставьте свое сообщение