Расширение конфигурации для Web-доступа к 1С (1С в роли back-end)

01.04.21

Интеграция - WEB-интеграция

Для реализации того, чтобы 1С формировала и отдавала страницу, которую можно было бы открыть через браузер было написано расширение, которое позволяет публиковать из 1С произвольные ресурсы, будь то API, сайт или изображения / прочие файлы.

Скачать исходный код

Наименование Файл Версия Размер
Веб доступ к 1С
.cfe 28,48Kb
25
.cfe 28,48Kb 25 Скачать

Введение

В процессе работы с 1С я несколько раз сталкивался с задачей, которая сводилась к тому, чтобы 1С формировала и отдавала страницы, которые можно было бы открыть через браузер. Например, когда системные администраторы, работающие в поле, хотят иметь возможность просматривать свои задачи в service desk или необходимо опубликовать легковесную адресную книгу из документооборота. Решений тут может быть несколько, но часто предпочтительным является использование http-сервисов, поскольку у нас не будет промежуточного звена, а авторизация происходит под логином/паролем, которые пользователь использует для доступа в базу. Конечно можно писать под каждую задачу отдельный http-сервис но со временем я пришел к решению написать расширение, которое позволяет публиковать из 1С произвольные ресурсы будь то API, сайт или изображения.

Работоспособность проверена на версиях платформы 8.3.18.1208 и 8.3.14.1630.

Первоначальная настройка

Данное расширение конфигурации было написано для реализации бэкенда на базе 1С. Для описании структуры публикуемых ресурсов используются 2 справочника: «Типы содержимого» - используется для описания MIME-типов и «Шаблоны страниц», который используется для описания отдаваемых ресурсов

 

Справочники расширения

 

При первоначальном открытии в справочнике «Типы содержимого» необходимо нажать кнопку «Начальное заполнение» в форме списка. Она подгрузит список наиболее распространенных значений:

 

Загрузка MIME типов

 

Далее необходимо выполнить публикацию http-сервиса расширения. Для этого в конфигураторе перейдите в «Администрирование» - «Публикация на веб-сервере…» и убедитесь, что на вкладке «HTTP сервисы» стоит флаг «Публиковать HTTP сервисы расширений по умолчанию». Если база до этого не была опубликована, то необходимо опубликовать ее (для IIS)

 

Настройка публикации

 

Формирование шаблонов страниц

Откроем справочник «Шаблоны страниц» и создадим новый элемент: в поле «Имя пути» указываем название ресурса так, как будем запрашивать его в браузере, Content-Type позволяет выбрать MIME-тип, на вкладке шаблон мы можем ввести текст, который будет отправлен в ответ на запрос.

 

Шаблон простой страницы

 

В результате при запросе к http://127.0.0.1/Web1C/hs/WebAccess/BasicPages/simple_text.html (где Web1C - имя публикации, а simple_text.html – имя пути) мы получим в ответ страницу следующего вида:

 

простая страница

 

Если при запросе к ресурсу нам необходимо отдавать какие-то данные, получаемые из БД, то нам необходимо указать произвольный тег в шаблоне (например <data>):

 

шаблон с параметром (вкладка шаблон)

 

После чего на вкладке параметры указать этот тег и определить для него алгоритм получения:

 

Страница с параметром (вкладка параметры)

 

При установке следующего алгоритма получения при указании параметра name «Администратор» получим:

//Тело запроса доступно в переменной Контент. Если у пришедшего запроса MIME-тип был
//"application/json", то в нем будет соответствие иначе строка с телом запроса
//В переменной ПараметрыЗапроса доступны параметры запроса (HTTPСервисЗапрос.ПараметрыЗапроса)
Имя = Контент["name"];
            
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |            Пользователи.Ссылка КАК Ссылка,
               |            Пользователи.ИдентификаторПользователяИБ КАК ИдентификаторИБ,
               |            Пользователи.Наименование КАК Наименование
               |ИЗ
               |            Справочник.Пользователи КАК Пользователи
               |ГДЕ
               |            Пользователи.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование",Имя);
Выборка = Запрос.Выполнить().Выбрать();

мРезультат = новый Массив;
Пока Выборка.Следующий() цикл
                Строка = новый Структура;
                Строка.Вставить("uid",Строка(Выборка.Ссылка.УникальныйИдентификатор()));
                Строка.Вставить("uid_bd",Строка(Выборка.ИдентификаторИБ));
                Строка.Вставить("name",Выборка.Наименование);
                мРезультат.Добавить(Строка);
КонецЦикла;  

ЗаписьЖСОН = новый ЗаписьJSON;
ЗаписьЖСОН.УстановитьСтроку();
ЗаписатьJSON(ЗаписьЖСОН,мРезультат);

//Строка, которую мы возвращаем, должна быть помещена в переменную Результат
Результат = ЗаписьЖСОН.Закрыть();

 

Если же возвращаемое значение – двоичные данные, то на вкладке шаблон необходимо указать «Ответ как» в «Двоичные данные» и в текстовом поле шаблона указать алгоритм получения (Двоичные данные должны быть помещены в переменную ДвоичныеДанные)

 

шаблон с двоичными данными

 

страница с картинкой ДД из базы данных

 

Если же двоичные данные должны отдаваться статически то можно загрузить картинку в шаблон. Для этого необходимо переключить тумблер в шапке на значение «Ресурс» и нажать кнопку «Загрузить ресурс»

 

Шаблон со статичным ресурсом

Статичный ресурс

 

Дополнительные возможности

Так же можно указать дополнительные заголовки для ответа на запрос во вкладке «Заголовки». Это может быть полезно при реализации API, которая должна быть доступна по CORS:

 

произвольные заголовки

произвольные заголовки результат

 

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

 

инициализация переменных

 

Примеры использования:

На предыдущих местах работы на базе этого расширения были реализованы адресная книга для документооборота с разворачиваемым деревом подразделений (на vue.js + bootstrap), консоль администрирования и АРМ задач сервисдеска для разъездных сисадминов. В качестве живого примеров, который имею сейчас под рукой, могу назвать следующую реализацию TO-DO листа (Vue.js + sass)

 

задачник

http-сервисы back-end web

См. также

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

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16178    14    18    

14

Интеграция 1С — Битрикс24. Обмен задачами

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

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18287    10    15    

16

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13036    34    8    

13

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    85567    26    51    

50

Интеграция с сервисом vetmanager

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

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16681    43    49    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Diversus 2313 01.04.21 20:11 Сейчас в теме
2. comol 5060 02.04.21 19:18 Сейчас в теме
Мы чуть дальше пошли... https://github.com/comol/OneCWebFramework может проще fork и contribute пока не поздно?
detro; itoptimum; kote; dnikolaev; cleaner_it; +5 Ответить
4. DrAku1a 1723 09.07.21 15:34 Сейчас в теме
(2) "расирения конфигураций" - :-)
3. pm74 201 03.04.21 06:49 Сейчас в теме
у всех есть свой http сервис
maksa2005; simuljakr; DrAku1a; itoptimum; kote; dnikolaev; +6 Ответить
Оставьте свое сообщение