Имя: Пароль:
1C
1С v8
Варианты Отображения отчета (Рабочий Стол / через кнопку выбора)
0 ixilimuse
 
12.06.13
10:05
Доброго времени суток, коллеги!

Продолжаю углубляться в Управляемые формы и тонкий клиент.
Столкнулся с проблемкой. Ответа не нашел. Был похожий вопрос: v8: УФ. Сформировать отчёт при открытии, только на рабочем столе

Но если честно не нашел в этой теме ответа. Который бы понял. И который бы сработал.

Суть задачи такова:
Есть отчет. Его форма отображается на Рабочем Столе. Хочу определить в какой момент форма открывается на Рабочем столе, а в какой момент она открыта пользователем в отдельной форме.

В зависимости от этого я хочу либо автоматически вызывать формирование и скрывать кнопку "Сформировать" с параметрами такими как "Дата". Либо не формировать при открытии, а давать пользователю возможность настроить параметры и нажать кнопку, прежде чем он увидит результат.

Заранее спасибо )
1 Wobland
 
12.06.13
10:11
в четвёртом посте всё написано
2 ixilimuse
 
12.06.13
10:27
ЭтаФорма.Окно = Неопределено
3 ixilimuse
 
12.06.13
10:31
Попытался вот так:

&НаСервере
Функция ПолучитьФормуОтчета()
   Возврат Отчеты.ДВК_Сегодня.ПолучитьФорму("ФормаОтчета");
КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   ДатаСведений = ТекущаяДата();
   КоличествоДней = 7;
   ФормаОтчета = ПолучитьФормуОтчета();
   Если ФормаОтчета.Окно.Основное Тогда
       СформироватьОтчет(ДатаСведений);
       ТабДок.Показать();
   КонецЕсли;
КонецПроцедуры


Но ругается на "ПолучитьФорму"..
{Отчет.ДВК_Сегодня.Форма.ФормаОтчета.Форма(15)}: Ошибка при вызове метода контекста (ПолучитьФорму)
   Возврат Отчеты.ДВК_Сегодня.ПолучитьФорму("ФормаОтчета");
по причине:
Интерактивные операции недоступны
4 ixilimuse
 
12.06.13
10:45
С параметром тоже идея хорошая, спору нет. Вопрос в том, в какой момент мне присвоить параметр?

По идее можно было бы при вызове с кнопки, но опять же, где в управляемых приложениях, найти то событие, которое срабатывает при вызове отчета через тонкого клиента из подсистемы через стандартную ссылку которая формируется системой при открытии вкладки подсистемы?
5 ixilimuse
 
12.06.13
11:04
В общем нашел решение. Правда не самое рациональное наверное, но железно работает.

В модуле управляемого приложения завел экспортную переменную.

В событии ПередНачаломРаботыСистемы(Отказ) присваиваю данной переменной Ложь.
В событии ПриНачалеРаботыСистемы() присваива Истина.


Перем СистемаНачалаРаботу Экспорт;

Процедура ПриНачалеРаботыСистемы()
   СистемаНачалаРаботу = Истина;
КонецПроцедуры

Процедура ПередНачаломРаботыСистемы(Отказ)
   СистемаНачалаРаботу = Ложь;
КонецПроцедуры

Теперь в событии ПриОткрытии() в форме отчета, я смотрю на переменную СистемаНачалаРаботу.

   Если НЕ СистемаНачалаРаботу Тогда
       СформироватьОтчет(ДатаСведений);
       ТабДок.Показать();
   КонецЕсли;

То есть, с помощью переменной видно, если все происходит перед началом работы системы, значит отчет открывается для отображения на рабочем столе. В противном случае, пользователь вызвал отчет ручками.
6 ixilimuse
 
12.06.13
11:08
Нет, каюсь.. При повторном открытии рабочего стола схема накрывается медным тазом..
7 ixilimuse
 
12.06.13
12:44
В общем вкурил очередную порцию глобальных понятий..

Изначально вариант с копированием формы отвергал так как формирование отчета было реализовано в модуле формы. Если бы скопировал форму, появился бы риск расхождения между двумя формами (функции получения отчета)..

Сейчас проблему решил таким образом.
Весь механизм формирования отчета перенес в модуль менеджера отчета.
И создал две формы. Одна полная для пользовательского режима, с настройками. И вторая форма для рабочего стола где единственный отображаемый объект - Табличный документ с результатом работы отчета.

Собственно и все. Все важные механизмы хранятся в одном месте. При желании можно создать кучу разных форм под разные нужды которые будут пользоваться общими механизмами. Различия будут только в специфических наворотах самих форм.

Всем спасибо за внимание ))))