Имя: Пароль:
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) Ну я примерно то же самое хотел сказать, только сразу намекнул, как можно правильно решить задачу.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.