Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
IceZ
Зарегистрирован: 28.03.2005 Сообщения: 69 Откуда: Киев
|
Добавлено: Пн Июн 26, 2006 4:38 pm Заголовок сообщения: Вопросы по RepWizard |
|
|
У меня такой вопрос: чем отличается мастеровой отчет,назовем его "А",построенный пользователем , от того же отчета, только открытого способом
RW.Load(Идентификатор отчета "А")
Set "Б" = RW.MakeSheet
В отчете А" можно менять период, обновлять его. А вот в отчете "Б" -нельзя
Может кто знает почему так?
P/S/
Комбинации с EnableButtons не работают |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Вт Июн 27, 2006 7:08 am Заголовок сообщения: |
|
|
Отчёты от мастера вобще не генерируют события для своего модуля, там какая-то внутреняя скрытая обработка.
Но ShtBook, полученный методом rep.MakeSheet вероятно имеет ошибку в этом обработчике, на которую до сих пор никто не указал.
Да нет у людей необходимости таким образом отчёты делать, мастер рулит а клиент не ждёт.
Обойти можно, если через копи-пасте перенести такой отчёт в новую книгу и там добавить обработчики, но клипборд засоряется.
Можно сохранить отчёт и снова его открыть, добавив обработчики.
А если уж нормально делать, то заполняется чистая таблица обходом дерева отчёта, потом раскрашивается. |
|
Вернуться к началу |
|
|
IceZ
Зарегистрирован: 28.03.2005 Сообщения: 69 Откуда: Киев
|
Добавлено: Вт Июн 27, 2006 8:16 am Заголовок сообщения: |
|
|
Мне кажется это вовсе не ошибка.
Добавлять свой обработчик ? Да можно. Но тогда легче написать спец процедуру. Она будет быстрее.
Вся перелесть мастера отчетов и заключается в том, что не надо никаких добавлений со стороны программиста.
Если такие ВАЖНЫЕ события, как обновление необходимо программировать, то мастер отчетов в таких случаях уже не нужен |
|
Вернуться к началу |
|
|
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2661
|
Добавлено: Ср Июл 05, 2006 10:28 am Заголовок сообщения: Re: Вопросы по RepWizard |
|
|
IceZ писал(а): | У меня такой вопрос: чем отличается мастеровой отчет,назовем его "А",построенный пользователем , от того же отчета, только открытого способом
RW.Load(Идентификатор отчета "А")
Set "Б" = RW.MakeSheet
В отчете А" можно менять период, обновлять его. А вот в отчете "Б" -нельзя
Может кто знает почему так?
P/S/
Комбинации с EnableButtons не работают |
Нет там никаких ошибок.
Если Sheet создается мастером отчетов из интерфейса, то всю обработку делает С++
Если мастер отчетов создается программно, то результат - объект RW.MakeSheet стандартный, VBS - ный. И разработчик должен сам заботится о том, чтобы написать обработку событий.
Для примера можно посмотреть экспорт в Excel через HTML, который есть в Стандарт7 |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Чт Июл 06, 2006 7:55 am Заголовок сообщения: |
|
|
Цитата: | Мне кажется это вовсе не ошибка. |
Нет конечно, - просто не стояла такая задача.
Дело в том, что в мастеровом отчёте "А" есть одно неудобство.
После изменения отчёта из скрипта (да хотя бы тот же экспорт через HTML) внутренние обработчики "обновить" и смены периода перестают работать, но при этом не работают и соответствующие скриптовые события. А в отчёте RW.MakeSheet решили эту проблему обойти, чтобы программистам была возможность добавлять свои обработчики. И это было мудрое решение - зачем терять часы или дни на проблему, которая неопределённое время никого не заволнует.
Цитата: | Если Sheet создается мастером отчетов из интерфейса, то всю обработку делает С++ |
Приходилось делать много разных обработчиков для панели управления отчёта, и "невидимые" на VB, и просто на скрипте.
Техническая возможность добавить метод RW.AddEvents наверняка имеется, а вот вопрос об экономической целесообразности решает, конечно, Разработчик. А нам остаётся следить за его реакцией. |
|
Вернуться к началу |
|
|
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2661
|
Добавлено: Чт Июл 06, 2006 8:16 am Заголовок сообщения: |
|
|
Set Wr = Createreport("RepWizard")
.....
Set Sb = Wr.MakeSheet
Sb.SetScriptFromFile("EventsForSheets.avb")
Нужны комментарии ? |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Чт Июл 06, 2006 8:56 am Заголовок сообщения: |
|
|
Цитата: | Sb.SetScriptFromFile("EventsForSheets.avb")
Нужны комментарии ? |
Разместите, пожалуйста, файл "EventsForSheets.avb" в "полезных мелочах", можно без комментариев.
Если с этим трудности, я сейчас не очень загружен, мог бы написать - если в цене сойдёмся. |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Чт Июл 06, 2006 9:05 am Заголовок сообщения: |
|
|
Забыл добавить, "EventsForSheets.avb" для "экспорт в Excel через HTML", ато многие эту функцию отключают в настройках - обновление и смена периода с ним перестают работать. |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Чт Июл 06, 2006 9:11 am Заголовок сообщения: |
|
|
Вопрос не по теме - а обновления стандарной поставки сейчас выкладывается на серевере, не нашёл 16 обновления. |
|
Вернуться к началу |
|
|
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2661
|
Добавлено: Чт Июл 06, 2006 9:14 am Заголовок сообщения: |
|
|
Юров Ю.С. писал(а): | Вопрос не по теме - а обновления стандарной поставки сейчас выкладывается на серевере, не нашёл 16 обновления. |
Попробуй установить автоматически.
Диалог приветствия - Проверить обновления |
|
Вернуться к началу |
|
|
Vinya
Зарегистрирован: 19.10.2005 Сообщения: 17 Откуда: г. Донецк
|
Добавлено: Чт Июл 06, 2006 9:19 am Заголовок сообщения: |
|
|
У меня такие вопросы по RepWizard. Я не знаю закономерности, но время от времени RepWizard выдает неправильные данные (Build 0462). Эти данные отличаются от такого же отчета, построенного мастером. Слышали ли вы когда-нибудь о подобных ошибках? Были ли они исправлены в следующих версиях? И (если обшибка не исправлена, но вы о ней слышали) есть ли какая - нибудь закономерность в появлении оной? |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Чт Июл 06, 2006 9:21 am Заголовок сообщения: |
|
|
Цитата: | "Если с этим трудности" |
Хотел сказать, "если готового нет и со временем трудности", ато ещё подумаете чёрти-что |
|
Вернуться к началу |
|
|
IceZ
Зарегистрирован: 28.03.2005 Сообщения: 69 Откуда: Киев
|
Добавлено: Чт Июл 06, 2006 9:39 am Заголовок сообщения: |
|
|
Можно конечно и так исхитриться
Option Explicit
Dim Period
Set Period = CreateLibObject("Period")
Sub ShtBook_OnRequery
Dim RW
Dim Sht
Set RW = Workarea.CreateReport("RepWizard")
RW.Load(ShtBook.MAP.Item("REPID"))
RW.KindID = ShtBook.MAP.Item("KINDID")
RW.Period.Start = PERIOD.START
RW.Period.End = PERIOD.End
RW.BUILD
Set SHT = RW.MakeSheet
SHT.SETSCRIPT ("'#include ""Прометей.Мастер Отчетов.Обработчик.avb""")
SHT.Map.Item("REPID") = ShtBook.MAP.Item("REPID")
SHT.Map.Item("KINDID") = ShtBook.MAP.Item("KINDID")
ShtBook.Close
End Sub
Sub ShtBook_OnPeriodClick(Buttons)
If Period.Browse Then Call ShtBook_OnRequery
End Sub
Sub ShtBook_OnLoad
ShtBook.EnableButtons(1+2+4)
End Sub |
|
Вернуться к началу |
|
|
Юров Ю.С.
Зарегистрирован: 11.03.2005 Сообщения: 383 Откуда: Павлоград
|
Добавлено: Чт Июл 06, 2006 10:11 am Заголовок сообщения: |
|
|
Сперва нужно заставить таблицу отчёта, сформированную скриптом, кричать "Ура" по нажатию кнопки "обновить". (Желательно без создания новой таблицы - мороки много.)
А после можно будет "исхитряться" с обновлением.
Код: |
Option Explicit
Sub AddModule(sh)
Dim s
s= "Option Explicit" & vbLf & vbLf
s=s&"ShtBook.EnableButtons 1 + 4 'Обновить + Сохранить" & vbLf & vbLf
s=s&"Sub ShtBook_OnRequery" & vbLf & _
" MsgBox ""УРА, обработчики работают""" & vbLf & _
"End Sub" & vbLf
sh.Parent.SetScript(s)
End Sub
Sub test
Dim rw : Set rw=workarea.CreateReport("RepWizard")
rw.Load 889 'любой существующий
rw.KindID = 489 'правильный
rw.Build
Dim sh : Set sh = rw.MakeSheet.ActiveSheet
AddModule(sh)
End Sub
Call test |
Последний раз редактировалось: Юров Ю.С. (Чт Июл 06, 2006 10:23 am), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2661
|
Добавлено: Чт Июл 06, 2006 10:22 am Заголовок сообщения: |
|
|
Я могу, только некогда.
- Изменить период
- Пересчитать отчет
- Создать новую таблицу makeSheet
- напихать его VBS кодом
- закрыть текущий отчет. |
|
Вернуться к началу |
|
|
|