Имя: Пароль:
1C
1С v8
Опубликовать отчет 1с через http сервис
0 AlfaDog
 
17.03.17
09:33
Добрый день , коллеги!

Есть задача опубликовать отчет (табличный документ) через http сервис.

Насколько это сложно, кто нибудь делал? Может быть у кого то есть пример?

Буду крайне благодарен за помощь
1 Stepa86
 
17.03.17
09:38
2 Остап Сулейманович
 
17.03.17
09:44
(0) "задача опубликовать отчет (табличный документ) через http сервис.

Насколько это сложно, кто нибудь делал?"

В такой постановке - лучше не начинать. Сначала нужно изучить терминологию. Http сервис публикуется сам. И предназначен для передачи данных. А не для публикации чего то еще.

ЗЫ. Сначала напиши чего нужно.
- Поиметь html с табличкой отчета? Что б показать в браузере.
- Поиметь данные отчета на удаленной системе? Что б дальше оно само
...
3 xxTANATORxx
 
17.03.17
09:46
(0)Сервис отдает ХМЛ или Json
далее делаешь с ними что хочешь
4 Юрий Лазаренко
 
17.03.17
09:53
(0) Если совсем тупо, то публикуешь http-сервис, в его модуле формируешь нужный отчет в формате табличного документа, сохраняешь его как html, читаешь и возвращаешь полученный текст браузеру ответе http-сервиса - вуаля.
Но такой простой вариант может не прокатить, если отчет нужно отобразить не на отдельной странице, а на странице сайта - могут пересекаться стили, тогда надо переносить стили в head страницы. Ну и, понятное дело, всякие отборы/сортировки так просто не задашь. Плюс вопрос авторизации, если отчет не должен быть виден всем, или если его результат должен зависеть от того, кто зашел на сайт.
5 Юрий Лазаренко
 
17.03.17
09:53
(3) Зачем XML, если можно сразу готовый html.
6 AlfaDog
 
17.03.17
09:57
(4) Спасибо за подробный ответ

Можно только поподробней немного как сделать следующее:
отчет в формате табличного документа, сохраняешь его как html.


Как преобразовать табличный документ в формат html ?
7 mehfk
 
17.03.17
09:58
(6) СП украли?
8 eklmn
 
гуру
17.03.17
10:00
(7) ему СП не поможет, он технологию понять не может вот и спрашивает
9 Юрий Лазаренко
 
17.03.17
10:07
(6)
ИмяВремФайла = ПолучитьИмяВременногоФайла();
ТаблДокСОтчетом.Записать(ИмяВремФайла, ТипФайлаТабличногоДокумента.HTML5);
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ИмяВремФайла);
ТекстОтчетаHTML = ТекстДок.ПолучитьТекст();
10 AlfaDog
 
17.03.17
10:21
(9) Большое спасибо!
11 Юрий Лазаренко
 
17.03.17
10:38
(10) Пожалуйста. Как возникнет необходимость в серьезной интеграции - обращайтесь, сделаем качественно.
12 Stepa86
 
17.03.17
11:49
а чего все (1) игнорируют? Там как раз то, что нужно - отчет, который по http отдается в html, json или xlsx
13 oleg_km
 
17.03.17
11:50
Я запихал в div:

    л_Рез =
    "    <DIV CLASS=""tab_doc"">
    |        " + л_СтраницаОтчета + "
    |    </DIV>";


в л_СтраницаОтчета отчет как (9)
14 Юрий Лазаренко
 
17.03.17
12:06
(12) Так там 1 SM надо, а тут бесплатно уже все рассказали.
15 Юрий Лазаренко
 
17.03.17
12:07
(13) Это правильно, но и этот вариант не всегда помогает, особенно, если отчетов на странице несколько. Тогда только переносом стилей в head.
16 Юрий Лазаренко
 
17.03.17
12:08
+(15) Можно и проще, через iframe, но это не самый лучший вариант.
17 oleg_km
 
17.03.17
14:52
(16) Ничего не понимаю в веб, но как только сделал пример на фреймах натолкнулся на статью, что фреймы это фи, это плохо и забудьте про фреймы. Почему - не запомнил, но решил обходиться без фреймов. Гуру веба виднее.
18 badboychik
 
17.03.17
15:08
У меня сделано так в обработчике http-сервиса расширения для Документооборота:

Функция ReportsGet(Запрос)
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.Заголовки["Content-Type"] = "text/html; charset=UTF-8";
    Параметры = Новый Структура;
    Параметры.Вставить("ИмяОтчета", Запрос.ПараметрыURL["ИмяОтчета"]);
    Параметры.Вставить("УИД", Запрос.ПараметрыURL["УИДДокумента"]);
    
    Если Параметры.ИмяОтчета = "ЛистСогласования" Тогда
        Отчет = ПолучитьЛистСогласования(Параметры);
        ИмяВрФайла = ПолучитьИмяВременногоФайла("mxl");
        Отчет.Записать(ИмяВрФайла);
        Данные = Новый ДвоичныеДанные(ИмяВрФайла);
        Ответ.УстановитьТелоИзДвоичныхДанных(Данные);
    Иначе
        Ответ = Новый HTTPСервисОтвет(301);
        Ответ.Заголовки["Content-Type"] = "text/html; charset=UTF-8";
        Ответ.УстановитьТелоИзСтроки("Нет такого отчета: "+Параметры.ИмяОтчета);
    КонецЕсли;    
    
    Возврат Ответ;
КонецФункции
19 Юрий Лазаренко
 
17.03.17
15:09
(17) Все зависит от того, где и в каком контексте используются фреймы. Иногда это самый быстрый, самый лучший и самый надежный вариант выполнения задачи. Например, на этой странице есть как минимум 5 фреймов - и все ОК.
20 oleg_km
 
17.03.17
15:25
(18) И как пользователи, у которых нет 1С смотрят mxl?

(19) Т.е. фреймы не такое уж и зло?
21 Юрий Лазаренко
 
17.03.17
15:52
(20) Зло, но могут приносить пользу, если правильно ими пользоваться и если нет другого способа решить задачу. Я за 16 лет работы с html использовал в своих разработках фреймы 1 раз.
22 ТогдаКонецЕсли
 
17.03.17
17:11
для ТС: я делал так - сначала примерно разрабатывал структуру отчета типа <Строка> <Колонка> <Значение>222</Значение> ..... </Колонка></Строка>. Построчно.
Загоняешь это в все в строку, а при получении разбираешь в таблицу, ну там уже что хочешь с этим, то и делаешь.
23 Юрий Лазаренко
 
17.03.17
17:14
(22) Так это ж JSON
24 oleg_km
 
17.03.17
18:36
(23) А по-моему - это велосипед с квадратными колесами
25 Юрий Лазаренко
 
17.03.17
18:39
(24) Ну я примерно то же самое хотел сказать, только сразу намекнул, как можно правильно решить задачу.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn