Имя: Пароль:
1C
1С v8
1C + сайт в реальном времени.
,
0 gorden
 
14.03.13
15:01
Добрый день. Есть самописная, очень легкая конфигурация 1С (номенклатура, поставщики, заказы, учет) + MSSQL. Подумываю завести ее на сайт для работы в реальном времени. Связка следующая:

ASP.NET (web страница) <-> V82.COMConnector <-> 1C <-> MSSQL

COM обьект 1С используется в пуле соединений, т.е. при запросе с web страницы не создается каждый раз. Через ASP получаем доступ к обьектам, и функциям 1С. Подключение к 1С с web страницы делается от имени одного пользователя, предварительно созданного в 1С (или можно завести несколько, и в зависимости от продолжительности запросов переключаться между ними).

Для теста, я завел около 70000 товарных позиций. Делаю поиск по названию товара (c ASP скрипта). Замеряю скорость выполнения страницы ~ 0.005 сек. Самый сложный документ (заказ + движения по номенклатуре, поставщику, плану сетов) проводится ~ 0.07

Есть ли смысл? Каковы возможные траблы? Что нужно учесть?

Web-сервисы не предлагать.
1 MSII
 
14.03.13
15:05
А почему не веб-клиент?
2 НЕА123
 
14.03.13
15:07
(1) лицензии
?
3 MSII
 
14.03.13
15:12
(1) "В соответствии с действующим Лицензионным соглашением, использование программных или аппаратных средств, уменьшающих количество пользователей, которые имеют непосредственный доступ к "1С:Предприятию 8", не уменьшает количества требуемых лицензий. Организация должна приобрести Клиентские лицензии по количеству пользователей, в действительности одновременно работающих с системой "1С:Предприятие 8". " (с)
4 MSII
 
14.03.13
15:13
(3) к (2)
5 rs_trade
 
14.03.13
15:18
(0) Не проще ли, просто обмен 1с базы с базой сайта запилить? например на прямых запросах, каждые 2-3 минуты.
6 Maxus43
 
14.03.13
15:19
(5) на прямых - тоже нарушение лиц соглашения
7 Ork
 
14.03.13
15:23
(3) "которые имеют непосредственный доступ к "1С:Предприятию 8""

В слове "непосредственный" у вас встречаются китайские иероглифы?
8 gorden
 
14.03.13
15:25
Одновременно всегда будет работать только один пользователь (назовем его 1СWebUser). Он держит одну сессию/соединение. Т.е. паралельного выполнения (одновременно работающих пользователей) нет. Сайт работает через этого пользователя. Скрипты выполняются в очереди. Если одного такого пользователя не достаточно, можно купить лицензии на 3-4 пользователя и давать ASP подключаться через разных пользователей (в зависимости от занятости). Если у меня на один запрос уходит 0.05 сек, то можно осуществить 200 запросов к 1С в секунду от имени одного пользователя. Т.е. пользователь работает как некий ОПЕРАТОР 1C

(1) Вот к примеру, вы пришли в магазин, там сидит продавец. Он подбирает вам товар, оформляет заказ, делает все необходимые проводки. Он - ОПЕРАТОР (пользователь). Покупатели стоят в очереди и обслуживаются последовательно. Если очередь длинная, то нанимаем еще одного продавца - оператора (т.е. уже 2 пользователя). Но мы ведь не покупаем лицензии на каждого покупателя?
9 Fragster
 
гуру
14.03.13
15:26
веб сервисы круче и быстрее
10 gorden
 
14.03.13
15:27
(8) Извиняюсь, 20 (не 200)
11 ptiz
 
14.03.13
15:28
Всё логично.
12 xReason
 
14.03.13
15:28
(9) а веб-сервисы не "отъедают" также клиентскую лицензию на сервере, как и ком объект?
13 MSII
 
14.03.13
15:29
(7) Перечитай еще раз (3), медленно и вдумчиво.
14 Maxus43
 
14.03.13
15:29
(8) 1с безразницы на твои умозаключения, подпадаешь под (3) лицензионного соглашения с 1с. Считай что лицензия на раб место, если бы за одним компом по очереди вбивали данные - пожалуста
15 gorden
 
14.03.13
15:31
(9) Через веб сервисы не получится транзакций сайт-1с. Или я не прав? Так-же, веб сервисы надо парсить (в смысле данные). Вы уверены, что работа с ними быстрее?
16 Fragster
 
гуру
14.03.13
15:31
(15) что парсить?
17 MSII
 
14.03.13
15:32
(8) Нет такого пользователя - 1СWebUser. Есть конкретные Иванов, Петров, Сидоров. Если они работают втроем одновременно, нужны три лицензии, вне зависимости от того, какие прокладки между этими тремя уважаемыми людьми и информационной базой используются.
18 gorden
 
14.03.13
15:34
(17) А чем 1CWebUser не конкретный пользователь? У него есть свои права, привелегии, доступ к определенным обьектам.
19 Maxus43
 
14.03.13
15:37
(18) что кому ты тут хочешь доказать? Лицензионное соглашение однозначно. Спроси в поддержке 1с - ответят тоже самое
20 alexkr
 
14.03.13
15:41
(18) Внимательно читай лицензионное соглашение.
Тебе предлагают не веб сервисы, а веб интерфес, для своих справочников и документов делаешь управляемые формы, публикуешь базу на веб сервере и работаешь прямиком в базе без лишнего гемора. Насчет скорости не уверен что будет быстрее, но головняка так точно НАМНОГО меньше будет...
21 gorden
 
14.03.13
15:41
(16) Web сервис - обмен XML данными, которые нужно сначала подготовить (сформировать), передать, а затем их распарсить (извлечь). Это ведь отнимает драгоценное время )))
22 gorden
 
14.03.13
15:45
(19) Я ничего не доказываю, а пытаюсь разобраться.

(20) Веб интерфейс - вы имеете в виду Web расширение? Нет, мне к сожалению не подойдет.
23 alexkr
 
14.03.13
15:49
(22) нет, я имею в виду тонкий клиент используемый через браузер - тоесть веб клиент. в 8.2 такая весч появилась... Если база самописная и легкая ( 3 справочника, 2 документа)- то ее адаптировать будет легко и быстро...
24 MSII
 
14.03.13
15:50
25 gorden
 
14.03.13
15:52
(23) (24) Не подходит (((
26 alexkr
 
14.03.13
15:53
(25) почему?
27 pessok
 
14.03.13
15:55
(26) потому что он хочет интернет-магазин сделать :)
28 gorden
 
14.03.13
15:55
(26) Интернет магазин, со своим дизайном, логикой итд.
29 gorden
 
14.03.13
15:55
Лицензия 1С на сервер.
30 MSII
 
14.03.13
15:57
(29) Не обязательна.
31 gorden
 
14.03.13
15:58
Сайт работает как пользователь 1С.
32 alexkr
 
14.03.13
15:59
это из (8)
Вот к примеру, вы пришли в магазин, там сидит продавец. Он подбирает вам товар, оформляет заказ, делает все необходимые проводки. Он - ОПЕРАТОР (пользователь). Покупатели стоят в очереди и обслуживаются последовательно. Если очередь длинная, то нанимаем еще одного продавца - оператора (т.е. уже 2 пользователя). Но мы ведь не покупаем лицензии на каждого покупателя?

Так какой же это интернет магазин? это рабочее место продавца в конторе. Если нужен именно инет магазин, возьмите любой стандартный движек сделайте на нем сайт и наладьте офлайн обмен с базой.
33 MSII
 
14.03.13
16:04
(31) Оба варианта могут работать как с серверной, так и с файловой ИБ. Полагаю, работу с файловой ИБ ты не рассматриваешь. Тогда упоминание лицензии на сервер 1С ни к чему, его приобретать придется в любом случае.
Количество клиентских лицензий, которые тебе нужно будет приборести = числу живых людей, одновременно пользующихся твоим магазином.
Из плюсов твоего варианта остается только дизайн.
34 gorden
 
14.03.13
16:05
(32) Ну да, по логике получается, что так оно и есть - рабочее место продавца в конторе. Это и есть функция сайта. Я об этом и писал.

Обмен данными не интересен. Хочу получить работу в реальном времени и с транзакциями. Долго обьяснять механизм, но суть должна быть такова.
35 alexkr
 
14.03.13
16:11
(0) ладно, пойду спать.
Не делайте одно универсальное решение на все случаи жизни - в результате получается откровенное го...но.
Если нужны и сайт с инет магазином и рабочее место продавца в конторе (два, три... рабочих мест), то сделайте отдельно сайт, на нормальном, стандартном движке с офлайн обменом, и отдельно АРМ продавца с прямым доступом в базу.

Такой вариант может местами и не удобен, но точно более практичен.
А как говорится, зубов боятся в ... ну в общем есть какая то народная мудрость. Обмен это не так страшно, если он отлажен и корректно работает - то его перестаешь замечать и он вовсе не напрягает.
36 gorden
 
14.03.13
16:19
(33) Так я это и пытаюсь понять. Не могли бы вы обьяснить, что значит "число живых" и "одновременно"? У меня есть пользователь/сеанс 1С. Через него сайт (ASP скрипт) обращается к 1С. Пусть это будет рабочее место. Пользователи сайта выстраиваются в очередь за этим рабочим местом, т.е. как бы работают последовательно, по очереди  с одного рабочего места. Т.е. в один момент времени работает один живой человек.

Если пользователей сайта становится больше, можно добавить еще одну клиентскую лицензию, дабы распределить пользователей сайта по 2м рабочим местам для ускорения. И т.д.
37 ptiz
 
14.03.13
16:27
(36) Тебе пытаются объяснить не про техническую часть, а про лицензионную.
Взять ту же самую 1С применительно к SQL-серверу.
Несмотря на то, что коннект к SQL устанавливает одно приложение "сервер 1С" от имени одного юзера, лицензий на SQL надо купить столько, сколько "живых" юзеров работают с SQL через "сервер 1С".
38 Serginio1
 
14.03.13
16:35
С точки зрения работа сайта с 1С через вэб сервисы проще разделять задачи для Вэб программиста и 1С программиста. Структуры генерятся автоматически. Единственный минус, это возможность разрыва соединения, когда напрмер метод создающий документ отработал послал ответ, а сайт его не получил. Были такие ситуации. Для этого нужно дополнительно отрабатывать такие ситуации.
39 gorden
 
14.03.13
16:38
(37) Я не могу найти в лицензионном соглашении 1С привязку к "живому" пользователю. Там речь идет о лицензиях на "рабочее место" и на "сеанс".
40 gorden
 
14.03.13
16:39
Сеанс у меня один. Рабочее место одно.
41 fmrlex
 
14.03.13
16:47
Интересно. Если конфа стоит на 1 компе и в конторе к компу в разное время подходят 10 человек и делают свои операции. Необходимо купить 10 лицензий?
42 gorden
 
14.03.13
16:47
(38) Как раз я и хочу разделить задачи. Т.е. в моем случае в 1С есть некий набор необходимых функций доступных через внешнее соединение. Что-то вроде своего мини API 1С-сайт. Скажем, создать заказ, провести оплату итд. В эти функции заложен весь внутренний алгоритм 1С (создание обьектов, проводки итд), скрытый для web программиста.

А Web программист спокойно обращается к этим функциям через ASP <-> COM, получая необходимые данные и визуализирует их как надо.
43 sda553
 
14.03.13
16:48
(17) Правильно, если Иванов Петров и Сидоров распечатали себе отчет на бумагу, ушли домой и ночью решили этот отчет почитать, то независимо ни от чего, считается, что они пользовались 1С ночью
44 gorden
 
14.03.13
16:49
(41) Вот и я об этом-же!!!!!!
45 sda553
 
14.03.13
16:50
(43) +А не дай бог вы этот отчет в метро налепите на стену, на лицензиях разоритесь
46 fmrlex
 
14.03.13
16:50
"В соответствии с действующим Лицензионным соглашением, использование программных или аппаратных средств, уменьшающих количество пользователей, которые имеют непосредственный доступ к "1С:Предприятию 8", не уменьшает количества требуемых лицензий. Организация должна приобрести Клиентские лицензии по количеству пользователей, в действительности ОДНОВРЕМЕННО работающих с системой "1С:Предприятие 8". " (с)

Понятие одновременности есть в юриспруденции?
47 fmrlex
 
14.03.13
16:54
Т.е. если я придумываю механизм НЕОДНОВРЕМЕННОЙ работы пользователей, то в случае судебных разберательств я смогу я могу аппеллировать к данному факту.
48 fmrlex
 
14.03.13
16:54
(47) "я смогу" - зачеркнуть
49 fmrlex
 
14.03.13
16:55
(47) S/аппелировать/апеллировать
50 sda553
 
14.03.13
16:56
(0) А по теме, тебе про веб сервисы дело говорят. Поднимаешь веб сервис на 1С и забудь о пулах ком объектов.
Сайт делает soap запрос на веб сервис 1С, получает ответ и радуется в соответствии со своей логикой.

Либо в зависимости от бизнес деманда, если не нужна оперативность данных, можно сделать веб сервис у сайта. Тогда веб сервис 1С не нужен. 1С раз в сутки будет подключаться к веб сеовису сайта, сливать в его БД нужные данные и все опять счастливы
51 gorden
 
14.03.13
16:57
(46) Я так полагаю, что даже если под словом "ОДНОВРЕМЕННО" понимается открытый сеанс пользователя, то в моем случае открытый сеанс будет ОДИН.

(46) Так-же, "НЕПОСРЕДСТВЕННОГО" доступа к 1С (как описано) в моем случае у пользователей сайта нет. Они работают с WEB сервером.
52 fmrlex
 
14.03.13
16:59
(51) Я бы все-равно сначала получил бы консультацию юриста.
53 gorden
 
14.03.13
17:00
(50) Да, я знаком с веб сервисами и поднимал их уже. Но не устраивает отсутствие транзакционности и раздвоение логики (сайт-1С). К сожалению не могу все детально описать. Проект очень нестандартный.
54 gorden
 
14.03.13
17:04
(50) И к тому-же, например на один и тот-же запрос через COM и веб сервис в общей сложности уходит соответственно 0.005 сек (COM) и 0.5 сек (soap). Думаю разница очевидна.
55 sda553
 
14.03.13
17:17
(54) Ты тысячу запросов замерил?
56 sda553
 
14.03.13
17:17
Одновременных
57 sda553
 
14.03.13
17:19
Я конечно понимаю, что ком приложение поднятое в памяти отлично обработает 1 запрос, но тут речь идет о скорости обработки одновременных запросов
58 Biker
 
14.03.13
17:27
Выгрузи 1-раз себе эти 70000 поз, а после делай обмен только с изменениями. Постоянно таскать из 1с этот каталог некомильфо.
59 gorden
 
14.03.13
17:29
У меня в 1С есть функция доступная для внешнего соединения. В ней идет еденичный запрос к номенклатуре (поиск).

Если на ASP я обращаюсь через COM к 1С установленной на этом же сервере, то в общей сложности страница ASP c результатом запроса "отрабатывает" за 0.005 сек.

Если же на ASP я обращаюсь к веб сервису (который в свою очередь в 1С обращается к этой же внутренней функции 1С)то ASP страница в среднем отрабатывает за ~ 0.05.

Понятно, что в обоих случаях функция выполняется одинаково по времени, но формирование SOAP, далее IIS, потом парсинг SOAP на ASP дает о себе знать. Это исключительно мои замеры основанные на еденичных запросах. Насчет одновременно, надо поэксперементировать.
60 gorden
 
14.03.13
17:29
(57) У меня в 1С есть функция доступная для внешнего соединения. В ней идет еденичный запрос к номенклатуре (поиск).

Если на ASP я обращаюсь через COM к 1С установленной на этом же сервере, то в общей сложности страница ASP c результатом запроса "отрабатывает" за 0.005 сек.

Если же на ASP я обращаюсь к веб сервису (который в свою очередь в 1С обращается к этой же внутренней функции 1С)то ASP страница в среднем отрабатывает за ~ 0.05.

Понятно, что в обоих случаях функция выполняется одинаково по времени, но формирование SOAP, далее IIS, потом парсинг SOAP на ASP дает о себе знать. Это исключительно мои замеры основанные на еденичных запросах. Насчет одновременно, надо поэксперементировать.
61 gorden
 
14.03.13
17:31
(58) Почему?
62 Biker
 
14.03.13
17:37
(61) Ляжет такое творение при нагрузке от 100-ни и кста веб лучше отделить от 1с по соображениям сетевой безопасности.
63 sikuda
 
14.03.13
17:42
Правильно тебе написали насчет лицензий. И еще ты должен приобрести клиенских лицензий на MS SQL столько-же, или у тебя должна быть соответствующая версия ПО.(Там для 1С тоже всего три соединения используется)

В твоей связке 1С лишняя, расширь кругозор...
64 sikuda
 
14.03.13
17:42
Очень популярное и даже старое решение
ASP.NET (web страница) <-> MSSQL
65 gorden
 
14.03.13
17:44
(62) От сотни чего, запросов или пользователей?

Выше я описывал, что все работает из под одного пользователя 1С. Т.е. запросы с сайта к 1С идут последовательно (плюс кешируются). Если скрипт ASP, делающий запрос в 1С выполняется за 0.005 сек, то за секунду можно выполнить 200 запросов от имени одного и того-же пользователя 1С. Понятно что это грубо, и запросы могут быть разными. Можно завести 2, 3, 4 пользователя 1С и распределять нагрузку между ними. НО одновременно 100 пользователей 1С не будет.
66 Serginio1
 
14.03.13
17:44
(42) Ну опять же для COM нужно что бы сайт и 1С были в одной локальной сети, либо VPN. С вэб сервисами ты не привязан. Опять же типизация (генерация классов)
(60) А зачем нужна такая скорость? Как правило запись документа значительно дольше. Да и пользователь заметит длительность как минимум 0.5 секунды.
67 Serginio1
 
14.03.13
17:45
(63) Ему нужна лицензия на сессию. Он может ограничить пул по количеству ядер.
68 samozvanec
 
14.03.13
17:46
(42) чем твое решение принципиально от веб сервисов отличается? парсить? преобразовния будут в любом случае. с веб сервисами может даже технически проще выйти. уж не знаю, как по производительности.
69 samozvanec
 
14.03.13
17:48
(65) вот в (63) дело говорят. тебе вообще нафига там 1с?
70 Serginio1
 
14.03.13
17:49
68+ Я тоже сначала был за решение с комами, но в итоге мне понравился вариант с вэб сервисами. Там где нужна скорость можно использовать вариант с прямыми запросами.
71 gorden
 
14.03.13
17:51
(70) Транзакции!!!!!! Имеют большое для меня значение..
72 gorden
 
14.03.13
17:52
(70) Как можно работать с транзакциями используя веб сервисы?
73 Serginio1
 
14.03.13
17:52
(69) Не все так просто что можно вытащить одним запросом.
Я кстати так работал, Вэб программисты были в шоке от названий полей.
74 Serginio1
 
14.03.13
17:54
(72)  Можно. Кстати а какой механизм транзакций ты используешь с ком?
75 gorden
 
14.03.13
17:54
(73) Поля названы как следует. Решение англоязычное, поэтому все названия кратки и понятны.
76 Serginio1
 
14.03.13
17:56
(75) Это касалось прямых запросов к SQL базе.
77 samozvanec
 
14.03.13
17:57
(75) на (69) ответь. зачем тебе 1с?
78 Serginio1
 
14.03.13
18:01
(74) По поводу транзакция понятно.
Вернее не пробовал, но можно через База.НачатьТранзакцию()
Здесь действительно ком предпочтительней.
79 gorden
 
14.03.13
18:06
(77) Друзья, у каждого свои привычки и видение. Обьяснить почему мне надо именно так - вопрос долгого развернутого доклада и поверьте, на то есть причины. Да вы и не вдавайтесь. Просто я вас хотел спросить как вы смотрите на эту связку, хотел узнать реальный опыт. Спасибо за комменты.
80 Эстет хренов
 
14.03.13
18:24
(0) Битрикс не предлагать? или у вас свой путь?
81 gorden
 
14.03.13
18:26
(80) Битрикс не пойдет (((
2 + 2 = 3.9999999999999999999999999999999...