Тема: Завершить отчет из Implement
Перед формированием отчета идет предваритеьная обработка данных в проц. Implement
как завершить отчет из этой процедуры в случае невыполнения каких-либо начальных условий?
Спасибо
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
TechnologiCS → TechnologiCS → Настройка отчетов и расчетных форм → Завершить отчет из Implement
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Перед формированием отчета идет предваритеьная обработка данных в проц. Implement
как завершить отчет из этой процедуры в случае невыполнения каких-либо начальных условий?
Спасибо
Ну наверное проще всего исключение кинуть из макроса. Отчет скорей всего прервется, но надо посмотреть чтобы ошибка было обработано корректно ( в смысле понятна пользователю что произошло)
Что имеется в виду "исключение кинуть из макроса" из какого макроса и что за исключение?
в процедуре Implement кинуть ошибку, что то типа https://forum.technologics.ru/post7829.html#p7829
Мне не помогло. При возникновении ошибки прекращается выполнение процедуры Implement, но построение отчета продолжается.
Как программно отменить или прекратить именно построение отчета, который начинается после выполнения Implement?
Бывает что пользователь не выделил строку и запустил отчет, тогда он формируется по всей текущей таблице. В Implement проверка работает и сообщение пользователю выкидываю, что нужно выделить только одну строку, дальше сам завершаю выполнение Implement делением на ноль.
В новой версии (и новом репортере) есть Обработчик выгрузки данных https://help.technologics.ru/7.9/TCSHelp/_717.htm.
Не уверен что это сработает со старым репортером (а если сработает нет гарантии что будет работать дальше). Все таки старый репортер только поддерживается. Но попробуйте - это самый лучшие вариант конечно.
Решил проблему на старом репортере:
в модуль Reports.bas добавил процедуру OneReport
Sub OneReport()
Attribute Report.VB_ProcData.VB_Invoke_Func = "s\n14"
'
' процедура для запуска из TechnologiCS без отрисовки
' Ctrl-S
Dim ACon, ARecSet, ACount
Dim Rpt As Object
Set ACon = CreateObject("ADODB.Connection")
Set ARecSet = CreateObject("ADODB.Recordset")
ACon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ActiveWorkbook.Worksheets("ComplSheet").Range("RGN_Data").Value
ARecSet.Open "SELECT count(*) FROM RptSheet", ACon
ACount = ARecSet.Fields(0)
ARecSet.Close
ACon.Close
Set ARecSet = Nothing
Set ACon = Nothing
If ACount > 1 Then
MsgBox "Отчет отменен, так как выбрано больше одного документа!", vbExclamation + vbSystemModal, "Внимание"
else
Set Rpt = CreateObject("CSDNRPT.Report")
Rpt.Run Application
end if
End Sub
В настройках отчетов, которые должны выполняться по одной строке в поле "Макро после" указал OneReport
Вариант не очень красивый, но зато пользователю не нужно будет в диспетчере задач убивать Excell при случайном запуске отчета без выделения строки
Почему не красивый? в старом как раз можно так конфигурировать.
Способ что я написал, работает до (и во время) выгрузки даннных.
Не красивый, потому что после сообщения "Отчет отменен" открывается шаблон Excell, который не нужен.
Не могли бы подробнее написать по новому репортеру, как объявить обработчик? И текст обработчика с примером, как прервать выполнение отчета
В демо базе отчет Извещение ГОСТ 2.503-2013(Excel) (из Архива)
Функция
Sub CheckDocument( TCSActiveModule, TCSExecutionParams ) 'Dim TCSExecutionParams as IExecutionParams if TCSActiveModule.SelectedRowsCount<>1 then TCSExecutionParams.ReturnCode = -1 TCSExecutionParams.ReturnMessage = "Выделите один документ извещение вида <" & ALLOWED_REPORT_DOC_TYPES & ">!" Exit Sub End If if Not Is_Value_InArray( TCSActiveModule.p_TYPE_NOTE.DisplayText, ALLOWED_REPORT_DOC_TYPES ) Then TCSExecutionParams.ReturnCode = -1 TCSExecutionParams.ReturnMessage = "Выбранный вид документа не подходит для данного отчета!" Exit Sub End If TCSExecutionParams.ReturnCode = 0 TCSExecutionParams.ReturnMessage = "" End Sub
Обработчик выгрузки данных $CheckDocument.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
TechnologiCS → TechnologiCS → Настройка отчетов и расчетных форм → Завершить отчет из Implement