Имя: Пароль:
1C
 
Сформировать отчет WS - Соединение
,
0 Likons
 
15.09.22
16:27
День добрый)
Пожалуйста, подскажите как быть с моей бедой.
Замысел такой : нужен веб сервис, которому будут передаваться: код пользователя 1С, наименование отчета и имя настройки отчета пользователя.
Веб сервис должен найти пользователя по наименованию, восстановить настройку отчета по её наименованию, сформировать отчет, результат запихнуть в табличный документ и сохранить во временный файл.
Возвращать такой веб сервис должен временное имя файла.

Делаю я таким образом :

Функция ПолучитьОтчет(КодПользователя, ИмяОтчета, ИмяНастройкиОтчета)
    Отчет = Отчеты[ИмяОтчета].Создать();
    Отчет.УстановитьНачальныеНастройки();
    Отчет.УниверсальныйОтчет.ДатаНач = НачалоГода(ТекущаяДата());
    Отчет.УниверсальныйОтчет.ДатаКон = КонецМесяца(ТекущаяДата());
    
    СтруктураНастройки = Новый Структура;
    СтруктураНастройки.Вставить("Пользователь", Справочники.Пользователи.НайтиПоКоду(КодПользователя));
    СтруктураНастройки.Вставить("ИмяОбъекта", Строка("ОтчетОбъект.")+Строка(ИмяОтчета));
    СтруктураНастройки.Вставить("НаименованиеНастройки",ИмяНастройкиОтчета);
    
    Если УниверсальныеМеханизмы.ПолучитьНастройку(СтруктураНастройки) Тогда
        СохраненнаяНастройка = СтруктураНастройки.СохраненнаяНастройка;
    КонецЕсли;
    
    Отчет.ВосстановитьНастройкиИзСтруктуры(СохраненнаяНастройка);    
        
    ТабДокументРезультат = Новый ТабличныйДокумент;
    Отчет.СформироватьОтчет(ТабДокументРезультат);
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("XLS");
    ТабДокументРезультат.Записать(ИмяВременногоФайла,ТипФайлаТабличногоДокумента.XLS);
    
    Возврат ИмяВременногоФайла;
КонецФункции


Это работает, если я пихаю этот код во внешнюю обработку. В случае, если я дергаю её через веб сервис ругается на строку "Отчет.УстановитьНачальныеНастройки();".
Предполагаю, что при WS соединении, так делать нельзя.
Подскажите пожалуйста, как это можно порешать ? Или может есть какой то более красивый способ реализации ?
Буду благодарен за любые мысли )
1 vicof
 
15.09.22
16:29
Не надо предполагать, надо текст ошибки
2 Likons
 
15.09.22
16:31
(1) Метод объекта не обнаружен (УстановитьНачальныеНастройки)
Но метод то есть. Если запихнуть код во внешнюю обработку - все работает (
3 vicof
 
15.09.22
16:32
А в переменной отчет что?
4 vicof
 
15.09.22
16:32
Скорей всего имя отчета кривое передаешь
5 Likons
 
15.09.22
16:34
(3) Тип объекта = ОтчетОбъект.ВедомостьДенежныеСредства
6 Likons
 
15.09.22
16:34
(4) Не, вызываю одной и той же строкой и через веб сервис и через внешнюю обработку в одной и той же базе :
ПолучитьОтчет("Служебный","ВедомостьДенежныеСредства","Основная");
7 Likons
 
15.09.22
16:55
Только что проверил, что параметры передаю верно.

Возврат Строка(ТипЗнч(СтруктураНастройки.ИмяОбъекта));

Возвращает правильные типы.
8 Likons
 
16.09.22
10:22
Все еще ковыряюсь, попробую апнуть тему )
9 Likons
 
16.09.22
10:27
эмпирическим методом выяснил, что при WS соединении вообще недоступны методы объекта "ОтчетОбъект"(
Пробовал запихнуть этот код в Общий модуль, с галочками "Сервер", перед функцией указать "&НаСервере" и дергать такую функция Web сервисом.
Не помогло (
10 Kassern
 
16.09.22
10:35
(0) УстановитьНачальныеНастройки() Это процедура модуля объекта отчета? Если да, то посмотрите, что там в коде и перенесите в модуль вебсервиса.
11 Kassern
 
16.09.22
10:37
(9) "перед функцией указать "&НаСервере"" - зачем?
12 Kassern
 
16.09.22
10:37
У вас разве код общего модуля с галкой Сервер, может на клиенте выполниться?
13 Likons
 
16.09.22
11:43
(10) Да , УстановитьНачальныеНастройки()  - Это процедура модуля объекта отчета.
Перенести в модуль веб сервиса её довольно тяжело, тоже думал об этом, она дергает довольно много других функций по всей конфигурации(
14 Kassern
 
16.09.22
11:45
(13) Так может у вас WS не может к модулю объекта обратиться, а к остальным общим модулям без проблем пройдет?
15 Likons
 
16.09.22
11:45
(11) Это отчаяние, перебираю все что в голову приходит )
16 Likons
 
16.09.22
11:47
(14) Ну, в общий модуль с галочками "Сервер" , "Внешнее соединение" , "Клиент" и "Вызов сервера" заходит без проблем, а вот на модуль отчета по какой то причине ругается (
17 Kobol
 
16.09.22
11:47
Незнаю насчет вашей конфигурации, но в отчетах УПП УстановитьНачальныеНастройки() находится внутри области "#Если Клиент Тогда ... #КонецЕсли", соответственно внешнее соединение их не видит.
18 Likons
 
16.09.22
11:55
(17) спасибо тебе добрый человек !!!) Обидно, не обратил на это внимание. А есть мысли зачем так было сделано ? Если убрать "#Если Клиент", могу что то сломать ?
19 Ботаник Гарден Меран
 
16.09.22
11:57
В БСП есть подсистема рассылки отчетов.
Один из вариантов рассылки - сохранение в папку.
Настройки отчетов хранятся в вариантах отчетов.
Все можно содрать оттуда.
20 Likons
 
16.09.22
12:08
(19) Спасибо, сейчас наверное пойду туда. Стандартный механизм формирования отчетов через "Универсальный отчет" в УТП 1.2 дергает еще и методы доступные только на толстом клиенте оказывается. Пол конфы под такую простую задачку ковырять надо будет.