Необычно-экономное использование 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    3089    20    8    

20

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

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

5040 руб.

04.05.2021    18988    10    16    

17

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

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

36000 руб.

03.08.2020    16738    15    19    

15

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

Расширение для 1С Управление торговлей, реализует: а) Загрузку номенклатуры с сайта с нужными параметрами. б) Позволяет быстро обновлять цены и остатки из 1С в Веб сайт на Битрикс, на лету. (онлайн). в) Моментально прогружать заказы и создавать реализации.

30000 руб.

29.03.2024    796    1    1    

1

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

В обработке реализован механизм интеграции между системой поставщика на базе конфигураций 1с(управление торговлей 11) и Личным кабинетом Hoff. Реализован обмен остатками. Обработка реализована и тестировалась для УТ 11.4 Система позволяет выгружать из базы 1с поставщика хофф остатки товаров и другие данные в систему Hoff Преимущества: оперативное и регулярное обновление информации на сайте, уходит двойная работа по вводу остатков в разных системах (1С и личном кабинете HOFF), что чревато возникновением большого количества ошибок в управленческом учете. А также сократятся трудозатраты и повысится прибыль предприятия от продаж. Целевая аудитория: отделы маркетинга, продаж и склад, управленцы из сферы крупного, среднего бизнеса и мелкие предприниматели, владельцы ИП.

29880 руб.

16.11.2022    6585    1    5    

2

Оптовая торговля Розничная торговля Сайты и интернет-магазины Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Внешняя обработка для обмена данными с интернет-магазином OpenCart. Позволяет быстро наполнить магазин товарами, затем обновлять цены и добавлять новые товары. Далее можно средствами OpenCart настраивать и дополнять карточки товаров как надо для магазина, при этом связь товаров с 1С не теряется.

3840 руб.

30.03.2018    44532    86    139    

89
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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С.
Оставьте свое сообщение