|
Мне в код попала ссылка на объект управляемой формы внешнего отчета. Нужно получить схему | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
19.07.20
✎
20:33
|
Неизвестный пользователь открыл неизвестный файл внешнего отчета и вызвал мою функцию на клиенте. Я в своей функции определил имя этой формы например ВнешнийОтчет.Отчет1.Форма.ФормаОтчета. Как мне теперь получить схему компоновки?
|
|||
1
TormozIT
гуру
19.07.20
✎
20:36
|
Без явного вызова ВнешниеОтчеты.Подключить(), если пользователь открывает файл внешнего отчета интерактивно, этот отчет получает временное имя для выполнения ВнешниеОтчеты.Создать("ИмяПодключенногоВнешнегоОтчета")? Если да, то какое? Попробовал через имя "Отчет1" - ошибка.
|
|||
2
Franchiser
гуру
19.07.20
✎
20:54
|
Схема разве как то связана с формой отчёта?
|
|||
3
hhhh
19.07.20
✎
20:55
|
(1) а если РеквизитФормыВЗначение("Отчет") ??
|
|||
4
Franchiser
гуру
19.07.20
✎
20:55
|
Там нужно взять идентификатор из сведенияовнешнейобработки()
|
|||
5
TormozIT
гуру
19.07.20
✎
20:57
|
(4) Отчет неизвестный, т.е. произвольный, т.е. в нем вообще может не быть кода и в базе может не быть БСП.
|
|||
6
TormozIT
гуру
19.07.20
✎
20:58
|
(3) Это можно делать только на сервере, а я на клиенте. На лету вставить в модуль формы отчета свой код я не смогу.
|
|||
7
Franchiser
гуру
19.07.20
✎
21:13
|
(6) что мешает из твоей процедуры вызвать серверный модуль?
|
|||
8
hhhh
19.07.20
✎
21:21
|
(6) ВнешнийОтчет (ExternalReport)
СхемаКомпоновкиДанных (DataCompositionSchema) Использование: Чтение и запись. Описание: Тип: СхемаКомпоновкиДанных. Схема компоновки, на основании которой будет выполняться отчет. Доступность: Сервер, толстый клиент, внешнее соединение. СхемаКомпоновкиДанных только на сервере. |
|||
9
TormozIT
гуру
19.07.20
✎
21:25
|
(8) Прочитай свое сообщение внимательнее -
Доступность: Сервер, толстый клиент, внешнее соединение. Это НЕ "только на сервере". |
|||
10
TormozIT
гуру
19.07.20
✎
21:26
|
(7) Могу вызывать свой общий модуль на сервере. Что мне это даст?
|
|||
11
Franchiser
гуру
19.07.20
✎
21:27
|
Передаешь туда УФ в процедуре.
Далее пишешь УФ.РеквизитФормыВЗначение("Отчет") |
|||
12
TormozIT
гуру
19.07.20
✎
21:27
|
Чтобы вызвать РеквизитФормыВЗначение нужен объект формы. А на сервере он доступен только в собственном контекстном вызове. Т.е. передать объект формы по ссылке на сервер нельзя.
|
|||
13
Franchiser
гуру
19.07.20
✎
21:29
|
(12) да ладно чё это нельзя. Мне кажется я передавал. Ты попробуй. И в типовых такой код вызова УФ.РеквизитФормыВЗначение("Отчет") встречал.
|
|||
14
TormozIT
гуру
19.07.20
✎
21:30
|
(13) Ну я в этом абсолютно уверен. Ты ошибаешься.
|
|||
15
TormozIT
гуру
19.07.20
✎
21:32
|
(13) "в типовых такой код вызова УФ.РеквизитФормыВЗначение("Отчет") встречал"
Из собственного контекстного вызова передать в общий модуль ссылку на саму форму (контекстного вызова) конечно можно. Но передать ее на сервер с клиента "снаружи" нельзя - только через контекстный серверный вызов. |
|||
16
Franchiser
гуру
19.07.20
✎
21:34
|
ОбщийМодуль.БухгалтерскиеОтчеты в типовой БП 3.0 Корп:
// Определяет имя отчета (объекта метаданных), отображаемого в форме. // // Параметры: // Форма - ФормаКлиентскогоПриложения - Форма объекта. // // Возвращаемое значение: // Строка - Имя объекта метаданных. // Функция ИмяОтчета(Форма) Экспорт ИмяОтчета = БухгалтерскиеОтчетыКлиентСервер.ИмяОтчетаПоИмениФормы(Форма); Если ИмяОтчета <> Неопределено Тогда Возврат ИмяОтчета; КонецЕсли; // Основной реквизит формы должен называться Отчет ОтчетОбъект = Форма.РеквизитФормыВЗначение("Отчет"); Возврат ОтчетОбъект.Метаданные().Имя; КонецФункции |
|||
17
Franchiser
гуру
19.07.20
✎
21:36
|
(14) я про внеконтекстный вызов...
|
|||
18
Franchiser
гуру
19.07.20
✎
21:38
|
Всегда можно уф передать в как параметр в процедуру на клиенте с директивой наклиентебезконтекста, насерверебезконтекста
|
|||
19
TormozIT
гуру
19.07.20
✎
21:45
|
(17) Во внеконтекстном серверном вызове не может быть объекта формы.
|
|||
20
TormozIT
гуру
19.07.20
✎
21:48
|
В метод с директивой компиляции &насерверебезконтекста передать форму можно только внутри контекстного серверного вызова, т.е. делаем контекстный серверный вызов и уже внутри него вызываем такой метод, но с клиента на сервер вызов должен быть контекстным.
|
|||
21
Franchiser
гуру
19.07.20
✎
21:49
|
(19) может быть если текущую форму передали как параметр процедуры , и указали директиву НаСервереБезКонтекста
|
|||
22
Franchiser
гуру
19.07.20
✎
21:52
|
(20) не знаю, что ты имеешь ввиду, но если в клиентском модуле, ты можешь получить форму, то ее можно передать в модуль на сервере, и это будет не контекстный вызов сервера.
|
|||
23
Franchiser
гуру
19.07.20
✎
21:55
|
(20) мы говорим о клиентском общем модуле?
|
|||
24
Cyberhawk
19.07.20
✎
21:56
|
ДанныеФормыВЗначение работает без контекста, может через него попробовать?
|
|||
25
TormozIT
гуру
19.07.20
✎
22:08
|
(24) Да он работает без контекста и даже на толстом клиенте, но он требует указания типа создаваемого объекта. Где взять тип? В общем то это вопрос из той же области что и (0)
|
|||
26
TormozIT
гуру
10.08.20
✎
14:30
|
Подниму
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |