0. Smaylukk 791 11.04.19 16:53 Сейчас в теме

HTML-клиент у конфигурации 1С

Приветствую. В этой публикации опишу свой опыт создания html-клиента для конфигурации 1С с помощью http-сервисов. HTML-клиент в этом случае - это frontend (html + css+ js), который генерирует и выдает пользователю конфигурация + backend, который тоже реализован в этой же конфигурации.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. alexey.karmanov 186 18.04.19 04:17 Сейчас в теме
Дмитрий, спасибо за статью. Я же правильно понимаю, что при этом у вас куплено как минимум 20 пользовательских лицензий 1С (при 20 текущих возможных подключениях через браузер)?
3. GreenDragon 18.04.19 07:40 Сейчас в теме
(1) Что вы имеете ввиду под термином "подключение"? Ясно же написано - данные передаются посредством http-сервисов. Они тем и хороши, что лицензии потребляются только на момент установления короткой сессии передачи данных от фронта к энду и получения ответа.
8. alexey.karmanov 186 18.04.19 08:41 Сейчас в теме
10. Smaylukk 791 18.04.19 09:04 Сейчас в теме
(8) Лицензии есть. Но пользователи прямо вот чтобы все одновременно подключались - нет. Само подключение на нормальном железе срабатывает меньше секунды, а подключение еще остается висеть. А сформированная html-страничка, которая загржена в браузер, думаю, что уже не должна что-то по лицензиям.
12. GreenDragon 18.04.19 09:09 Сейчас в теме
(8) Различайте web и http сервисы. Подумайте над ситуацией, когда у вас с фронтэндом работает тысяч 15 человек (например, личный кабинет ЖКХ, написанный на пыхе), а бэком является база 1С. Взаимодействие их построено на http-сервисах (данные для формирования платёжки, приём показателей разнообразных счётчиков и прочее). Сколько необходимых лицензий для покупки вы озвучите заказчику решения?
19. alexey.karmanov 186 18.04.19 09:39 Сейчас в теме
(12) К огромному сожалению, я бы озвучил цифру в 15 тысяч лицензий.

Вот как отвечает сама 1с по этому поводу (пункт 59 вот здесь http://v8.1c.ru/predpriyatie/questions_licence.htm):

59. Организация предоставляет доступ к веб-сервисам, реализованным в "1С:Предприятии 8". Какое количество и каких лицензий необходимо приобрести организации?

Ответ "1С":

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

Обратите внимание, что в ответе фигурирует конкретная фраза "доступ к данным" (хотя далее по этому же тексту "доступ к инф. базе").

Но это всё ИМХО, именно поэтому я и задал здесь вопрос по лицензированию, так как для меня самого позиция вендора по этому вопросу пока не ясна.

Если сможете прояснить ситуацию с конкретными ссылками от вендора - буду благодарен.
Diversus; BigB; +2 Ответить
27. rpgshnik 1735 18.04.19 10:09 Сейчас в теме
(19) Пока не ясна я думаю и наказывать не будут. А так да при грамотном знание веб-разработки можно мутить свои сверхтонкие клиенты и запускать тысячи пользователей :))
chemezov; +1 Ответить
49. GreenDragon 18.04.19 10:54 Сейчас в теме
(19) "Доступ к данным" осуществляется в рамках 20-секундной (максимальный дефолт) сессии. Вы когда из 1С распечатали справку и понесли её, допустим в банк. Банк этими данными будет пользоваться. Вы тоже будете на банк лицензии покупать? Пример понятен? Front обратился к web-серверу с post-запросом. Веб-сервер Через коннектор перенаправляет запрос на получение/запись порции данных. Вот в этот момент потребляется лицензия. Далее 1С приложение возвращает ответ web-серверу и... всё. Лицензия больше не нужна. То, что web-сервер будет делать с полученными данными - это как ситуация со справкой в банк, которую я описал выше.

В приведённом ответе от 1С это и написано.
...на такое количество рабочих мест, с которых одновременно осуществляется доступ к информационной базе.


Видите в тексте слово "одновременно"? Вам сама 1С не даст превысить число лицензий.
chemezov; Ditron; +2 Ответить
54. alexey.karmanov 186 18.04.19 11:08 Сейчас в теме
(49) Пример с банком, конечно, утрированный. ИМХО сам вопрос лежит не в технической плоскости, а в юридической. И совершенно очевидно, какую позицию в данном вопросе выгоднее занять вендору. А ответ "1С" можно толковать двояко, поэтому видимо единственный способ выяснить - сделать конкретный запрос в "1С" по лицензированию конкретного программного решения. Попробую задать его и, если не забуду, отпишусь здесь - что они ответили.
114. babys 83 06.08.19 09:30 Сейчас в теме
(54) Нет смысла запрашивать. У меня проект под контролем 1С, 1с + битрикс, все запросы через http, ЗАКУПЛЕНО по рекомендации 1С лицензий под ОДНОВРЕМЕННОЕ КОЛИЧЕСТВО ПОЛЬЗОВАТЕЛЕЙ В 1С. По проекту общая численность пользователей ~100тыс, лицензий 5тыс.

ЗЫ: Возможно, что это мнение 1С только для данного проекта, там много кто на пятки, по цене, наступает.
alexey.karmanov; +1 Ответить
115. s_vidyakin 62 06.08.19 15:44 Сейчас в теме
(114) И будет наступать, если жадность "АО 1С" будет продолжать стоять на 1 месте
Сейчас ничего не стоит написать самописную системку с веб-клиентом, хранящую нужные данные в себе, с периодическим обменом с 1С
Доступа к базе напрямую нет - не надо и лицензии. А то что обмен идет раз в секунду это уже технические моменты )
53. GreenDragon 18.04.19 11:08 Сейчас в теме
(19) К вопросу о 15 тысячах лицензий. Я бы вас застрелил из рогатки, если честно. Используйте шину. В случае нехватки лицензий у вас будет только увеличиваться время обработки очереди. Если очередь на кассе растёт, значит пора нанять ещё одного кассира (купить лицензию)
55. alexey.karmanov 186 18.04.19 11:10 Сейчас в теме
(53) Не надо так. Я уже отписался выше. С технической точки зрения у меня вопросов здесь никаких нет. Здесь вопрос чисто юридического характера.
68. GreenDragon 18.04.19 13:06 Сейчас в теме
(55) Перефразирую. Вы технически не сможете юридически нарушить лицензию.
69. 🅵🅾️🆇 435 18.04.19 13:08 Сейчас в теме
(68) Все так, если вы делаете свой интерфейс через OData, http сервисы, web сервисы.
То можете делать сколько угодно рабочих мест, главное чтоб суммарное количество сеансов в консоле кластера (НЕ РАБОТАЮЩИХ ОДНОВРЕМЕННО ЛЮДЕЙ!) не превышало количество ваших лицензий.
Причем этот пункт четко прописан и оговорен.
Ditron; BigB; +2 Ответить
79. TitanLuchs 153 18.04.19 13:45 Сейчас в теме
(68)
Перефразирую. Вы технически не сможете юридически нарушить лицензию.

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

Хотя вопрос "Какого пользователя надо считать работающим, а какого - нет" остается открытым.
Dach; ellavs; BigB; +3 1 Ответить
100. ellavs 645 19.04.19 17:10 Сейчас в теме
(79) Долго обсуждали в чате эту тему с коллегами. Выяснили, что клиентские лицензии в этом случае "не кушаются". Нужна только одна серверная лицензия (на кластер). В учебном центре 1С эту информацию также подтвердили ("клиентские лицензии при получении данных через http-сервис не нужны"), также коллеги делали запрос в 1С, где эту информацию опять же подтвердили. Клиентские лицензии нужны только если вы подключаетесь через тонкий/толстый/веб-клиенты (не путать веб-клиента с http-сервисами).
Tarlich; Dach; +2 Ответить
103. alexey.karmanov 186 22.04.19 04:11 Сейчас в теме
(100) Итого мы имеем 2 противоречащих друг другу позиции от вендора:
- цитата из переписки с вендором, приведенная Юрием в (75) ... "1000 лицензий во всех трех вариантах."
- "клиентские лицензии при получении данных через http-сервис не нужны" ... "также коллеги делали запрос в 1С, где эту информацию опять же подтвердили"
104. Smaylukk 791 22.04.19 09:21 Сейчас в теме
(103) Нет, походу не так. Лицензии для http-соединений не ищутся в момент создания этого соединения. Можно посмотреть в утилите администрирования консоли кластера 1С. Но они по информации от вендора должны быть под количество активных пользователей (как писали выше - не распечатанные программные или usb-ключ).
Правда об этом четко нигде не написано - что такое "активные пользователи", как считать их количество.
106. alexey.karmanov 186 22.04.19 11:14 Сейчас в теме
(104) Давайте попробуем зайти с другой стороны... :)

Вот я читаю Лицензионное соглашение на "1С:Предприятие 8.3"

Раздел "ОПИСАНИЕ ПРАВ И ОГРАНИЧЕНИЙ"

Цитата "Лицензиат имеет право установить и использовать в соответствии с сопроводительной документацией ПРОГРАММНЫЙ ПРОДУКТ на одном компьютере в один момент времени. Использование ПРОГРАММНОГО ПРОДУКТА на нескольких компьютерах допускается только при наличии у Лицензиата Клиентской лицензии "1С:Предприятия 8" на соответствующее количество рабочих мест и только в соответствии с правилами лицензирования рабочего места пользователя (см. далее)."

Раздел "Лицензирование рабочего места"

Цитата "Доступ к ПРОГРАММНЫМ ПРОДУКТАМ осуществляется в один момент времени с такого количества рабочих мест, которое обозначено в Клиентской лицензии "1С:Предприятия 8", правомерно приобретенной Лицензиатом. При этом считается, что к ПРОГРАММНЫМ ПРОДУКТАМ получен доступ с данного компьютера и что они используются в тех случаях, когда осуществляется запись ПРОГРАММНЫХ ПРОДУКТОВ или их частей в память компьютера, а также в иных случаях, когда имеет место прямая или косвенная связь между компьютером, рабочей станцией, карманным персональным компьютером или иным цифровым электронным устройством и ПРОГРАММНЫМИ ПРОДУКТАМИ."

ИМХО рабочее место клиента, который делает запрос к базе через веб-сервисы со своего рабочего места через браузер, попадает под условия необходимости лицензирования рабочего места, так как имеется косвенная связь между его компьютером и ПРОГРАММНЫМ ПРОДУКТОМ (база 1с) через веб-сервисы.
107. Smaylukk 791 22.04.19 11:21 Сейчас в теме
(106) Доступ в один момент времени - вы это не выделили. Лицензия нужна на момент формирования в моем случае HTML-кода (когда идет чтение/запись в память). Загруженная и выведенная в браузер страничка - нужна ли лицензия, когда она просто показывается и никаких действий не делается?
AlexK_2012; Irwin; +2 Ответить
108. alexey.karmanov 186 22.04.19 11:26 Сейчас в теме
(107) Точно, я упустил этот момент.
52. TitanLuchs 153 18.04.19 11:05 Сейчас в теме
(12) А чем в данном случае принципиально отличаются web и http сервисы? Ничем.
56. alexey.karmanov 186 18.04.19 11:12 Сейчас в теме
(52) Юрий, я знаю, что вы специализируетесь как раз на этой теме. Наверняка уже разобрались для себя в вопросах лицензирования и знаете позицию вендора?
59. TitanLuchs 153 18.04.19 11:43 Сейчас в теме
(56) Позиция вендора - количество лицензий должно быть равно количеству одновременно работающих пользователей. То есть, 100 человек сидят в интерфейсе, аналогичном интерфейсу ТС - 100 лицензий должно быть зарезервировано в шкафу, несмотря на то, что физически они не используются сервером.
BigB; alexey.karmanov; +2 Ответить
62. Smaylukk 791 18.04.19 11:49 Сейчас в теме
(59) Вопрос в том, как посчитать и доказать, что они одновременно это делали.
70. GreenDragon 18.04.19 13:15 Сейчас в теме
(59) Юрий, лишний раз выражу своё уважение за сверхтонкий клиент. Хоть мы его и не используем, но решение просто потрясающее. С удовольствием слушал ваш доклад на конференции в 2017 году. Но вот в данном случае, меня терзают смутные сомнения в вашей правоте.
У нас организация продаёт запчасти. Обычная торговля в опт и розницу. Для оформления заказов клиентами, уточнения их баланса, остатков складских, отслеживания статусов заказов используется asp.net приложение. Это фронт.
В качестве бэка база 1С, которую сайт дёргает, когда ему требуется информация. Внимание вопрос - сколько лицензий 1С нам требуется приобрести?
TitanLuchs; Elisy; +2 Ответить
75. TitanLuchs 153 18.04.19 13:25 Сейчас в теме
(70) За добрые слова спасибо!
По поводу лицензий - меня спросили про позицию вендора, я привел цитату из моей переписки с вендором. Приведу цитату из моего письма:


Описание примера работы пользователей с БД 1С из браузера:
Используется фронт для создания заказов клиента из браузера: https://digitcat.ru/demo/di-unf/
Одновременно с фронтом работает 1000 человек. Для обработки их запросов на сервере 1С:Предприятия создается 5 сеансов.


Описание технологии:

Вариант 1. Прямой запрос. Пользователь подключается к БД 1С путем набора в адресной строке браузера прямого пути к базе: http://servername.ru/basename/hs/servicename?parameter1=value1¶meter2=value2¶meterN=valueN. 1С возвращает готовый html-код, который отображается в браузере. Все дальнейшие запросы к БД 1С происходят также по прямым ссылкам "http://servername.ru/basename/hs/servicename"

Вариант 2. Запрос через посредника без промежуточной БД на сайте. Есть сайт, который содержит набор php-скриптов. Пользователь подключается к странице сайта: http://sitename.ru/scriptname.php?parameter1=value1¶meter2=value2¶meterN=valueN.
Скрипт получает запросы из браузера, дополнительно их модифицирует: меняет кодировку, часть параметров переводит в понятный 1С формат (например, перевод из кириллицы в формат URL), дополняет запрос новыми параметрами (например, идентификатор сессии, токен для проверки подлинности запроса). Также проверяется доступность БД 1С и если она недоступна, выполняются определенные действия (вывод сообщения об ошибке или редирект на другую страницу).
Конфигурация 1С выполняет этот запрос и возвращает результат, который снова обрабатывается скриптами на сайте: результат декодируется, определяется успешность выполнения запроса (несмотря на то, что номинально запрос выполнен успешно и возвращает ответ "200", с точки зрения логики решения запрос может считаться невалидным; пример - неверный токен или идентификатор сессии и 1С возвращает сообщение об ошибке авторизации, которое выводится вместо страницы со списком номенклатуры).

Вариант 3. Запрос через посредника с использованием промежуточной БД на сайте.
Нам незачем все запросы, поступившие от пользователей, перенаправлять к БД 1С, если с момента выполнения предыдущего запроса данные в 1С не менялись. Например, мы выводим список номенклатуры с актуальными остатками и ценами. С базой работают несколько посетителей, и все их запросы на отображение списка товаров будут возвращать один и тот же результат до тех пор, пока в БД 1С не будут изменены остатки или цены.
Для разгрузки базы 1С мы создаем на сайте собственную БД на MySQL, которая хранит результаты выполнения запросов к БД 1С. Когда первый пользователь в браузере выполняет запрос, он перенаправляется к БД 1С, его результат сохраняется в БД сайта и в дальнейшем сразу возвращается всем остальным пользователям. Вместе с результатом запроса в БД сайта мы храним дату актуальности данных этого запроса.
После модификации данных в 1С конфигурация делает запрос к сайту и устанавливает в БД сайта новую дату актуальности данных.
При следующем запросе пользователя к сайту скрипты php проверяют актуальность данных в БД сайта, определяют, что данные пора обновить, перенаправляют запрос к БД 1С, возвращают его результат пользователю и в этой же транзакции обновляют результат этого запроса в БД сайта.
По сути, получаем работу пользователей с БД сайта с обновлением данных в ней по мере утраты их актуальности (аналог работы сайта на битрикс с собственной базой и периодическим обменом с БД 1С, только обмен делается не по расписанию, а по событию в конфигурации 1С). Блок-схема данного процесса приведена ниже.


С учетом того, что со страницей сайта одновременно работают 1000 пользователей, на стороне сервера 1С во всех трех случаях задействовано 5 сеансов, сколько клиентских лицензий 1С должен купить владелец такого сайта в каждом случае?



Ответ от вендора:
1000 лицензий во всех трех вариантах.


Насколько я понял, интерфейс ТС - это 100% первый вариант. Попадает ли ваш пример под один из трех вариантов - затрудняюсь ответить. Если у вас на сайте нет своей СУБД, а все данные берутся из 1С, то скорее всего это вариант 2 со всеми вытекающими.

Как-то так. Оперируем пока только этими исходными данными, от себя ничего не придумываем. Всех клиентов предупреждаем, что запас лицензий должен быть.
Irwin; vv2; tormozit; GreenDragon; alexey.karmanov; BigB; Soloist; acanta; +8 Ответить
116. AlX0id 06.08.19 16:20 Сейчас в теме
(75)
Вполне себе хамская позиция, на мой взгляд. Да и вряд ли ее можно юридически обосновать в 3 случае.
На мой взгляд напрашивается вопрос - а если из одного сеанса базы я распечатываю 100 тыс листов прайсов и тем самым ознакамливаю клиентов с ценами из БД 1С - мне тоже надо купить 100 тыс лицензий?
72. GreenDragon 18.04.19 13:20 Сейчас в теме
(59) Разжуйте мне, пожалуйста логическую связь между официальной позицией вендора, озвученной в (12) и вашей фразой "100 человек сидят в интерфейсе, аналогичном интерфейсу ТС - 100 лицензий должно быть зарезервировано в шкафу".
78. TitanLuchs 153 18.04.19 13:36 Сейчас в теме
(72) Не уверен, что смогу более подробно разжевать фразу "На каждого работающего пользователя должна быть куплена лицензия". Сервер 1С при работе через http-сервисы лицензию не кушает, но она должна быть - пусть в нераспечатанном виде стоит на полке в шкафу, но она есть и она куплена.
А то, что в одном случае используются web-сервисы, в другом http-сервисы, не меняет сути дела, так как web-сервис это подвид http-сервиса.
ellavs; GreenDragon; +2 Ответить
2. CodeNull 18.04.19 05:30 Сейчас в теме
При авторизации на сервер передается логин и пароль, по логину ищется пользователь ИБ, от пароля берется SHA1-хеш и ищется в свойстве СохраняемоеЗначениеПароля пользователя ИБ. Спасибо Антону Ширяеву за его обработку, но на ИС не могу найти публикацию.

Получается, что авторизация выполняется на уровне ИБ, а не платформы/веб-сервера? Все сервисы изначально доступны без basic или ntlm авторизации?
11. Smaylukk 791 18.04.19 09:07 Сейчас в теме
(2) Да, авторизации веб-сервера нет. Все прописано в http-сервисах. Но опубликованы таким образом у меня только 5 http-сервисов - Index, Изображения, Скрипты, Стили, Файлы - остальные http-сервисы, web-сервисы, oData, веб-клиент закрыты и опубликованы по другому адресу.
4. BudkoT 18.04.19 07:42 Сейчас в теме
Небезопасный велосипед?
5. CodeNull 18.04.19 08:00 Сейчас в теме
(4) Почему небезопасный? Все зависит от алгоритмов авторизации и настроек сервера.
13. Smaylukk 791 18.04.19 09:23 Сейчас в теме
(4) Не могли бы вы расширить свой коммент и обозначить в чем тут вы видите небезопасность?
rpgshnik; +1 Ответить
6. Elisy 921 18.04.19 08:20 Сейчас в теме
В свое время был выбор между http-сервисами 1С и Asp.Net-проектом с подключением к 1С. Выбрали 2й вариант
Какие ограничения у http-сервисов:
1. Производительность - 1С проиграет. Тяжело управлять кэшированием, асинхронные вызовы делать нельзя.
2. SEO-оптимизация затруднительна (URL имеет префикс)
3. Обработка изображений - в 1С ограничена. Изображения должны подаваться в нескольких размерах - для каталога мелкие, для карточки товара - крупные
4. Обработка 404, 500 ошибок. Перенаправление анонимных пользователей на регистрацию или вход.
Т.е. для мелких проектов допустимо использовать 1С. При росте проект упирается в ограничения.

Реализовали несколько крупных проектов. Веб-приложение подключается к 1С и получает необходимые данные или записывает их.
https://www.domosfera.kz
https://www.gallery.kz
https://ogo.kg
mivari; oleg-m; mvxyz; JohnConnor; testnv0; VVi3ard; acanta; TreeDogNight; alexey.karmanov; YPermitin; +10 Ответить
7. YPermitin 5825 18.04.19 08:30 Сейчас в теме
(6) тот момент, когда комментарий не менее полезный, чем сама статья! :)

(0) спасибо автору за статью!
16. Smaylukk 791 18.04.19 09:31 Сейчас в теме
(6) Спасибо за ваш ответ. Согласен, для каждого проекта свои пути реализации. Ваши реализации больше для стороннего пользователя, мой проект - более внутренний. И у заказчика не очень складывалась работа с веб-мастерами по другим проектам.
28. TitanLuchs 153 18.04.19 10:25 Сейчас в теме
(6) Что имеется в виду под "асинхронные вызовы делать нельзя"? JS поддерживает асинхронные http-запросы, 1С способна обработать несколько запросов одновременно.
38. Elisy 921 18.04.19 10:42 Сейчас в теме
(28) Я имел ввиду многопоточность на сторон сервера. В Asp.Net AsParallerl(), async-await
Натолкнули на мысль
В 1С нельзя расшарить один статический объект в памяти среди подключений. Например, сделать счетчик онлайн посетителей.
42. Smaylukk 791 18.04.19 10:46 Сейчас в теме
(38) Через регистр сведений можно, только надо определиться, кто считается онлайн-посетителем.
57. Elisy 921 18.04.19 11:13 Сейчас в теме
(42) Регистры хранятся в БД. Обращения к БД на запись или чтение всегда ресурсоемки. Переменные в памяти намного быстрее работают.
45. TitanLuchs 153 18.04.19 10:49 Сейчас в теме
(38) Если речь конкретно о счетчике онлайн-посетителей, то можно считать активные сессии.
А работать с одним объектом в памяти (с временным хранилищем например) можно попробовать, если включить переиспользование сеансов. Но это при относительно небольшом количестве подключений, конечно же.
tacu; Elisy; +2 1 Ответить
9. logarifm 1052 18.04.19 08:49 Сейчас в теме
(0) Интересные мысли и отличная реализация. Поставил плюс.
14. fr13 635 18.04.19 09:27 Сейчас в теме
Для чего нужна 1С в этом решении? Только ради БД?
17. Smaylukk 791 18.04.19 09:36 Сейчас в теме
(14) Вся логика, справочники, документы, движения - все сначала делалось в конфигурации, только потом делался http-сервис. Также идет обмен с центральной конфигурацией.
И работать можно получается и в тонком, веб-клиенте, и в html-клиенте.
Ну а если брать в целом - любой сайт использует какую-то БД.
И самой большой плюс - фронт и бек можно делать силами 1С разработчика
Zeskord; Elisy; +2 Ответить
20. fr13 635 18.04.19 09:42 Сейчас в теме
(17) Я это к тому, что зачем упираться в ограничения платформы если можно было использовать реляционную (NoSQL) базу, а в качестве бэк энда взять тот же Node.js.
Но если я правильно понял, то так исторически сложилось, что сначала была база на 1С и только потом были прикручены http сервисы.
21. Smaylukk 791 18.04.19 09:49 Сейчас в теме
(20) Заказчик - компания транспортной доставки. Весь учет ведется другой базе на 1С. Этот проект - это только частный случай доставки, который вылился в отдельную базу. Также у заказчика были в наличии только 1С-ники
29. fr13 635 18.04.19 10:26 Сейчас в теме
(21) Я понял. В целом очень достойно. Спасибо что поделились опытом!
34. Elisy 921 18.04.19 10:34 Сейчас в теме
(20)
1. 1C позволяет быстро создать прототип.
2. 1С позволяет не задумываться об интерфейсе администратора. В веб-проектах мало создать интерфейс пользователя, еще нужно управлять данными.
3. В 1С есть специализированные объяекты. Тяжело самому организовать регистр накопления, например.
4. У 1С есть сообщество и много написанных обработок на все случаи жизни.
oleg-m; neuromancer_aza; vovan_victory; EGOLEGE; TitanLuchs; Smaylukk; +6 Ответить
41. fr13 635 18.04.19 10:46 Сейчас в теме
(34) 1-3 ничего не будет стоить, когда речь зайдет об масштабируемости, асинхронности. Про 4 - общество по той же ноде думаете меньше? ))
Тем более уже существует metadata.js
60. Elisy 921 18.04.19 11:45 Сейчас в теме
(41)
1-3 ничего не будет стоить, когда речь зайдет об масштабируемости, асинхронности.

Давайте конкретнее. Оптовая компания в нескольких странах получает заказы, оплату и делает реализации со складов в разных регионах.
Вы хотите сказать, что регистры накопления Остатки, Взаиморасчеты, регистр сведений Цены можно быстее реализовать, чем на 1С? Мало реализовать - ими нужно пользоваться - искать/исправлять ошибки, обрезать через 2-3 года, получать отчеты по ним. Еще нужно, чтобы они быстро работали, для этого крутить индексы в БД. А еще хочется права установить - этот может читать, а этот может записывать. Потом бухгалтерия попросит в свою бухгалтерскую программу выгрузку сделать.

Про 4 - общество по той же ноде думаете меньше? ))

Сообщество по ноде скажет, как вывести 2+2 или какой тип данных взять за основу. Как исправить ошибку сервера. Не более. Спросите это сообщество, как реализовать регистр накопления, в ответ будет тишина.

Тем более уже существует metadata.js

Я несколько лет назад слышал про metadata.js. На тот момент не увидел реализованных проектов. Появились работающие сайты в открытом доступе?
64. fr13 635 18.04.19 12:27 Сейчас в теме
(60) Вы меня не поняли. Я не говорил, что спроектировать БД легче и быстрее сторонними стредствами. Я обратил внимание на маштабируемость системы.
По поводу регистров - а как же весь остальной мир живет без них? ))
Про сайты на метадате сказать ничего не могу, это лучше у автора спросить.
80. TitanLuchs 153 18.04.19 13:56 Сейчас в теме
(64) Мы подобные проекты делаем иногда по несколько штук в месяц - всем хватает масштабирования. Если проект изначально подразумевает, что в нем будет работать много тысяч пользователей, то лучше сразу делать его не на 1С. А если там будет "сейчас 100 посетителей одновременно, через 5 лет максимум 1000", то такие объемы 1С отлично тянет. И во многих случаях, когда больше и не надо, 1С подходит на 100%.
112. nicxxx 236 04.08.19 07:27 Сейчас в теме
(34)
Тяжело самому организовать регистр накопления, например.

Прямо скажем - не очень. Проверено.
Придется написать немного кода на SQL, пару триггеров (для обновления таблиц итогов, если они будут), хранимку для упрощения вызова этого всего, но сам алгоритм несложный.
Если система не планируется быть большой, то даже не надо заморачиваться с таблицами итогов.
113. Elisy 921 05.08.19 06:19 Сейчас в теме
(112)
Вы правы, всегда нужно разумно подходить к задаче. Если не делать итогов, то можно проиграть в скорости и потерять возможность обрезки баз.
Функции, которые выполняет регистр 1С, дополнительно к движениям и итогам
1. Итоги
2. Движения
3. Обмен при РБД
4. Оптимизация по скорости обращения
5. Возможность обрезки базы/данных на любой момент
6. Возможность использовать типы 1С (ссылки справочники, перечисления)
7. Богатые возможности отчетов СКД, в которых участвует регистр
15. FreeArcher 89 18.04.19 09:27 Сейчас в теме
Дмитрий, я правильно понимаю, что на стороне 1С реализован полноценный backend (1с формирует уже готовые HTML) страницы? А какие данные на web сервере расположены?
18. Smaylukk 791 18.04.19 09:38 Сейчас в теме
(15) Сама публикация, а также на веб-сервер можно выгружать в виде файлов изображения, скрипты, стили и другие файлы. 1С в этом случае смотрит - если файл выгружен, то поставляет "внешнюю ссылку", а если нет - то внутреннюю.
22. FreeArcher 89 18.04.19 09:50 Сейчас в теме
(18) А по каким причинам была выбрана именно такая реализация? Как альтернатива есть подход, когда бекенд предоставляет API на получение и изменение данных. А весь web стек (html+css+js) хранится на сервере и просто отрисовывает полученные AJAX запросом данные.
Мне кажется в случае работы с 1С это более удобный подход. Мне самому приходилось держать в макетах HTML код и это жутко не удобно. Почему вы пошли первым путем, есть какие то плюсы в этом?
26. Smaylukk 791 18.04.19 10:03 Сейчас в теме
(22)
(22)
А по каким причинам была выбрана именно такая реализация?

Хотел изучить http-сервисы и подтянуть соседнюю область.

(22)
Мне самому приходилось держать в макетах HTML код и это жутко не удобно

У меня не в макетах, а в справочнике - т.е. можно менять в режиме Предприятия
23. FreeArcher 89 18.04.19 09:52 Сейчас в теме
Скажите у вас web сервер и 1С ws-сервер расположены на одном адресе? Вы не столкнулись с запретом CORS (кросс-доменных) запросов?
24. Smaylukk 791 18.04.19 09:57 Сейчас в теме
(23) Наверное на одном адресе, но я не понял вопроса. С запретом кросс-доменных запросов не сталкивался.
30. TitanLuchs 153 18.04.19 10:27 Сейчас в теме
(23) CORS 1Cка разруливает нормально.
35. FreeArcher 89 18.04.19 10:35 Сейчас в теме
(30) Так это не проблема 1С. Я как то пробовал на JS делать запросы к http сервису 1С и у меня не получилось из за CORS. Хотя этот же код вполне уходил на php сервер. Т.е. у меня не получилось задать правильно заголовки ответа 1С, чтобы разрешить кросдоменный запрос.
Вот если у вас есть пример или ответ был бы благодарен?
46. TitanLuchs 153 18.04.19 10:50 Сейчас в теме
(35) В заголовке ответа должен быть правильный origin - этого достаточно.
chemezov; +1 Ответить
25. ArchLord42 68 18.04.19 10:00 Сейчас в теме
"Я сделал отдачу фронта на 1С потому что могу", так?)
При +- нормальной нагрузке 1С перестанет вывозить вот это вот все, гораздо проще было вынести весь фронт за nginx с кеширование (это всего "10 строк" в конфиге nginx, вместо кучи кода и справочников в 1С), ну и 1С так и оставить бэкендом, но при этом перекрыть доступ в паблик.
Получилось бы абсолютно тоже самое, только не пришлось бы городить велосипед для отдачи статики из 1С, при этом её еще лишний раз нагружая.
32. s_vidyakin 18.04.19 10:33 Сейчас в теме
(25) Еще оптимальнее весь фронт переписать на фреймворке типа Vue.js, учится он за пару дней, справка шикарная на русском. Компонентов готовых навалом. А 1С должна быть только на бекенде.
EGOLEGE; Soloist; A_Max; FreeArcher; +4 Ответить
51. Torin 210 18.04.19 11:01 Сейчас в теме
(32) хотелось бы и Вашу статью увидеть с реализацией на фреймворке vue.js
58. s_vidyakin 18.04.19 11:24 Сейчас в теме
(51) есть такая статья в планах, времени никак не выделю ) Проект на работе с вебом не связан
Начинал пилить веб-компоненты для vue идентичные 1Сным, пока перенес только поле ввода, выглядит вот так
Прикрепленные файлы:
61. FreeArcher 89 18.04.19 11:45 Сейчас в теме
(58) vue идея хорошая. Вот только внешний вид бы не как 1С овский, а то смысла нет. Куча фреймворков сейчас довольно классных под vue, материальный дизайн и все тренды так сказать.
А проект интересный. Если бы на github то можно и попилить совместно.
63. s_vidyakin 18.04.19 11:51 Сейчас в теме
(61) Наоборот, хочу чтоб было точно как в 1С интерфейсе, можно тогда делать бесшовные приложения "продолжения 1С"
Материал не люблю, очень размашистый интерфейс получается, как будто мобильное приложение натянули на комп. Такси более компактен

Кстати куча фреймворков этолько на первый взгляд. Они в основном только под примитивные CMS подходят и дашборды с кнопочками и списками.
Под бизнес я так и не нашел бесплатные на 100% покрывающий нужды на уровне 1С-Такси. Пока у меня в топе iView и ElementUI, возможно они даже клоны. Китайцы рулят ) Платные есть красивые библиотеки но они стоят просто космос
36. Smaylukk 791 18.04.19 10:38 Сейчас в теме
(25) О какой нагрузке вы пишете, примерно?
Касательно остального сообщения - я уверен, что могут накидать еще 10+ способов реализации.
Я реализовал такой. Он справляется с задачей.
Тем более, что 1С сама продвигает веб-клиент, а это не укладывается в мышление, что 1С - только бэкенд.
Но все равно спасибо за ваше мнение
81. ArchLord42 68 18.04.19 13:57 Сейчас в теме
(36) продвигать то продвигает, только вот скорость всего этого решения какая? правильно очень плохая, тонкий клиент подключённый через урл работает раза в 2 быстрее.
А все почему, потому что каждый раз 1с отдаёт статику.
Ставим nginx перед веб клиентом с кешированием и вот тогда начинается более менее адекватная скорость, у вас такая же фигня, вместо того, чтобы просто положить статику за нормальный веб сервер, вы отдаёте её из 1с создавая лишнюю нагрузку и лишний труд для себя, это пока 10 юезров вы её (нагрузку) не ощущаете, как начнётся масштабирование вы поймёте о чем я говорю
83. Smaylukk 791 18.04.19 14:11 Сейчас в теме
(81) Под статикой вы что имеете ввиду - скрипты, стили, картинки? Если да - то у меня есть возможность эти файлы выгрузить в папку на веб-сервере (IIS, Apache) и настроить там кеширование.
87. ArchLord42 68 18.04.19 14:26 Сейчас в теме
(83) Ну так, а почему бы не хранить все изначально там, и редактировать \ поддерживать более цивилизованным способом?
Ну это слишком легко конечно, ни метаданных тебе в 1С не надо добавлять, ни материала на статью не будет, да и 1С совсем бездельничать будет, вместо обработки 30 запросов \ сек, всего-то 1-2 будет ловить, специализированные решения для слабаков, наше 1С - наше все :)
89. Smaylukk 791 18.04.19 14:47 Сейчас в теме
(87) Что-то вы не в настроении.
Я бы поотвечал, но вижу, что вам ответы не нужны.
Хорошего вам дня и прекрасного настроения.
91. ArchLord42 68 18.04.19 15:54 Сейчас в теме
(89) Да все прекрасно у меня с настроением)

Я только хочу донести мысль, что не все надо делать через 1С, а использовать для этого специальные инструменты, которые не только сэкономят время, а еще и уменьшит количество человеко-часов до релиза, что сделает вашего заказчика еще счастливие и у него не пригорит 5 точка, при резком масштабировании проекта.

Мои притензии в основном потому, что такие статьи читают люди не окрепшие "умом", они же повторять начнуть, а мне человеку пришедшему в 1С из веб разработки больно смотреть, как авторы, подобные Вам, создают проблемы себе и выкладывают в паблик, чтобы другие учились.
Ибо все это уже решено сообществом веб разработчиков несколько лет назад, но 1С у нас как всегда впереди планеты всей, т.к. теже хттп сервисы появились не так давно и никто еще не толком знает как их правильно готовить и как легко положить 1С сервер при неверном их использовании :)

Хочу дать 1 совет, если ваш клиент подает нажеды на расширение бизнеса = увеличение потребителей вашего проекта, то проведите тесты хотябы через какой нибуть jMeter или что-то подобные, некоторые недостатки сразу всплывут и Вы их сможете исправить \ переделать до того, как начнуться факапы.

А если есть доступ к записям последней ИС конфы`18, рекомендую посмотреть доклад Игоря Антонова как раз на эту тему, он там как раз рассказывает про фронт на js (react) + бэк на 1С.
93. Smaylukk 791 18.04.19 17:29 Сейчас в теме
(91) Чтобы работать как веб-разработчик - надо быть веб-разработчиком. Вот вы им были до 1С - вам и пригорает. Я пока не вижу смысла учить их. И делаю, как умею. Учитываю, что в вебе постоянно появляются новые языки и фреймворки - люди не сидят на месте и развиваются. 1С тоже. Вполне возможно, что через несколько лет 1С будет уметь из коробки делать это.

А вот почему вы пришли из веба в 1С - я бы послушал/почитал :) , потому как тенденция в обратную сторону
94. ArchLord42 68 18.04.19 18:01 Сейчас в теме
(93) ну программисты, всегда куда-то кочует, это те кто не смог себя найти в данной экосистеме.
Веб. разрабы тоже кочуют хорошо, в ынтерпрайзы на джаву, на мобилки, достаточно в чатике в телеге по нужной тематике посидеть.
В 1С чатах орут, "1С говно, питон \ го \ любой другой язык - тру"
В веб орут, "веб говно, js отстой, джава - тру"

Я не сказать чтобы прям совсем ушел, т.к. кроме 1С проектов, сейчас веду еще и веб, но отношение 70 \ 30.

6 лет назад, я писал на ПХП, тогда еще 5.х версии (питон \ руби тогда в нашем регионе еще не зашел от слова совсем)
и писали (и щас некоторые пишут) на нем нечто убогое типа

<div class = "user" ><?php echo $User->name ?></div>


что приводило более менее большой хтмл шаблон в ужасный и нечитаемый пласт символов.

Ну, а на JS, пусть даже и с jQuery писался довольно низкоуровневый код, чувствовал себя программистом на ассемблере.
А потом была интеграция с 1С и мне она показалась довольно классной штукой, с хорошим уровнем абстракции...конец истории :)
98. Smaylukk 791 19.04.19 10:33 Сейчас в теме
(94) Спасибо за историю, необычно.
А потом была интеграция с 1С и мне она показалась довольно классной штукой, с хорошим уровнем абстракции...конец истории :)
Но все же непонятно, это было правильно решение или нет?
99. ArchLord42 68 19.04.19 14:06 Сейчас в теме
(98)
Да вполне верное.
1С может быть очень интересной :)
92. Steelvan 18.04.19 17:28 Сейчас в теме
(89) Автор молодец что сделал и описал.
На мусорные и критикующие комментарии забей.

Американский менталитет, насри на другого и покажи себя крутым. Это синдром обиженных, показывать себя такими умными и все знающими.
Если они такие умные, так и остались бы в своем вебе. Нет, приходят сюда, копыта на стол и начинают блеять, забрызгивая все вокруг своей слюной.

После таких комментаторов нормальные люди устанавливают галочку "Запретить комментарии". Все желание отбивают что-то писать и чем-то делиться.

Умеешь ? Сделай свое, а мы посмотрим.
chemezov; ShalamovEV; +2 Ответить
82. ArchLord42 68 18.04.19 14:04 Сейчас в теме
(36) а ещё вот Вам завтра понадобится css / js поправить, вы вместо того, чтобы открыть нормальный редактор, с подсветкой и автокомлитом, пойдёте открывать невзрачную форму 1с и там мучаясь править, я конечно понимаю что гордость вам не позволит принять это скорее всего, но ваше решение абсолютно не production ready в такой архитектуре, это так побаловатся с 10 пользователями.
85. Smaylukk 791 18.04.19 14:16 Сейчас в теме
(82) Я и не настаиваю, что это решение очень правильное. Оно просто одно из.
CSS/JS правлю, да в невзрачной форме, но пока не напрягло. Если что -всегда можно прикрутить или открывать в нормальном редакторе.
Но я программист 1С в больше мере.
И это решение позволяет зарабатывать заказчику, его партнерам и мне.
Еще раз спасибо за ваше мнение
chemezov; +1 Ответить
50. Torin 210 18.04.19 10:58 Сейчас в теме
(25)с нетерпением ждём вашу статью с описанной Вами реализацией
86. ArchLord42 68 18.04.19 14:21 Сейчас в теме
(50) да какая там статья, пишем на css \ html + ванильном JS \ vue \ angular \ react \ мой самый любимый и самый лучший фреймворк, а на 1С пару ендпоинтов для отдачи \ принятия конкретных данных и все, по https сервисам написано много, про реакты писать тут смысла нет, не та аудитория.
88. Torin 210 18.04.19 14:38 Сейчас в теме
(86)
по https сервисам написано много, про реакты писать тут смысла нет, не та аудитория


:) Ну звиняйте тогда :)
101. FreeArcher 89 19.04.19 17:51 Сейчас в теме
(86) Раз уж пошел разговор: А OData не более универсальное решение, чем http сервисы. Не пробовали по этому протоколу работать?
31. muskul 18.04.19 10:27 Сейчас в теме
скока стоило если не секрет
43. Smaylukk 791 18.04.19 10:48 Сейчас в теме
(31) В то время работал фултайм и этот проект пилил в свободное время от других задач. Сейчас уже сложно оценить. Да и он не законен - перманентно развивается.
33. Steelvan 18.04.19 10:34 Сейчас в теме
Радуют подобные публикации.

Пожалуй, тоже добавлю свои пять копеек в тему 1С <-> веб.
Прикрепленные файлы:
chemezov; d.menyailov@ngslab.ru; arsvlg; Elisy; +4 Ответить
37. FreeArcher 89 18.04.19 10:39 Сейчас в теме
(33) Что это интепритатор 1С кода на JS или просто картинки?
39. Steelvan 18.04.19 10:43 Сейчас в теме
(37) Да, это интерпретатор кода 1С в код js. С расширением языка 1С для работы с объектами, операторами ++ и --, и еще некоторые изменения.
Прикрепленные файлы:
40. FreeArcher 89 18.04.19 10:45 Сейчас в теме
(39) Жесть ...
А ссылку на проект можно?
47. Steelvan 18.04.19 10:52 Сейчас в теме
(40) У проекта пока нет сайта, он ведется в закрытом режиме.
Как будет что показать обязательно опубликуем.
Сейчас работаем над конструктором форм.
44. Steelvan 18.04.19 10:49 Сейчас в теме
Ну и такие конструкции как попытка, циклы и условия.
Прикрепленные файлы:
48. Torin 210 18.04.19 10:54 Сейчас в теме
Статья очень познавательная и за это + однозначно.
65. 🅵🅾️🆇 435 18.04.19 12:47 Сейчас в теме
Позвольте небольшую корректировку:
слишком много http сервисов насоздавали.
Достаточно было одного "api" и в его модуле реализовать роутер.

По поводу авторизации, идеи к размышлению:
1) можно реализовать вход через oauth2 (социальные сети/почта) ну или свой openid
2) можно реализовать вход по номеру мобильного телефона или через мессенджер (отправлять короткий смс)

Если интересует дальнейшая веб разработка, вот вам точка роста:
последнее время уже не пишут на ванильном js и жукавери, жабаскрипт, нонче, компилируемый.
Тоесть стоит посмотреть в сторону vue/angular/react и почитать про SPA/PWA приложения, рендеринг на сервере это уже моветон)

А в целом вы большой молодец, сами автоматизируем такие вещи, ибо интерфейс 1с для обычного пользователя никуда не годится.
chemezov; oleg-m; Soloist; torbeev; +4 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Красноярск
зарплата от 50 000 руб.
По совместительству

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день


Программист 1С
Белгород
зарплата от 50 000 руб. до 60 000 руб.
Полный день