|
Сформировать отчет 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 дергает еще и методы доступные только на толстом клиенте оказывается. Пол конфы под такую простую задачку ковырять надо будет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |