Необычно-экономное использование 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 веб-сайта для отображения данных удаленной конфигурации

См. также

API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3

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

Модуль для интеграции с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress. При помощи расширения поддерживаются следующие методы: обмен остатками товаров, обмен ценами, обработка заказов, печать стикеров, загрузка отчетов комиссионеров по API (в том числе Я.Маркет). Подходит для конфигураций Беларуси. Поддержка искусственного интелекта GigaChat

59990 руб.

05.09.2023    7083    87    74    

68

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

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15727    10    17    

11

Оплата покупок "Долями" в 1С:Розница 2.3 (для работы с сервисом dolyame.ru)

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

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

18000 руб.

19.12.2023    1156    6    0    

6

SALE! 15%

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

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

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

12000 10200 руб.

18.03.2019    31267    109    100    

62

Интеграция 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    17541    6    15    

13

SALE! 33%

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

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

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

2400 1608 руб.

29.05.2023    6645    25    37    

15

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

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

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

4200 руб.

07.06.2022    15331    42    56    

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