Вводная
Данная публикация является своеобразным proof-of-concept, т.е. доказательством осуществимости того, что можно полностью генерировать веб-интерфейс сопоставимый по качеству с современными вэб-сайтами, а не тем стандартным интерфейсом, который предоставляет нам 1С из коробки в виде вэб-клиента.
Это не полнофункциональный интерфейс. Демонстрируется только возможность перехода по спискам, открытия ссылочных объектов и записи. Следует рассматривать данную публикацию именно с позиции «демонстрации возможностей», т.е. если возможно это, то можно реализовать и все остальное.
Зачем мне это, если есть стандартный 1С веб-интерфейс?
Немного хочу пояснить для тех, кто в комментариях задает подобные вопросы. Данная публикация своего рода мое виденье того, каким должен быть интерфейс 1С именно в Web. И хотя до практического применения его далеко, этой публикацией я скорее хотел бы подтолкнуть сообщество на обсуждение того, какой мы видим веб-интерфейс 1С в будущем.
Некоторый говорят про мифический «user-experience». Так вот, у каждой платформы – свой user-experience. Если вы работаете в веб – вы ожидаете видеть интерфейсы примерно похожие на те, что есть в веб. В качестве примера можно показать мобильное приложение от того же 1С. Оно как минимум напоминает мобильные приложения. Стандартное же веб приложение от 1С напоминает 1С засунутое в браузер включая заголовок и все его меню «файл…» и прочее, чего никогда не увидишь в интернете.
Принцип работы
Поскольку 1С не дает нам возможности получить состав командного интерфейса программным образом, то мы просто бежим по корневым подсистемам и берем только те, у которых стоит «Включать в командный интерфейс». Далее бежим по составу данных подсистем рекурсивно и выбираем те объекты, у которых стоит «Использовать стандартные команды». Таким образом получаем стартовое меню.
Реквизиты объектов собираются обходом по списку Метаданные.<Менеджер>.Реквизиты
Можно, конечно, и по хорошему нужно выгружать метаданные в файлы и анализировать уже их, но это тема отдельной статьи.
Данная разработка не включает в себя никаких оптимизаций и кэширования – это тоже тема отдельных статей.
Ограничения
Http-сервисы появились только в 8.3.4. Так что требуется платформа не ниже 8.3.4.
В разработке используется функция «СтрШаблон», которая доступны только в версии 8.3.5. Если нужно запустить на более ранней версии 1С, в модуле «UNI_Глобальный», следует переименовать функцию СтрШаблон_8_3_5() в СтрШаблон() – она полностью эмулирует действие функции из 8.3.5.
Состав
- uni.cf: собственно подсистема.
- Каталоги «css», «js», «fonts» — взяты из последней версии bootstrap фреймворка.
Свои стили и скрипты находятся в custom.css и custom.js файлах соответственно.
Установка
1. 1C: загружаете подсистему «UNI» в вашу конфигурацию.
2. Публикация:
2.1. Если публикуете на IIS: публикуем базу. Размещаем каталоги «css», «js», «fonts» в каталоге публикации (внутри каталогов уже лежат файлы настроек web.config, чтобы IIS корректно понимал static-файлы).
2.2. Если публикуете на Apache: публикуем базу. Например в каталог «C:webdemo». Далее создаете каталог «demo_static» — сюда складываете каталоги «css», «js» и «fonts». Теперь надо в файле настроек apache указать пути к данным каталогам. Получим следующее:
Alias "/demo/fonts" "C:/Web/demo_static/fonts/"
<Directory "C:/Web/demo_static/fonts/">
Order allow,deny
Allow from all
</Directory>
Alias "/demo/js" "C:/Web/demo_static/js/"
<Directory "C:/Web/demo_static/js/">
Order allow,deny
Allow from all
</Directory>
Alias "/demo/css" "C:/Web/demo_static/css/"
<Directory "C:/Web/demo_static/css/">
Order allow,deny
Allow from all
</Directory>
# 1c publication
Alias "/demo" "C:/Web/demo/"
<Directory "C:/Web/demo/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/Web/demo/default.vrd"
</Directory>
3. В модуле HTTP-сервиса «uni» необходимо указать имя публикации. Функция «ПолучитьБазовыйURL()», установите значение переменной «ИмяПубликации» — то, каким именем вы опубликовали базу.
4. Перезапускаем IIS/Apache.
5. Вводим в адресной строке «http://localhost/<Имя публикации>/hs/uni/». Важно, чтобы на конце был слеш «/»!
Старик, а что тут остается от 1С? Для чего она? 🙂
(не риторический вопрос)
(1) a.baturskiy_2015, походу она тут типа как среда, содержащая бизнес-логику. Я бы, например, не стал делать интернет-магазин на 1С — дорого, тормозно, излишне пафосно. А вот битрикс для этого с горем пополам мог бы подойти. Но, конечно, лучше чего-нибудь более серьезное для этого использовать.
(1) a.baturskiy_2015, Вся логика пишется на 1С. Web — это только фасад.
При всем уважении, поделка получилась у вас, а не у 1С. Стандартный веб-интерфейс 1С решает ровно то, для чего он сделан — предоставляет вам веб-доступ к приложению, которое вы написали. Дает вам примерно одинаковый user-experience как на локальном доступе, так и через веб. Если вы хотите написать сайт на 1С и возмущаетесь, что интерфейс не гибкий, то, извините, вы где-то не там ищете решение и не теми инструментами пользуетесь.
(4) Evil Beaver, а я и не говорил, что это законченный продукт. Более того, в самом первом абзаце сказано что это всего лишь «proof-of-concept», т.е. именно демонстрация возможностей.
1С дали нам http-сервисы и это одно из возможных их применений. На здешнем инфостарте есть примеры даже cms написанные на 1С. Или они тоже «не теми инструментами пользуются»?
(5) а он не писал ничего про законченность вашего продукта. он придрался и по делу придрался к вашей необоснованной претензии к 1С в части
довольно неумная фраза. (во всем остальном норм. ) с какого 1С должна что-то из коробки предоставлять, чтобы это не было поделкой для каких-то задач BurningChrome?
Логичнее выглядело бы если бы вы открыли Odata интерфейс и использовали бэк 1С строго как модель в терминах MVC, а всё остальное решали уже на js, возможно с какой то прослойкой.
(7) baloo, я не знаю js. Преимущество данного подхода как раз и заключается что нужно минимум знаний в html, все можно написать на 1С. Вам не нужно содержать дополнительного веб-разработчика если у вас есть программисты 1С. А js+прослойка получится «переписать 1C». Цель не в этом.
Когда данный метод можно и нужно использовать? Что он дает, быстродействие, красоту, совместимость или еще что-то?
Непонятно зачем мне это, если сейчас я и так пишу конфигурации на УФ и они полностью работают через браузер.
Думаю автору стоило бы больше уделить внимание раскрытию применимости своего решения/метода, пояснить плюсы.
(9) Vladimir_Konyrev, Если вас устраивает веб-интерфейс от 1С, то действительно, вам это не зачем.
Думаю ответы на ранее заданные мною вопросы: «Когда данный метод можно и нужно использовать? Что он дает, быстродействие, красоту, совместимость или еще что-то?» дадут большее представление о том, что Вы предлагаете.
(10) А чем конкретно Вас не устраивает веб-интерфейс 1С?
(4) Evil Beaver, прошу прощения — но судя по Вашим публикациям — все + и — стандартного интерфейса хорошо знаете.
Автор далеко не первый и не последний , кто начала использовать js и Http-сервисы, и данное направление набирает достаточно большую аудиторию (судя по этим публикациям ).
Поэтому удивительны вопросы к автору типа — чем не устраивает стандартный веб интерфейс и т.п. да еще по 10 «плюсов». Автору большое спасибо !
Добавил блок «Зачем мне это, если есть стандартный 1С веб-интерфейс?«. Это для всех, кто задает подобные вопросы.
(13) kiruha, я не про плюсы и минусы, я про презрительно брошенное: «поделка, которую 1С нам подсовывает»
(14) BurningChrome, поймите правильно: я не критикую саму работу — она отличная и уверен — нужная!
Но в контексте претензий к 1С — считаю, Вы не правы. С точки зрения пользователя — гораздо удобнее видеть примерно одинаковый интерфейс в веб-клиенте и тонком/толстом клиенте. Что и обеспечивает платформа 1С.
В остальном — повторю Evil Beaver:
И ещё раз о самой работе: лично я — файл скачал, обязательно буду его изучать и скорее всего, почерпну для себя что-то новое.
(15)
Да, спасибо — сразу не понял, согласен — вообще разные задачи.
Я http сервисы хочу для клиентов и удаленщиков сделать — посмотреть конкретный заказ или договор, без доступа в базу.
Ув. Автор, прошу Вас поделиться опытом:
Я начал использовать http-сервисами недавно, и напоролся на такую проблему: Если в 1с завести пользователя — то мне ответ на любой Get или post запрос приходит Ошибка 401 (не авторизован). Как быть?
Был бы Вам очень благодарен, если Вы подскажете, как решить сию проблему )