Необычно-экономное использование 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С:Розница 2.3 (для работы с сервисом dolyame.ru)

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

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку.

18000 руб.

19.12.2023    1802    14    6    

11

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    16047    13    18    

13

Обмен данными с сайтом. БП 3.0

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

Обмен данными с сайтом на платформе 1С:Битрикс (и подобными) для 1С: Бухгалтерия предприятия 3.0.

12000 руб.

18.03.2019    31817    117    101    

65

Интеграция 1С — Битрикс24. Обмен задачами

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

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

5040 руб.

04.05.2021    18087    10    15    

16

Универсальный парсер интернет-магазинов

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

С того времени, как я начал парсить сайты, прошло много лет. За это время я спарсил более 100 сайтов и записал эти товары в 1С. В итоге на свет появился универсальный парсер, который поможет Вам спарсить интернет-магазин и при этом не написать ни строчки кода.

9600 руб.

19.10.2018    52493    220    101    

112

SALE! 33%

«Мониторинг цен» – сервис для отслеживания цен конкурентов на ведущих маркетплейсах России

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

Сервис помогает отслеживать цены на ведущих маркетплейсах России только для одного региона – Москва и Московская область. Выполняйте анализ и контролируйте цены Ваших конкурентов сразу в системе 1С.

2400 1608 руб.

29.05.2023    6938    26    41    

15

Выгрузка для АВИТО

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

Выгрузка товаров услуг из 1С для сайта "Авито" раздел "Автозагрузка" выполнена в виде обработки. Обработка подходит для конфигураций УТ, УНФ и Розница. Данная обработка позволяет создавать шаблон с объявлениями для "Авито" - "Автозагрузка".

4200 руб.

07.06.2022    15844    43    56    

38
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ihty 226 17.11.10 14:18 Сейчас в теме
Вопрос про экономию:
Как насчет лицензирования удаленной базы 1С?
3. Elisy 948 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 948 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 948 16.02.12 09:50 Сейчас в теме
Эта же статья опубликована на:
http://habrahabr.ru/blogs/webdev/136415/
Интересны комментарии.
10. bolush 12.03.12 15:01 Сейчас в теме
Спасибо за совет у меня с гуглом родственные связи. а с руководством, половые. все разжеванно не раз. сути нет есть факты...
11. nano1c 171 06.04.15 17:50 Сейчас в теме
непонятно зачем сразу две связи: и выгрузка и напрямую с sql. достаточно одной же! как мне видится самый простой вариант: это прямой доступ к бд любого сайта: и чтение и запись. я делал чтение через объект 1с ВнешниеИсточникиДанных но это не работает через веб да и записать нельзя. Но есть же компоненты прямого DROP-INSERT, непонятно только как из заставить работать через веб. теоретически весь этот тырнет-магаз может представлять из себя тупо внешнюю обработку для УТ. И если напрямую нельзя то уж через xml точно можно, но уже нужна работа веб-прогеров
12. Elisy 948 08.04.15 12:48 Сейчас в теме
(11) можно обойтись 1 связью, если веб-сервер расположен в офисе предприятия. 2 связи показаны для самых извращенных случаев, где 2я связь не обязательно правила конвертации, а, например, РБД.
Прямой доступ к базе данных любого сайта приводит к необходимости постоянной синхронизации 1С и движка сайта. Создание такого импорта-экспорта в несколько раз сложнее, чем настройка правил обмена между базами 1С.
Оставьте свое сообщение