Имя: Пароль:
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 дергает еще и методы доступные только на толстом клиенте оказывается. Пол конфы под такую простую задачку ковырять надо будет.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn