Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Потерялся владелец :( (http://forums.kuban.ru/f1040/poteryalsya_vladelec-2495322.html)

EarlyBird 16.04.2012 08:53

Потерялся владелец :(
 
Доброго всем дня.
Делаю небольшую конфижку на 8.1, столкнулся с таким вопросом.
Есть отчёт, из строки которого по расшифровке можно открыть форму документа. Мне нужно, чтобы после изменения и закрытия этого документа, отчёт автоматом обновился. Для этого я добавил фрагмент в модуль формы документа, в процедуру ПриЗакрытии():

Если ВладелецФормы <> Неопределено Тогда
____Если ТипЗнч(ВладелецФормы) = Тип("Форма") Тогда
________Если ТипЗнч(ВладелецФормы.ЭтотОбъект) = Тип("ОтчетОбъект.МойОтчетТудаЕгоВКачель") Тогда
____________ВладелецФормы.КнопкаСформироватьНажатие();
________КонецЕсли;
____КонецЕсли;
КонецЕсли;

Всё классно работает, после закрытия документа отчёт заново отрисовывается.
Но!

EarlyBird 16.04.2012 08:56

Теперь я решил перенести этот отчёт на закладку рабочего стола (обработка РабочийСтол).

В модулеобработки РабочийСтол добавил код:

МойОтчет = Отчеты.МойОтчетТудаЕгоВКачель.Создать();
МойОтчет.НачДата = НачДата;
МойОтчет.КонДата = КонДата;
МойОтчет.Сотрудник = Сотрудник;
МойОтчет.Клиент = Клиент;

МойОтчет.СформироватьОтчет(ЭлементыФормы.ТабличныйДокумент);


После этого владелец формы потерялся.

EarlyBird 16.04.2012 08:59

Оно и понятно, ведь теперь вызов процедуры [b]СформироватьОтчет()[/b], расположенной в модуле отчёта, идёт не из формы этого отчёта, а из обработки РабочийСтол.
В документе, параметр ВладелецФормы, теперь пустой.
Вопрос: как в этом случае передать владельца?
Или может, есть другое решение, более прямое?

Helen 1986 16.04.2012 09:05

обновляй при активизации

EarlyBird 16.04.2012 09:13

(3) Зачем?
Мне нужно обновлять именно при закрытии документа.
Допустим, я сформировал отчёт, потом провалился в документ, потом не закрывая документ, снова переключился на окно отчёта, а потом обратно на документ (или ещё куда-то) И так 15-20 раз. Мне не нужно, чтобы каждый раз при активации переформировывался отчёт. Это заметное торможение.
Мне нужно так: я переключился на окно документа, изменил его, записал и закрыл. И именно в этот момент отчёт перерисовался.
То есть, обновление отчёта должно быть связано с событием закрытия документа.

Helen 1986 16.04.2012 09:23

обновляй при активизации не весь отчет, а только тот док, в который провалился

EarlyBird 16.04.2012 09:25

это как?

EarlyBird 16.04.2012 09:28

при формировании отчёта, выполняется запрос по документам за период.
предлагаешь выполнить запрос по одному документу, и потом при формировании табличного документа, [filolog]трахаться[/filolog] со строками, типа "здесь читать, здесь не читать, а здесь я рыбу заворачивал" ?

EarlyBird 16.04.2012 09:28

[*****] = [b]Т_Р_А_Х_А_Т_Ь_С_Я [/b]

Helen 1986 16.04.2012 09:29

когда выбираешь док в отчете и "проваливаешься" в него - его запоминаешь в отдельном списке, а при активизации анализируешь этот список и обновляешь документы по списку - отчет полностью выполнять не надо

будут сложности в реализации - думай.

Helen 1986 16.04.2012 09:30

(8) хи-хи

EarlyBird 16.04.2012 09:34

[quote=Helen 1986]его запоминаешь в отдельном списке, а при активизации анализируешь этот список и обновляешь документы по списку[/quote]
Не готично.
Такая ситуация: сформировал отчёт, потом открыл по расшифровке документ. Потом решил снова освежить у себя в памяти отчёт, переключился на его окно. Потом снова переключился на документ, потом снова на отчёт.
И так 50 раз.
По твоей схеме, у меня 50 раз выполнится запрос и формирование печатной формы отчёта.
Это не есть хорошо.

roma n 16.04.2012 09:37

(11) при активизации анализируешь этот список.... сначала анализируешь, потом обновляешь

EarlyBird 16.04.2012 09:42

(12) а какую-нибудь подписку на событие тут нельзя присобачить?
У насведь всё-таки восьмёрка, на секундочку. А не какая-нибудь шестёрка, туда её в качель.
Мне нужно, чтобы при закрытии документ сгенерировал какое-то событие, или типа того.
А обработка РабочийСтол должна его поймать. Это реализуемо?

roma n 16.04.2012 09:43

(13) Оповещения кури

EarlyBird 16.04.2012 09:50

(14) спасиб!

Helen 1986 16.04.2012 09:54

[b]Мне нужно, чтобы при закрытии документ сгенерировал какое-то событие, или типа того.[/b]

не готично. Править придется все документы

Lexusss 16.04.2012 09:58

ПриЗаписи
Оповестить
КонецПроцедуры

Вешаешь на форму обработку оповещения.

qweqwe123123 16.04.2012 10:08

7-Ирли Бёрд > 12-roma n > а отчетом несколько пользователей одновременно пользоваться не могут?
13-Ирли Бёрд > дурная затея с обновлением отчета при записи документа. кнопку "Сформировать" или "Обновить" пусть жамкает юзер. а по подписке при работе нескольких пользователей у тебя в отчете цифры будут прыгать постоянно.

Пацталоцци 16.04.2012 10:18

[quote=Зелёный тролль]дурная затея с обновлением отчета при записи документа...
...по подписке при работе нескольких пользователей у тебя в отчете цифры будут прыгать постоянно[/quote]
Не вижу ничего дурного в этой затее.
Напротив, это решение кажется мне изящнее, чем выборочное обновление одной строки отчёта.

Helen 1986 16.04.2012 12:07

(19) это решение свидетельствует о тупости разработчика.
Да, оно проще, но требует изменения ВСЕХ документов

если это самопал - решение вполне законное, если же это типовая - потом заниматься сексом при любом обновлении

EarlyBird 16.04.2012 14:41

(20) ну во-первых, не всех документов, а только одного (отчёт строится по одному виду документов).
Во-вторых, в типовой я бы действительно не стал курочить модуль документа (или подумал бы 100 раз). Но здесь самописка, к тому же всё завязано именно на построение этого отчёта (это основная выходная форма программы).
В-третьих, совсем не обязательно перерисовывать отчёт по закрытию [u][b]любого [/b][/u]документа [u][b]любым [/b][/u]активным пользователем. Можно организовать перерисовку только после закрытия документа [u][b]текущим [/b][/u]пользователем (в текущем сеансе).

Helen 1986 16.04.2012 15:05

ну тогда делай. Разрешаю

............................. Helen
............................ (подпись)

Helen 1986 16.04.2012 15:07

[img]http://pics.livejournal.com/khaodar/pic/000tsa50[/img]


Текущее время: 14:30. Часовой пояс GMT +3.