Получение списка баз http-запросом из сети

28.03.24

База данных - Инструменты администратора БД

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

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

Наименование Файл Версия Размер
Получение списка баз http-запросом из сети
.cf 27,83Kb
6
.cf 27,83Kb 6 Скачать

В статье использована информация из:

Статья на ИТСИсточник1Источник2 и ещё из многих мест.

В каждом из источников содержалась часть информации, которая полезна в целом, но не была полноценной, а порой даже ошибочной (ну или я ошибочно думаю, что она ошибочна).

На ИТС есть явное ограничение: Доступно только для лицензии КОРП. Но я так и не смог понять, в чём оно выражается. Возможно оно моральное...

Так же, как я ни пытался, не смог заставить работать через ws, только через hs, при этом про возможность работы через hs на ИТС упоминаний не нашёл.

Указанные в ИТС ограничения, например, Вызов метода WebCommonInfoBases.GetInfoBases() должен выполнять с аутентификацией, тоже оказались необязательными.

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

Надеюсь, я хоть как-то объяснил причину возникновения этой статьи.

Итак, решаемая задача.

В организации 20+ рабочих мест, 10+ баз 1С, которые требуется в том или ином списке подключать, отключать, заменять и т.д. пользователям.

 

Решение.

Использовать механизм получения баз, встроенный в платформу.

При наличии в файле 1cestart.cfg строчки InternetService=http://СерверПубликацииБаз/ИмяПубликации/hs, которая появится там после добавления этого сервиса в настройках, лончер будет пытаться получить список баз с сервера СерверПубликацииБаз и добавить его в общий.

Порядок его работы (информация взята из Источника1):

1) HEAD-запрос на адрес http://СерверПубликацииБаз/ИмяПубликации/hs/WebCommonInfoBases. Последнее подставляется платформой автоматически. На этот запрос должен прийти ответ 200, только в этом случае будет пункт 2.

2) GET-запрос на адрес http://СерверПубликацииБаз/ИмяПубликации/hs/WebCommonInfoBases. В этом запросе помимо прочего будут переданы параметры ClientID и InfoBasesCheckCode. От них, а так же от параметра Запрос.ОтносительныйURL будет строиться дальнейшая логика. На этот запрос должен прийти ответ 200 с заголовками Content-Type : application/json;charset=utf-8 и Cache-Control : no-cache и телом-JSON-строкой вида {"root":{"InfoBasesChanged":true,"URL":СервисПолученияСпискаv8i}}, где СервисПолученияСпискаv8i в моём случае тот же самый сервис, http://СерверПубликацииБаз/ИмяПубликации/hs/WebCommonInfoBases (хотя по ИТС должен быть другим и обязательно требовать авторизацию)

Если InfoBasesChanged = ЛОЖЬ, на этом всё и заканчивается, это означает, что менять список не нужно.

InfoBasesChanged = ИСТИНА, продолжаем.

3) HEAD-запрос на адрес СервисПолученияСпискаv8i (получен в п.2). На этот запрос должен прийти ответ 200, только в этом случае будет пункт 4.

4) GET-запрос на адрес СервисПолученияСпискаv8i (получен в п.2)На этот запрос должен прийти ответ 200 с заголовками Content-Type : application/json;charset=utf-8 и Cache-Control : no-cache и телом-JSON-строкой вида {"root":{"InfoBasesCheckCode":Версия,"ClientID":КодКлиента,"InfoBases":СтрокаСоСпискомБазВФорматеV8i}}

Вот, в общем то, и всё, что требуется из теории.

Практика.

Создаём http-сервис. Имя сервиса очень желательно латиницей, потому как его надо будет публиковать, а кириллица в публикации - зло. В моём случае WebCommonInfoBasesService. Важно! КорневойURL должен быть WebCommonInfoBases.

Создаём http-шаблон. Я назвал CheckNGetInfoBases. Сам шаблон /*. Т.е. он будет обрабатывать все запросы.

Создаём http-метод Head. Обработчик CheckNGetInfoBasesHead (ниже)

Создаём http-метод Get. Обработчик CheckNGetInfoBasesGet

 
 Листинг модуля WebCommonInfoBasesService

Дополнительные объекты конфигурации (взято из Источника2)

 
 Развёрнутое дерево конфигурации
 
 Листинг модуля объекта ШаблоныБаз
 
 Листинг модуля менеджера ИсторияПосещенияПользователей
 
 Листинги текстов шаблонов НовыйПользователь и Тестовая база

В конфигурацию также добавлен пользователь ib и роль для него. Роли даны права на чтение и запись объектов.

При публикации этот пользователь явно прописывается в vrd, чтобы обеспечить анонимные запросы (тоже из Источника2).

Какое-то время будет доступен сервер http://alg-rt.shmg.ru:8083/DistrIb/hs, который можно прописать в лончер и получить "заглушку" - обратитесь к Администратору.

Тестировал на платформе 8.3.9.2309 и 8.3.24.1342. Вероятно, между ними тоже всё нормально.

WebCommonInfoBases InternetService 1cestart.cfg http-сервис

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    3803    20    1    

42

Infostart УДиФ: Управление данными и формами 1С

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

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

10000 руб.

10.11.2023    4771    12    2    

38

SALE! %

PowerTools

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

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2280 руб.

14.01.2013    178980    1086    0    

863

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    28304    83    146    

61

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11917    5    9    

7

Конфигурация Session Monitor

Мониторинг Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1500 руб.

01.12.2020    14472    36    0    

51

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61659    90    59    

74

Хранилище файлов на SQL

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

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    11259    5    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. simuljakr 203 29.03.24 14:09 Сейчас в теме
А можно инструкцию ?
Я скачал ваш cf файл.
Развернул из него базу.
А что дальше ?
3. MikeSh 42 30.03.24 08:45 Сейчас в теме
(1)Добрый день.
- Заполнить предопределённый элемент Шаблона баз Новый пользователь как указано в листинге текстов шаблонов
- Добавить к предопределённому элементу Группы баз Новые Пользователи этот шаблон
- Создать в конфигураторе нового пользователя, например с именем ib и назначить ему роль Доступ к списку баз
- Опубликовать hs от имени этого пользователя
Это позволит "накапливать" новых пользователей.
А потом уже в самой базе создавать шаблоны, группы, ну и всячески рурить процессом.
2. quazare 3614 29.03.24 17:43 Сейчас в теме
В свое время, мне потребовалось разобрать механизм из БСП для работы с кластером. Так вот, там есть такая возможность- получить список баз, ну а раз список получен - я могу его использовать «при компоновке результата» в скд )
4. MikeSh 42 30.03.24 08:48 Сейчас в теме
(2)Можно подробнее? Или ссылку. Мне кажется, это немного не то, что в теме, но может быть интересно.
5. kirill_sh 1 31.03.24 00:56 Сейчас в теме
(4) Это получение списка баз с сервера по RAS.
8. MikeSh 42 31.03.24 08:28 Сейчас в теме
(5)
Ясно. Это тоже использую для обслуживания БД, чтобы гасить сеансы пользователей.
Но смысл таки в другом. В списке баз не обязательно будут базы с сервера. Это всё работает даже для файловых баз
6. kirill_sh 1 31.03.24 00:56 Сейчас в теме
Подскажите, а какой сервер публикации вы использовали?
я эту тему пытался внедрить, но не чего из этого не получилось сервер неправильно посылал запросы в 1С.
7. MikeSh 42 31.03.24 08:25 Сейчас в теме
(6)
Апач 2.4 с самыми стандартными настройками, "из коробки".
9. kirill_sh 1 31.03.24 10:05 Сейчас в теме
(7) вот как раз и вопрос как вы обошли настроку про HEAD в апаче?

в описании на итс и в ссылках которых у вас нужно убрать HEAD из запросов в iis это просто, а вот в апаче 2.4 проблемно. я только нашел как это сделать в 2.2
10. kirill_sh 1 31.03.24 13:10 Сейчас в теме
Это ИТС
В настройках веб-сервера, для которого выполнены публикации Web-сервиса получения списка общих информационных баз, должна быть запрещена обработка HTTP-запроса HEAD (по крайней мере для виртуальных каталогов, через которые выполняется обращение к Web-сервису). В противном случае Web-сервис не будет использоваться


Это вторая ссылка
8.Запрещаем обработку HTTP-запросов HEAD (Default Web Site - Фильтрация запросов - Команды HTTP - Запретить команду).
11. MikeSh 42 31.03.24 13:46 Сейчас в теме
(10)
Я это проигнорировал, т.е. вообще ничего не вносил в настройки. Пытался искать информацию, и даже что-то нашёл, но в итоге по инструкции не заработало, а из коробки заработало.
12. kirill_sh 1 31.03.24 13:49 Сейчас в теме
(11) оно работает, если у первого сервиса поставить на чтение любого вида сообщения тогда все норм.
Просто эти два сервиса в 1с работают как post, а вот если бы первый работал как get было бы правильно.
13. MikeSh 42 31.03.24 16:20 Сейчас в теме
(12) Не уловил суть. Какие 2 сервиса? Где речь о post? Сервис 1, в нём шаблон /*, обработчики только HEAD и GET.
Оставьте свое сообщение