Имя: Пароль:
1C
 
Функция ПолучитьФорму().Открыта()
,
0 Garry1010
 
15.02.16
11:50
Хоть и не в первый раз, но опять подниму тему, так как чёткого ответа всё-таки я не нашёл...
Цель - получить форму уже открытого(!) отчета в НЕ управляемом приложении. Естественно, что использование ПолучитьФорму() у объектов типа Отчет толку не даст, ибо она пытается получить форму для нового объекта отчета, который мне, конечно, не нужен - ибо он не тот, что уже открыт.
Возникает вопрос: каков смысл функции глобального(!) контекста ПолучитьФорму(...) в НЕ управляемом приложении касательно Отчетов, если указывай/не указывай ей правильный путь к форме отчета(ибо со справочниками, например, работает!), но функция Открыта() для неё как будто не работает? То есть всегда выдаёт Ложь. А если подсунуть ей не путь (строку) к форме, а уже "полученный" объект типа Форма - то она всегда якобы открыта - всегда выдаёт Истина.

ПолучитьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчетуХозрасчетный.Форма.Форма").Открыта() = Ложь; //ВСЕГДА
...
ф = ПолучитьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчетуХозрасчетный.Форма.Форма");
ПолучитьФорму(ф).Открыта() = Истина;                                                               //ВСЕГДА

Собственно, нормально работает только функция ПолучитьФорму() у объектов типа ВнешнийОтчет и ВнешняяОбработка. Вот она правильно определяет открыта ли форма отчета.
Кто-то знает ответ - почему у ПолучитьФорму() такая странная логика работы? Может, она просто неприменима для объектов типа Отчет и Обработка?
1 Рэйв
 
15.02.16
11:58
ОтчетОбъект.<Имя отчета> (ReportObject.<Имя отчета>)
ПолучитьФорму (GetForm)
Синтаксис:

ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>)

--------------
<КлючУникальности> - ни на какие мысли не наводит?

СП тоже иногда читать все таки надо...
2 Garry1010
 
15.02.16
12:08
(1) Кажется, я уже перепробовал все возможные варианты.
<КлючУникальности> - не-а, не наводит.;)) Ибо какой нафик ключ уникальности в открытом вручную отчете?
Под
ОтчетОбъект.<Имя отчета> (ReportObject.<Имя отчета>)
ПолучитьФорму (GetForm)

вы, видимо, понимаете:
Отчеты.ОборотноСальдоваяВедомостьПоСчетуХозрасчетный.ПолучитьФорму("Форма")
Я же написал, что ПолучитьФорму() от объекта Отчет бессмысленно, ибо он будет получать её для нового(!) объекта отчета, а не для того, что уже открыт, - точно так же, как для документа или справочника. Вы этого не знали?О_О
3 vicof
 
15.02.16
12:13
"ибо он будет получать её для нового(!) объекта отчета, а не для того, что уже открыт" - Ложь

<Уникальность> (необязательный)

Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
Ложь - искать форму с ключом уникальности по умолчанию, Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск.
Значение по умолчанию: Ложь.
4 Рэйв
 
15.02.16
12:16
(2)ОтчетОбъект в (1) это какбэ совсем  не Отчеты.ОборотноСальдоваяВедомостьПоСчетуХозрасчетный.

Это отчет у которого уже открыта форма с установленным ключом уникальности
5 Garry1010
 
15.02.16
12:23
(3) Значение по умолчанию: Ложь. Ложь - искать форму с ключом уникальности по умолчанию
И - что? Если открыть отчет просто через меню, то естественно предположить, что и ключ уникальности будет равен "ключом уникальности по умолчанию" - разве не так? А чего ж оно не ищет?

(4) И как вы предлагаете его найти - этот ОтчетОбъект? Может, вы не поняли: я ищу форму возможно открытого отчета НЕ(!!!) в самом этом отчете - а в совершенно другой обработке. Как работать с формой самого отчета из него самого - вопросов не вызывает никаких.:))
6 DDwe
 
15.02.16
12:26
(5) Ты чего нервируешься?
7 Garry1010
 
15.02.16
12:31
(6) Жду информацию о том, почему не работает сабж - а мне тут про то, какой я лох (будто первый день 1С'ку вижу).
8 DDwe
 
15.02.16
12:36
(7) Ну, так может правильно говорят? А если подумать?
9 Garry1010
 
15.02.16
12:38
(8) Я, вроде, написал по максимуму свои требования и вопросы...-_О Может, вместо хождения по приколам напишите, что хотели сказать?
10 DDwe
 
15.02.16
12:40
(9) Ну, требовать... это где-нибудь в другом месте.
11 Garry1010
 
15.02.16
12:42
(10) Требования - не к вам (больно хотелось), а к программе. Точнее, к функции глобального контекста.
...
Ладно. Другие мнения/инфа есть у кого-то? Может быть...
12 DomovoiVShoke
 
15.02.16
13:32
(3)А только у меня не дает вписать "уникальность" и пишет что избыток параметров?
13 vicof
 
15.02.16
13:36
14 vicof
 
15.02.16
13:36
(12) См. (11)
15 Garry1010
 
15.02.16
13:36
(12) Вот-вот. ;) Одна из причин.
16 DomovoiVShoke
 
15.02.16
13:39
(13)В (0) "НЕ управляемом приложении"
17 DomovoiVShoke
 
15.02.16
13:43
(8)Все передумал, мучаюсь аж работа стоит, расскажите пожалуйста.
18 vicof
 
15.02.16
13:44
(16) Одинкуй
19 vicof
 
15.02.16
13:46
Если что, у меня 8.3.5. На более древних не смотрел.
20 DomovoiVShoke
 
15.02.16
13:46
(18)Скиньте обработку, если можно.
21 DomovoiVShoke
 
15.02.16
13:47
(19)Сейчас проверим.
22 Garry1010
 
15.02.16
13:47
(13) Да зачем мне открывать отчет? Мне его форму найти надо (если она открыта), чтобы потом заняться кое-какими операциями (по реквизитам и свойствам формы пройтись, например). А если она не открыта, то и... не нужна она мне.
И - да, я же указал, что НЕ управляемое приложение.
23 DomovoiVShoke
 
15.02.16
13:49
(19)Проверил на 8.3.6 "Слишком много фактических параметров". Не дает вписать уникальность.
24 Garry1010
 
15.02.16
13:50
(18) Она у меня даже не открывается - на 8.2, правда. ВООБЩЕ! Даже в тело модуля формы не заходит, хотя Конфигуратор открывает её.
25 DomovoiVShoke
 
15.02.16
13:51
Блин я не заметил. Зачем функция ОткрытьФорму если надо ПолучитьФорму.
26 DomovoiVShoke
 
15.02.16
13:52
В ОткрытьФорму() дает вписать параметр уникальность, в ПолучитьФорму() не дает :)
27 DomovoiVShoke
 
15.02.16
13:56
(19)Даже если рассмотреть ОткрытьФорму(), какой параметр уникальности не ставь Истина/Ложь, все равно открываются новые формы.
28 cathode
 
15.02.16
14:08
(27) Это легко объясняется. В ПередОткрытием() у стандартных бухгалтерских отчетов стоит вызов

ТиповыеОтчеты.НазначитьФормеУникальныйКлючИдентификации(ЭтаФорма)

В нем, если у формы не указан ключ уникальности, он перезаписывается принудительно. Так что открыть одну и ту же форму дважды можно только если предварительно самостоятельно назначить какой-то одинаковый ключ уникальности.
29 DomovoiVShoke
 
15.02.16
14:25
(0)В общем дело дрянь. Очередной косяк в 1с.
30 Garry1010
 
15.02.16
14:31
(29) Собственно, о чём я и спрашивал: косяк ли это или я чего-то не допетрил... Может, какой-то хитрый вариант задания имени отчета возможен? - Типа как для включения переключаемости непереключаемого интерфейса.:)
31 cathode
 
15.02.16
14:46
(30) Это косяк, но не платформы, а типовой БП 2.0. В пустой конфигурации указанное в (0) работает как должно.
А как включить переключаемость непереключаемого интерфейса?
32 Garry1010
 
15.02.16
14:56
(31) Дык, если бы работало, я бы не вопрошал сюда. Говорю же: для справочников и т.п. работает, а для отчетов - нет. Ничего не находит. Я же начал тестить не с ОСВ, а с ведомости по партиям на складах - а там нет этой НазначитьФормеУникальныйКлючИдентификации.

(31) О-о-о-ооо!!! Это есть великая тайна 1С!!! 8))) Мой коллега как-то с трудом нашёл такую фишку в инете. Как ни странно, надо сначала сделать наоборот (хотя исходно Общий интерфейс и так в конфе стоит как непереключаемый):
ГлавныйИнтерфейс.Общий.Переключаемый = Ложь;
после чего можно смело переключаться
ГлавныйИнтерфейс.ПереключитьИнтерфейс("...МойИнтерфейс");
и "Общий" интерфейс пропадёт.
33 DomovoiVShoke
 
15.02.16
14:57
(31)В ПолучитьФорму() нельзя вставить параметр "уникальности".
34 cathode
 
15.02.16
15:17
(32) o_O
(33) Похоже, это как-то связано с параметрами совместимости. В БП2 ПолучитьФорму с четвертым параметром не компилируется.
Если создать пустую конфигурацию с основным режимом запуска "Обычное приложение", то в ней компилируется.