HTTP-сервис: отчеты [Расширение]

Опубликовал Антон Степанов (Stepa86) в раздел Программирование - Практика программирования

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

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

Логин и пароль сохраняются браузером, поэтому вводить их нужно только один раз. Так же с помощью сервиса можно отдавать данные в любую другую систему, которая может выполнить http-запрос. 

Для правильного формирования ссылки из обработки необходимо, чтобы была заполнена константа АдресПубликацииИнформационнойБазыВИнтернете. Проще всего ее правильно заполнить, зайдя в базу через веб-клиент. Но можно и захардкорить прям в коде.

Что происходит внутри?

В качестве обязательного параметра url передается уникальный идентификатор варианта отчета. А в качестве необязательного параметра - формат ответа (HTML, XLSX или JSON).

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

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

Устанавливаются соответствующие заголовки и возвращается ответ.

Пример генерирования ссылки и обращение к этому сервису программно из другой 1Ски можно посмотреть в обработке HttpСсылкиПоВариантуОтчета

Программистам

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

Так же в этом расширении вы можете подсмотреть примеры:

  • Работа с HTTP-Сервисом
  • Программная работа с отчетами
  • Конвертация результатов отчетов
  • Обращение к HTTP-сервисам
  • Работа с расширениями
  • Работа с JSON

Что делать, если в моей конфигурации нет БСП?

Достаточно внедрить БСПОт БСП в этом расширении используются только варианты отчетов, т.к. это очень удобный контейнер с данными по отчету - ссылкой на отчет и сохраненными пользователем настройками. Можно сохранять настройки в другом месте и как-то по идентификатору их восстанавливать.

Почему это сделано расширением?

А прост. Захотелось попробовать новую фишку от 1С. Единственное огорчение - я так и не смог придумать способа добавить в форму отчета свою кнопку, по которой можно было б прям из отчета получить ссылки. В 8.3.9 с возможностью переопределять методы в общих модулях это должно получится без проблем.

Полезные ссылки

Зазеркалье: Расширения

Зазеркалье: Средства работы с JSON

Зазеркалье: Web и HTTP сервисы в расширениях

ИТС: Пример создания HTTP-сервисов на платформе "1С:Предприятие"

ИТС: Расширение конфигурации

HOWTO: создание и отладка HTTP-сервиса в 1С:Предприятие

HTTP-сервисы для тех, кто ничего не понимает в WEB

Расширения конфигурации. Полезные советы для разработки

Скачать файлы

Наименование Файл Версия Размер
HttpСервисОтчеты.cfe
.cfe 20,12Kb
28.08.16
66
.cfe 1.0.0.0 20,12Kb 66 Скачать

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
Татьяна Черных (tanya_charm) (0.20 $m)
Добавить вознаграждение
Комментарии
1. Татьяна Черных (tanya_charm) 31.08.16 06:50 Сейчас в теме
Отличная штука. Пошел тестировать.
2. Serg (serg_infostart) 232 31.08.16 09:44 Сейчас в теме
вещщ!

Команды для получения ссылки можно добавить на форму если добавить общую форму отчета в расширение (если используется общая форма отчета) и определив функцию в расширении формы например ПриСозданииНаСервере(). Там же можно и другие команды заменить/переопределить. Тут хорошо описана работа с расширениями.
3. Ruslan (rus128) 2 31.08.16 09:48 Сейчас в теме
"Все не приметивные типы приводятся к строке."
Все хорошо и красиво описано, но типы все-таки примИтивные :-)
Еще две опечатки заметил: "как то по идентификатору" (правильнее было бы "как-то") и "А прост." в последнем абзаце.
starik-2005; +1 Ответить 1
4. Антон Степанов (Stepa86) 568 31.08.16 09:54 Сейчас в теме
(3) Спасибо, поправлю. Лучше такие вещи в личку писать. И в "А прост." нет опечатки

(2) Тогда придется всю форму выносить в расширение, и если она изменится в типовой или уже отличается, то могут быть проблемы. Нашел в БСП какой-то механизм "Подключаемые команды", который по идее должен как раз добавлять команды в формы, но как его прикрутить к форме отчета не придумал. В форме отчета так же есть подготовка по использованию этого механизма, но нет места (или я его не нашел), где можно подрубить через расширения свои команды.
5. Андрей Акулов (DrAku1a) 1186 01.09.16 05:23 Сейчас в теме
Может можно в рамках того-же HTTP-сервиса сделать страницу со списком отчетов для выбора? Тогда отдельные ссылки будут не нужны.
6. Антон Степанов (Stepa86) 568 01.09.16 08:08 Сейчас в теме
(5) 1) Я очень сомневаюсь, что такая страничка, генерируемая полностью автоматом, будет полезна. Если и делать, то как это принято в подсистеме отчетов - на каждый раздел своя панель со своими вариантами.
2) Основная задумка сервиса - сначала настроить что нужно, а потом использовать. Такая форма со списком в нее не укладывается
7. Нурлан М (virtex3) 28.01.17 10:05 Сейчас в теме
Здравствуйте.

Нашел ваше замечательное расширение. Но вот к сожалению не сильно понимаю в программировании 1С.

У меня в конфигурации нет Справочника ВариантыОтчетов.

Вместо этого у меня есть Справочники.ИдентификаторыОбъектовМетаданных.
В этом справочник есть Родительский объект "Отчеты" и куча отчетов, которые ссылаются на родительский объект

Как заставить работать ваше расширение?