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









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

С чего все началось

Заказчик, крупная компания транспортной доставки, решила расширить сеть пунктов выдачи заказов (ПВЗ) с помощью партнерских ПВЗ — других юридических лиц со складскими помещениями. Но т.к. это может быть что угодно от ларька до СТО, то интерфейс системы надо сделать со следующими признаками:

  1. Простой
  2. Приятный
  3. Доступ с браузера
  4. Не надо устанавливать ничего дополнительного

Из-за этого стандартный веб-клиент 1С не подошел. Поэтому приняли решение делать альтернативную веб-версию. А поскольку у заказчика уже был печальный опыт работы с веб-разработчиками (после первого этапа и получения оплаты они куда-то сливались) я предложил сделать то же, но на 1С. С одной оговоркой — попросил для начала заказать шаблон страниц. Большую помощь также дала публикация "Мини-сайт на http-сервисах".

Общее описание

Самописная конфигурация на основе БСП, которая ведет простой учет движения заказа — от момента приемки на ПВЗ и до выдачи либо отправки возвратов, а также учет денежных средств. Но это не главное, можно настроить и над типовой.
С заказчиком были утверждены определенные сценарии и под каждый были добавлены шаблоны URL в http-сервис и создана страница с контентом.

Для связи с клиентом используются куки, которые также хранятся в БД.

Практически все страницы используют модальные окна, иначе количество сценариев бы выросло в разы. В моем случае я использовал JQuery, для интерактивности Ajax. Но ничто не мешает использовать другие библиотеки.

Благодаря такой реализации, frontend можно изменять на лету. Но для backend надо каждый раз прописывать изменения в модуле http-сервиса и обновлять ИБ.

По сценариям пользователь может делать следующее:

  1. Просмотр списка заказов с разными фильтрами по статусу.
  2. Поиск заказа по номеру, штрихкоду, данным покупателя.
  3. Просмотр данных заказа
  4. Оформить выдачу или отказ от заказа
  5. Принять заказы, отправленные со склада и напечатать акт приема-передачи
  6. Собрать возвраты, отменить сборку, отправить возвраты на склад — и напечатать соответствующие акты
  7. Провести инвентаризацию
  8. Сделать инкассацию денег, полученных за заказы
  9. Сформировать и вывести произвольные отчеты.

Демонстрация

HTTP-сервисы

 
Основой являются http-сервисы, которые формируют и отображают контент, а также реализовывают backend функции — прочитать или внести изменения в БД. Реализовать взаимодействие с сайтом можно было двумя способами: для каждой операции реализовать страничку со своим адресом или же все делать в пределе одной странице с помощью Post-запросов. Я выбрал первый вариант, но Post-запросы тоже использую (шаблон-URL API).

Контент

Справочники "Изображения", "Скрипты", "Стили", "ФайлыHTTP"  являются вспомогательными (css + js + img) и содержат в себе соответствующую информацию. Можно как загрузить туда текст или изображение, так и указать URL (подключить файл). За их передачу на клиент отвечают одноименные http-сервисы.

 

Скриншоты

Для формирования динамического содержимого используются справочники "МакетыБлоков" и "ИсточникиДанных". Источники данных — это описание запроса, параметров и полей, которые он вернет. В макетах описывается выборка из источников, связь параметров и формирования HTML-представление данных.

 

Скриншоты

Основным источником контента является справочник "Страницы". Страница отвечает за отображение контента для определенных сценариев (в моем случае список заказов, открытие заказа, выдача заказа и т.д.)
К странице можно подключить произвольное количество стилей и скриптов. Подключаются с помощью тегов <link> и <script src="">. Также была реализована возможность выгрузки в каталог на веб-сервере, для уменьшения нагрузки на 1С и ускорения загрузки веб-страницы.
В зависимости от состояния выгрузки каждого файла в каталог будут прописываться разные адреса.  В тексте страницы прописывается html-код, вставить определенный параметр, который http-сервис преобразует в значение, вставить блок (список заказов ПВЗ, данные конкретного заказа и т.д.).

Печать документов и отчеты

Для фиксации факта определенных операций необходимо было обеспечить печать документов, как результат их проведения. Необходимо было, чтобы это работало сразу на большинстве популярных браузеров без установки дополнительно ПО. Можно было экспортировать в PDF, но была вероятность, что файл будет загружаться, а не открываться.  Благо Табличный документ можно выгрузить в HTML-формате. Оставалась проблема со штрихкодом, но ее решил, реализовав печать штрихкодов в SVG-формате. Спасибо за Формирование штрихкода EAN-13 в SVG с помощью XDTO.

Со временем партнеры захотели смотреть определенную сводную информацию или отчеты в своем клиенте. Здесь пришлось поиграться, чтобы сделать универсальную систему для подключения любого отчета с помощью подсистемы Варианты отчетов из БСП.

Авторизация

При авторизации на сервер передается логин и пароль, по логину ищется пользователь ИБ, от пароля берется SHA1-хеш и ищется в свойстве СохраняемоеЗначениеПароля пользователя ИБ. Спасибо Антону Ширяеву за его обработку, но на ИС не могу найти публикацию.

После авторизации работником ПВЗ создается запись в регистре сведений Сессии с уникальным идентификатором, сроком действия (длина срока зависит от галочки "Запомнить меня" на странице Авторизации) и вспомогательными данными. Идентификатор передается в куки на клиент через Set-Cookie и при последующих обращениях на сервер можно определить активна ли эта сессия (если нет — надо опять авторизацию проходить), а также получить ключевые данные (Пользователь, ПВЗ и их данные).

Позже пришлось добавить авторизацию по токену, для возможности входа под определенным ПВЗ и исключить передачу паролей. В ИБ можно сформировать токен и ссылку для входа, типа localhost/pvz/hs/index/token?id=1760e3d7-4ec0-4e89-89f9-44bbc6b50162. После перехода по этой ссылке ищется токен, если он актуален — деактивируются все сессии этого клиента, создается новая сессия и высылается идентификатор с ответом.

Frontend и backend

Как я уже описал выше, frontend можно изменять на лету, не обновляя конфигурацию.
Для backend http-сервис определяет команду, делает необходимые операции и возвращает результат. Результатом является сериализованная структура в json, которая содержит в себе ключи result(тоже в json) и error(текст). Но для каждой операции надо прописывать ее обработку.

Публикация

API для обмена, HTML-клиент и веб-клиент были опубликованы в разных публикациях, в которых разрешено нужное и запрещено остальное. Для HTML-клиента в описании публикации указаны данные авторизации пользователя http, который имеет необходимые права для работы с заказами, но запрещен вход через остальные клиенты.

Итоги

За время полноценной работы системы (уже больше полгода) система показала себя с лучшей стороны. Пользователей около 20, так что про замеры нагрузки говорить не приходится. Но со своей изначальной задачей она справилась — новые ПВЗ заходят и сразу же адаптируются. О каких-то критических замечаниях я не слышал. Постепенно допиливаю и улучшаю. На у с помощью html + css + js можно сделать очень многое.

В целом вышло немного сумбурно и не описание опыта, а описание продукта. Тем не менее с помощью http-сервисов можно не только обмены делать, а и вот такие сайты — а это и было одной из целей публикации.

И еще — на все, кроме первичных макетов страниц, ушли силы одного-двух программистов 1С и не пришлось искать веб-мастеров. В этом и есть выгода.
Если кто-то захочет "пощупать вживую" — пишите в личку, могу организовать доступ.

99 Comments

  1. alexey.karmanov

    Дмитрий, спасибо за статью. Я же правильно понимаю, что при этом у вас куплено как минимум 20 пользовательских лицензий 1С (при 20 текущих возможных подключениях через браузер)?

    Reply
  2. CodeNull
    При авторизации на сервер передается логин и пароль, по логину ищется пользователь ИБ, от пароля берется SHA1-хеш и ищется в свойстве СохраняемоеЗначениеПароля пользователя ИБ. Спасибо Антону Ширяеву за его обработку, но на ИС не могу найти публикацию.

    Получается, что авторизация выполняется на уровне ИБ, а не платформы/веб-сервера? Все сервисы изначально доступны без basic или ntlm авторизации?

    Reply
  3. GreenDragon

    (1) Что вы имеете ввиду под термином «подключение»? Ясно же написано — данные передаются посредством http-сервисов. Они тем и хороши, что лицензии потребляются только на момент установления короткой сессии передачи данных от фронта к энду и получения ответа.

    Reply
  4. BudkoT

    Небезопасный велосипед?

    Reply
  5. CodeNull

    (4) Почему небезопасный? Все зависит от алгоритмов авторизации и настроек сервера.

    Reply
  6. Elisy

    В свое время был выбор между 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

    Reply
  7. YPermitin

    (6) тот момент, когда комментарий не менее полезный, чем сама статья! 🙂

    (0) спасибо автору за статью!

    Reply
  8. alexey.karmanov
  9. logarifm

    (0) Интересные мысли и отличная реализация. Поставил плюс.

    Reply
  10. Smaylukk

    (8) Лицензии есть. Но пользователи прямо вот чтобы все одновременно подключались — нет. Само подключение на нормальном железе срабатывает меньше секунды, а подключение еще остается висеть. А сформированная html-страничка, которая загржена в браузер, думаю, что уже не должна что-то по лицензиям.

    Reply
  11. Smaylukk

    (2) Да, авторизации веб-сервера нет. Все прописано в http-сервисах. Но опубликованы таким образом у меня только 5 http-сервисов — Index, Изображения, Скрипты, Стили, Файлы — остальные http-сервисы, web-сервисы, oData, веб-клиент закрыты и опубликованы по другому адресу.

    Reply
  12. GreenDragon

    (8) Различайте web и http сервисы. Подумайте над ситуацией, когда у вас с фронтэндом работает тысяч 15 человек (например, личный кабинет ЖКХ, написанный на пыхе), а бэком является база 1С. Взаимодействие их построено на http-сервисах (данные для формирования платёжки, приём показателей разнообразных счётчиков и прочее). Сколько необходимых лицензий для покупки вы озвучите заказчику решения?

    Reply
  13. Smaylukk

    (4) Не могли бы вы расширить свой коммент и обозначить в чем тут вы видите небезопасность?

    Reply
  14. fr13

    Для чего нужна 1С в этом решении? Только ради БД?

    Reply
  15. FreeArcher

    Дмитрий, я правильно понимаю, что на стороне 1С реализован полноценный backend (1с формирует уже готовые HTML) страницы? А какие данные на web сервере расположены?

    Reply
  16. Smaylukk

    (6) Спасибо за ваш ответ. Согласен, для каждого проекта свои пути реализации. Ваши реализации больше для стороннего пользователя, мой проект — более внутренний. И у заказчика не очень складывалась работа с веб-мастерами по другим проектам.

    Reply
  17. Smaylukk

    (14) Вся логика, справочники, документы, движения — все сначала делалось в конфигурации, только потом делался http-сервис. Также идет обмен с центральной конфигурацией.

    И работать можно получается и в тонком, веб-клиенте, и в html-клиенте.

    Ну а если брать в целом — любой сайт использует какую-то БД.

    И самой большой плюс — фронт и бек можно делать силами 1С разработчика

    Reply
  18. Smaylukk

    (15) Сама публикация, а также на веб-сервер можно выгружать в виде файлов изображения, скрипты, стили и другие файлы. 1С в этом случае смотрит — если файл выгружен, то поставляет «внешнюю ссылку», а если нет — то внутреннюю.

    Reply
  19. alexey.karmanov

    (12) К огромному сожалению, я бы озвучил цифру в 15 тысяч лицензий.

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

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

    Ответ «1С»:

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

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

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

    Если сможете прояснить ситуацию с конкретными ссылками от вендора — буду благодарен.

    Reply
  20. fr13

    (17) Я это к тому, что зачем упираться в ограничения платформы если можно было использовать реляционную (NoSQL) базу, а в качестве бэк энда взять тот же Node.js.

    Но если я правильно понял, то так исторически сложилось, что сначала была база на 1С и только потом были прикручены http сервисы.

    Reply
  21. Smaylukk

    (20) Заказчик — компания транспортной доставки. Весь учет ведется другой базе на 1С. Этот проект — это только частный случай доставки, который вылился в отдельную базу. Также у заказчика были в наличии только 1С-ники

    Reply
  22. FreeArcher

    (18) А по каким причинам была выбрана именно такая реализация? Как альтернатива есть подход, когда бекенд предоставляет API на получение и изменение данных. А весь web стек (html+css+js) хранится на сервере и просто отрисовывает полученные AJAX запросом данные.

    Мне кажется в случае работы с 1С это более удобный подход. Мне самому приходилось держать в макетах HTML код и это жутко не удобно. Почему вы пошли первым путем, есть какие то плюсы в этом?

    Reply
  23. FreeArcher

    Скажите у вас web сервер и 1С ws-сервер расположены на одном адресе? Вы не столкнулись с запретом CORS (кросс-доменных) запросов?

    Reply
  24. Smaylukk

    (23) Наверное на одном адресе, но я не понял вопроса. С запретом кросс-доменных запросов не сталкивался.

    Reply
  25. ArchLord42

    «Я сделал отдачу фронта на 1С потому что могу», так?)

    При +- нормальной нагрузке 1С перестанет вывозить вот это вот все, гораздо проще было вынести весь фронт за nginx с кеширование (это всего «10 строк» в конфиге nginx, вместо кучи кода и справочников в 1С), ну и 1С так и оставить бэкендом, но при этом перекрыть доступ в паблик.

    Получилось бы абсолютно тоже самое, только не пришлось бы городить велосипед для отдачи статики из 1С, при этом её еще лишний раз нагружая.

    Reply
  26. Smaylukk

    (22)

    (22)

    А по каким причинам была выбрана именно такая реализация?

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

    (22)

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

    У меня не в макетах, а в справочнике — т.е. можно менять в режиме Предприятия

    Reply
  27. rpgshnik

    (19) Пока не ясна я думаю и наказывать не будут. А так да при грамотном знание веб-разработки можно мутить свои сверхтонкие клиенты и запускать тысячи пользователей :))

    Reply
  28. TitanLuchs

    (6) Что имеется в виду под «асинхронные вызовы делать нельзя»? JS поддерживает асинхронные http-запросы, 1С способна обработать несколько запросов одновременно.

    Reply
  29. fr13

    (21) Я понял. В целом очень достойно. Спасибо что поделились опытом!

    Reply
  30. TitanLuchs

    (23) CORS 1Cка разруливает нормально.

    Reply
  31. muskul

    скока стоило если не секрет

    Reply
  32. s_vidyakin

    (25) Еще оптимальнее весь фронт переписать на фреймворке типа Vue.js, учится он за пару дней, справка шикарная на русском. Компонентов готовых навалом. А 1С должна быть только на бекенде.

    Reply
  33. Elisy

    (20)

    1. 1C позволяет быстро создать прототип.

    2. 1С позволяет не задумываться об интерфейсе администратора. В веб-проектах мало создать интерфейс пользователя, еще нужно управлять данными.

    3. В 1С есть специализированные объяекты. Тяжело самому организовать регистр накопления, например.

    4. У 1С есть сообщество и много написанных обработок на все случаи жизни.

    Reply
  34. Steelvan

    Радуют подобные публикации.

    Пожалуй, тоже добавлю свои пять копеек в тему 1С <-> веб.

    Reply
  35. FreeArcher

    (30) Так это не проблема 1С. Я как то пробовал на JS делать запросы к http сервису 1С и у меня не получилось из за CORS. Хотя этот же код вполне уходил на php сервер. Т.е. у меня не получилось задать правильно заголовки ответа 1С, чтобы разрешить кросдоменный запрос.

    Вот если у вас есть пример или ответ был бы благодарен?

    Reply
  36. Smaylukk

    (25) О какой нагрузке вы пишете, примерно?

    Касательно остального сообщения — я уверен, что могут накидать еще 10+ способов реализации.

    Я реализовал такой. Он справляется с задачей.

    Тем более, что 1С сама продвигает веб-клиент, а это не укладывается в мышление, что 1С — только бэкенд.

    Но все равно спасибо за ваше мнение

    Reply
  37. FreeArcher

    (33) Что это интепритатор 1С кода на JS или просто картинки?

    Reply
  38. Elisy

    (28) Я имел ввиду многопоточность на сторон сервера. В Asp.Net AsParallerl(), async-await

    Натолкнули на мысль

    В 1С нельзя расшарить один статический объект в памяти среди подключений. Например, сделать счетчик онлайн посетителей.

    Reply
  39. Steelvan

    (37) Да, это интерпретатор кода 1С в код js. С расширением языка 1С для работы с объектами, операторами ++ и —, и еще некоторые изменения.

    Reply
  40. FreeArcher

    (39) Жесть …

    А ссылку на проект можно?

    Reply
  41. Smaylukk

    (38) Через регистр сведений можно, только надо определиться, кто считается онлайн-посетителем.

    Reply
  42. fr13

    (34) 1-3 ничего не будет стоить, когда речь зайдет об масштабируемости, асинхронности. Про 4 — общество по той же ноде думаете меньше? ))

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

    Reply
  43. Smaylukk

    (31) В то время работал фултайм и этот проект пилил в свободное время от других задач. Сейчас уже сложно оценить. Да и он не законен — перманентно развивается.

    Reply
  44. TitanLuchs

    (38) Если речь конкретно о счетчике онлайн-посетителей, то можно считать активные сессии.

    А работать с одним объектом в памяти (с временным хранилищем например) можно попробовать, если включить переиспользование сеансов. Но это при относительно небольшом количестве подключений, конечно же.

    Reply
  45. Steelvan

    Ну и такие конструкции как попытка, циклы и условия.

    Reply
  46. TitanLuchs

    (35) В заголовке ответа должен быть правильный origin — этого достаточно.

    Reply
  47. Steelvan

    (40) У проекта пока нет сайта, он ведется в закрытом режиме.

    Как будет что показать обязательно опубликуем.

    Сейчас работаем над конструктором форм.

    Reply
  48. GreenDragon

    (19) «Доступ к данным» осуществляется в рамках 20-секундной (максимальный дефолт) сессии. Вы когда из 1С распечатали справку и понесли её, допустим в банк. Банк этими данными будет пользоваться. Вы тоже будете на банк лицензии покупать? Пример понятен? Front обратился к web-серверу с post-запросом. Веб-сервер Через коннектор перенаправляет запрос на получение/запись порции данных. Вот в этот момент потребляется лицензия. Далее 1С приложение возвращает ответ web-серверу и… всё. Лицензия больше не нужна. То, что web-сервер будет делать с полученными данными — это как ситуация со справкой в банк, которую я описал выше.

    В приведённом ответе от 1С это и написано.

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

    Видите в тексте слово «одновременно»? Вам сама 1С не даст превысить число лицензий.

    Reply
  49. Torin

    Статья очень познавательная и за это + однозначно.

    Reply
  50. Torin

    (25)с нетерпением ждём вашу статью с описанной Вами реализацией

    Reply
  51. Torin

    (32) хотелось бы и Вашу статью увидеть с реализацией на фреймворке vue.js

    Reply
  52. TitanLuchs

    (12) А чем в данном случае принципиально отличаются web и http сервисы? Ничем.

    Reply
  53. alexey.karmanov

    (49) Пример с банком, конечно, утрированный. ИМХО сам вопрос лежит не в технической плоскости, а в юридической. И совершенно очевидно, какую позицию в данном вопросе выгоднее занять вендору. А ответ «1С» можно толковать двояко, поэтому видимо единственный способ выяснить — сделать конкретный запрос в «1С» по лицензированию конкретного программного решения. Попробую задать его и, если не забуду, отпишусь здесь — что они ответили.

    Reply
  54. GreenDragon

    (19) К вопросу о 15 тысячах лицензий. Я бы вас застрелил из рогатки, если честно. Используйте шину. В случае нехватки лицензий у вас будет только увеличиваться время обработки очереди. Если очередь на кассе растёт, значит пора нанять ещё одного кассира (купить лицензию)

    Reply
  55. alexey.karmanov

    (53) Не надо так. Я уже отписался выше. С технической точки зрения у меня вопросов здесь никаких нет. Здесь вопрос чисто юридического характера.

    Reply
  56. alexey.karmanov

    (52) Юрий, я знаю, что вы специализируетесь как раз на этой теме. Наверняка уже разобрались для себя в вопросах лицензирования и знаете позицию вендора?

    Reply
  57. Elisy

    (42) Регистры хранятся в БД. Обращения к БД на запись или чтение всегда ресурсоемки. Переменные в памяти намного быстрее работают.

    Reply
  58. s_vidyakin

    (51) есть такая статья в планах, времени никак не выделю ) Проект на работе с вебом не связан

    Начинал пилить веб-компоненты для vue идентичные 1Сным, пока перенес только поле ввода, выглядит вот так

    Reply
  59. TitanLuchs

    (56) Позиция вендора — количество лицензий должно быть равно количеству одновременно работающих пользователей. То есть, 100 человек сидят в интерфейсе, аналогичном интерфейсу ТС — 100 лицензий должно быть зарезервировано в шкафу, несмотря на то, что физически они не используются сервером.

    Reply
  60. Elisy

    (41)

    1-3 ничего не будет стоить, когда речь зайдет об масштабируемости, асинхронности.

    Давайте конкретнее. Оптовая компания в нескольких странах получает заказы, оплату и делает реализации со складов в разных регионах.

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

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

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

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

    Я несколько лет назад слышал про metadata.js. На тот момент не увидел реализованных проектов. Появились работающие сайты в открытом доступе?

    Reply
  61. FreeArcher

    (58) vue идея хорошая. Вот только внешний вид бы не как 1С овский, а то смысла нет. Куча фреймворков сейчас довольно классных под vue, материальный дизайн и все тренды так сказать.

    А проект интересный. Если бы на github то можно и попилить совместно.

    Reply
  62. Smaylukk

    (59) Вопрос в том, как посчитать и доказать, что они одновременно это делали.

    Reply
  63. s_vidyakin

    (61) Наоборот, хочу чтоб было точно как в 1С интерфейсе, можно тогда делать бесшовные приложения «продолжения 1С»

    Материал не люблю, очень размашистый интерфейс получается, как будто мобильное приложение натянули на комп. Такси более компактен

    Кстати куча фреймворков этолько на первый взгляд. Они в основном только под примитивные CMS подходят и дашборды с кнопочками и списками.

    Под бизнес я так и не нашел бесплатные на 100% покрывающий нужды на уровне 1С-Такси. Пока у меня в топе iView и ElementUI, возможно они даже клоны. Китайцы рулят ) Платные есть красивые библиотеки но они стоят просто космос

    Reply
  64. fr13

    (60) Вы меня не поняли. Я не говорил, что спроектировать БД легче и быстрее сторонними стредствами. Я обратил внимание на маштабируемость системы.

    По поводу регистров — а как же весь остальной мир живет без них? ))

    Про сайты на метадате сказать ничего не могу, это лучше у автора спросить.

    Reply
  65. 🅵🅾️🆇

    Позвольте небольшую корректировку:

    слишком много http сервисов насоздавали.

    Достаточно было одного «api» и в его модуле реализовать роутер.

    По поводу авторизации, идеи к размышлению:

    1) можно реализовать вход через oauth2 (социальные сети/почта) ну или свой openid

    2) можно реализовать вход по номеру мобильного телефона или через мессенджер (отправлять короткий смс)

    Если интересует дальнейшая веб разработка, вот вам точка роста:

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

    Тоесть стоит посмотреть в сторону vue/angular/react и почитать про SPA/PWA приложения, рендеринг на сервере это уже моветон)

    А в целом вы большой молодец, сами автоматизируем такие вещи, ибо интерфейс 1с для обычного пользователя никуда не годится.

    Reply
  66. GreenDragon

    (55) Перефразирую. Вы технически не сможете юридически нарушить лицензию.

    Reply
  67. 🅵🅾️🆇

    (68) Все так, если вы делаете свой интерфейс через OData, http сервисы, web сервисы.

    То можете делать сколько угодно рабочих мест, главное чтоб суммарное количество сеансов в консоле кластера (НЕ РАБОТАЮЩИХ ОДНОВРЕМЕННО ЛЮДЕЙ!) не превышало количество ваших лицензий.

    Причем этот пункт четко прописан и оговорен.

    Reply
  68. GreenDragon

    (59) Юрий, лишний раз выражу своё уважение за сверхтонкий клиент. Хоть мы его и не используем, но решение просто потрясающее. С удовольствием слушал ваш доклад на конференции в 2017 году. Но вот в данном случае, меня терзают смутные сомнения в вашей правоте.

    У нас организация продаёт запчасти. Обычная торговля в опт и розницу. Для оформления заказов клиентами, уточнения их баланса, остатков складских, отслеживания статусов заказов используется asp.net приложение. Это фронт.

    В качестве бэка база 1С, которую сайт дёргает, когда ему требуется информация. Внимание вопрос — сколько лицензий 1С нам требуется приобрести?

    Reply
  69. GreenDragon

    (59) Разжуйте мне, пожалуйста логическую связь между официальной позицией вендора, озвученной в (12) и вашей фразой «100 человек сидят в интерфейсе, аналогичном интерфейсу ТС — 100 лицензий должно быть зарезервировано в шкафу».

    Reply
  70. TitanLuchs
    Reply
  71. TitanLuchs

    (72) Не уверен, что смогу более подробно разжевать фразу «На каждого работающего пользователя должна быть куплена лицензия». Сервер 1С при работе через http-сервисы лицензию не кушает, но она должна быть — пусть в нераспечатанном виде стоит на полке в шкафу, но она есть и она куплена.

    А то, что в одном случае используются web-сервисы, в другом http-сервисы, не меняет сути дела, так как web-сервис это подвид http-сервиса.

    Reply
  72. TitanLuchs

    (68)

    Перефразирую. Вы технически не сможете юридически нарушить лицензию.

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

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

    Хотя вопрос «Какого пользователя надо считать работающим, а какого — нет» остается открытым.

    Reply
  73. TitanLuchs

    (64) Мы подобные проекты делаем иногда по несколько штук в месяц — всем хватает масштабирования. Если проект изначально подразумевает, что в нем будет работать много тысяч пользователей, то лучше сразу делать его не на 1С. А если там будет «сейчас 100 посетителей одновременно, через 5 лет максимум 1000», то такие объемы 1С отлично тянет. И во многих случаях, когда больше и не надо, 1С подходит на 100%.

    Reply
  74. ArchLord42

    (36) продвигать то продвигает, только вот скорость всего этого решения какая? правильно очень плохая, тонкий клиент подключённый через урл работает раза в 2 быстрее.

    А все почему, потому что каждый раз 1с отдаёт статику.

    Ставим nginx перед веб клиентом с кешированием и вот тогда начинается более менее адекватная скорость, у вас такая же фигня, вместо того, чтобы просто положить статику за нормальный веб сервер, вы отдаёте её из 1с создавая лишнюю нагрузку и лишний труд для себя, это пока 10 юезров вы её (нагрузку) не ощущаете, как начнётся масштабирование вы поймёте о чем я говорю

    Reply
  75. ArchLord42

    (36) а ещё вот Вам завтра понадобится css / js поправить, вы вместо того, чтобы открыть нормальный редактор, с подсветкой и автокомлитом, пойдёте открывать невзрачную форму 1с и там мучаясь править, я конечно понимаю что гордость вам не позволит принять это скорее всего, но ваше решение абсолютно не production ready в такой архитектуре, это так побаловатся с 10 пользователями.

    Reply
  76. Smaylukk

    (81) Под статикой вы что имеете ввиду — скрипты, стили, картинки? Если да — то у меня есть возможность эти файлы выгрузить в папку на веб-сервере (IIS, Apache) и настроить там кеширование.

    Reply
  77. Smaylukk

    (82) Я и не настаиваю, что это решение очень правильное. Оно просто одно из.

    CSS/JS правлю, да в невзрачной форме, но пока не напрягло. Если что -всегда можно прикрутить или открывать в нормальном редакторе.

    Но я программист 1С в больше мере.

    И это решение позволяет зарабатывать заказчику, его партнерам и мне.

    Еще раз спасибо за ваше мнение

    Reply
  78. ArchLord42

    (50) да какая там статья, пишем на css html + ванильном JS vue angular react мой самый любимый и самый лучший фреймворк, а на 1С пару ендпоинтов для отдачи принятия конкретных данных и все, по https сервисам написано много, про реакты писать тут смысла нет, не та аудитория.

    Reply
  79. ArchLord42

    (83) Ну так, а почему бы не хранить все изначально там, и редактировать поддерживать более цивилизованным способом?

    Ну это слишком легко конечно, ни метаданных тебе в 1С не надо добавлять, ни материала на статью не будет, да и 1С совсем бездельничать будет, вместо обработки 30 запросов сек, всего-то 1-2 будет ловить, специализированные решения для слабаков, наше 1С — наше все 🙂

    Reply
  80. Torin

    (86)

    по https сервисам написано много, про реакты писать тут смысла нет, не та аудитория

    🙂 Ну звиняйте тогда 🙂

    Reply
  81. Smaylukk

    (87) Что-то вы не в настроении.

    Я бы поотвечал, но вижу, что вам ответы не нужны.

    Хорошего вам дня и прекрасного настроения.

    Reply
  82. ArchLord42

    (89) Да все прекрасно у меня с настроением)

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

    Мои притензии в основном потому, что такие статьи читают люди не окрепшие «умом», они же повторять начнуть, а мне человеку пришедшему в 1С из веб разработки больно смотреть, как авторы, подобные Вам, создают проблемы себе и выкладывают в паблик, чтобы другие учились.

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

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

    А если есть доступ к записям последней ИС конфы`18, рекомендую посмотреть доклад Игоря Антонова как раз на эту тему, он там как раз рассказывает про фронт на js (react) + бэк на 1С.

    Reply
  83. Steelvan

    (89) Автор молодец что сделал и описал.

    На мусорные и критикующие комментарии забей.

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

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

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

    Умеешь ? Сделай свое, а мы посмотрим.

    Reply
  84. Smaylukk

    (91) Чтобы работать как веб-разработчик — надо быть веб-разработчиком. Вот вы им были до 1С — вам и пригорает. Я пока не вижу смысла учить их. И делаю, как умею. Учитываю, что в вебе постоянно появляются новые языки и фреймворки — люди не сидят на месте и развиваются. 1С тоже. Вполне возможно, что через несколько лет 1С будет уметь из коробки делать это.

    А вот почему вы пришли из веба в 1С — я бы послушал/почитал 🙂 , потому как тенденция в обратную сторону

    Reply
  85. ArchLord42

    (93) ну программисты, всегда куда-то кочует, это те кто не смог себя найти в данной экосистеме.

    Веб. разрабы тоже кочуют хорошо, в ынтерпрайзы на джаву, на мобилки, достаточно в чатике в телеге по нужной тематике посидеть.

    В 1С чатах орут, «1С говно, питон го любой другой язык — тру»

    В веб орут, «веб говно, js отстой, джава — тру»

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

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

    и писали (и щас некоторые пишут) на нем нечто убогое типа

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

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

    Ну, а на JS, пусть даже и с jQuery писался довольно низкоуровневый код, чувствовал себя программистом на ассемблере.

    А потом была интеграция с 1С и мне она показалась довольно классной штукой, с хорошим уровнем абстракции…конец истории 🙂

    Reply
  86. Smaylukk

    (94) Спасибо за историю, необычно.

    А потом была интеграция с 1С и мне она показалась довольно классной штукой, с хорошим уровнем абстракции…конец истории 🙂

    Но все же непонятно, это было правильно решение или нет?

    Reply
  87. ArchLord42

    (98)

    Да вполне верное.

    1С может быть очень интересной 🙂

    Reply
  88. ellavs

    (79) Долго обсуждали в чате эту тему с коллегами. Выяснили, что клиентские лицензии в этом случае «не кушаются». Нужна только одна серверная лицензия (на кластер). В учебном центре 1С эту информацию также подтвердили («клиентские лицензии при получении данных через http-сервис не нужны»), также коллеги делали запрос в 1С, где эту информацию опять же подтвердили. Клиентские лицензии нужны только если вы подключаетесь через тонкий/толстый/веб-клиенты (не путать веб-клиента с http-сервисами).

    Reply
  89. FreeArcher

    (86) Раз уж пошел разговор: А OData не более универсальное решение, чем http сервисы. Не пробовали по этому протоколу работать?

    Reply
  90. alexey.karmanov

    (100) Итого мы имеем 2 противоречащих друг другу позиции от вендора:

    — цитата из переписки с вендором, приведенная Юрием в (75) … «1000 лицензий во всех трех вариантах.»

    — «клиентские лицензии при получении данных через http-сервис не нужны» … «также коллеги делали запрос в 1С, где эту информацию опять же подтвердили»

    Reply
  91. Smaylukk

    (103) Нет, походу не так. Лицензии для http-соединений не ищутся в момент создания этого соединения. Можно посмотреть в утилите администрирования консоли кластера 1С. Но они по информации от вендора должны быть под количество активных пользователей (как писали выше — не распечатанные программные или usb-ключ).

    Правда об этом четко нигде не написано — что такое «активные пользователи», как считать их количество.

    Reply
  92. alexey.karmanov

    (104) Давайте попробуем зайти с другой стороны… 🙂

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

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

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

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

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

    ИМХО рабочее место клиента, который делает запрос к базе через веб-сервисы со своего рабочего места через браузер, попадает под условия необходимости лицензирования рабочего места, так как имеется косвенная связь между его компьютером и ПРОГРАММНЫМ ПРОДУКТОМ (база 1с) через веб-сервисы.

    Reply
  93. Smaylukk

    (106) Доступ в один момент времени — вы это не выделили. Лицензия нужна на момент формирования в моем случае HTML-кода (когда идет чтение/запись в память). Загруженная и выведенная в браузер страничка — нужна ли лицензия, когда она просто показывается и никаких действий не делается?

    Reply
  94. alexey.karmanov

    (107) Точно, я упустил этот момент.

    Reply
  95. nicxxx

    (34)

    Тяжело самому организовать регистр накопления, например.

    Прямо скажем — не очень. Проверено.

    Придется написать немного кода на SQL, пару триггеров (для обновления таблиц итогов, если они будут), хранимку для упрощения вызова этого всего, но сам алгоритм несложный.

    Если система не планируется быть большой, то даже не надо заморачиваться с таблицами итогов.

    Reply
  96. Elisy

    (112)

    Вы правы, всегда нужно разумно подходить к задаче. Если не делать итогов, то можно проиграть в скорости и потерять возможность обрезки баз.

    Функции, которые выполняет регистр 1С, дополнительно к движениям и итогам

    1. Итоги

    2. Движения

    3. Обмен при РБД

    4. Оптимизация по скорости обращения

    5. Возможность обрезки базы/данных на любой момент

    6. Возможность использовать типы 1С (ссылки справочники, перечисления)

    7. Богатые возможности отчетов СКД, в которых участвует регистр

    Reply
  97. babys

    (54) Нет смысла запрашивать. У меня проект под контролем 1С, 1с + битрикс, все запросы через http, ЗАКУПЛЕНО по рекомендации 1С лицензий под ОДНОВРЕМЕННОЕ КОЛИЧЕСТВО ПОЛЬЗОВАТЕЛЕЙ В 1С. По проекту общая численность пользователей ~100тыс, лицензий 5тыс.

    ЗЫ: Возможно, что это мнение 1С только для данного проекта, там много кто на пятки, по цене, наступает.

    Reply
  98. s_vidyakin

    (114) И будет наступать, если жадность «АО 1С» будет продолжать стоять на 1 месте

    Сейчас ничего не стоит написать самописную системку с веб-клиентом, хранящую нужные данные в себе, с периодическим обменом с 1С

    Доступа к базе напрямую нет — не надо и лицензии. А то что обмен идет раз в секунду это уже технические моменты )

    Reply
  99. AlX0id

    (75)

    Вполне себе хамская позиция, на мой взгляд. Да и вряд ли ее можно юридически обосновать в 3 случае.

    На мой взгляд напрашивается вопрос — а если из одного сеанса базы я распечатываю 100 тыс листов прайсов и тем самым ознакамливаю клиентов с ценами из БД 1С — мне тоже надо купить 100 тыс лицензий?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *