Как отключить формирование отчетов при открытии их формы?
Дано: конфигурация Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.167.32), 1С:Предприятие 8.3 (8.3.24.1667), отчеты группы "Задолженность".
При открытии формы любого отчета он сразу начинает формироваться. Таким образом:
1. Пользователю приходится ждать, если данных много, прежде чем задать правильные настройки.
2. Создаётся лишняя нагрузка на сервер, так как отчет формируется по два раза.
Пока я расширением в конкретных тяжелых отчетах поправил прямо в форме, в процедуре ПриОткрытии, закомментировав соответствующую ветку. Но хотелось бы узнать как автоформриование отчетов при открытии сделать грамотно, средствами БСП и сразу для всех отчетов. Заранее спасибо за ответы!
При открытии формы любого отчета он сразу начинает формироваться. Таким образом:
1. Пользователю приходится ждать, если данных много, прежде чем задать правильные настройки.
2. Создаётся лишняя нагрузка на сервер, так как отчет формируется по два раза.
Пока я расширением в конкретных тяжелых отчетах поправил прямо в форме, в процедуре ПриОткрытии, закомментировав соответствующую ветку. Но хотелось бы узнать как автоформриование отчетов при открытии сделать грамотно, средствами БСП и сразу для всех отчетов. Заранее спасибо за ответы!
По теме из базы знаний
Найденные решения
Подведу итог, какие есть варианты решения моей задачи. Если кратко, то решить изменением пары строк кода в БСП, "малой кровью", так сказать, не выйдет.
1. Как я делал, изменяя код формы с помощью расширения.
В расширении требуется в событии "ПриОткрытии" отключить ветку условия с кодом:
и в событии "ПриЗагрузкеПользовательскихНастроекНаСервере" отключить код - отключить вывод анимации формирования отчета.
Минус: необходимо это прописать в каждой форме отчета, если он не использует общую форму.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
3. Изменить возвращаемое значение функции "БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии" на большое значение.
Минусы:
При вызове отчетов из форм справочников используется этот же параметр для определения интервала формирования. Значит, отчет не будет тут формироваться при открытии формы тоже, а это нужно.
В итоге было принято решение использовать вариант 1, но только на самых тяжелых отчетах.
Всем спасибо за помощь!
1. Как я делал, изменяя код формы с помощью расширения.
В расширении требуется в событии "ПриОткрытии" отключить ветку условия с кодом:
ПодключитьОбработчикОжидания("Подключаемый_СформироватьПриОткрытии", БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии(), Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "ФормированиеОтчета");
Минус: необходимо это прописать в каждой форме отчета, если он не использует общую форму.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
3. Изменить возвращаемое значение функции "БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии" на большое значение.
Минусы:
При вызове отчетов из форм справочников используется этот же параметр для определения интервала формирования. Значит, отчет не будет тут формироваться при открытии формы тоже, а это нужно.
В итоге было принято решение использовать вариант 1, но только на самых тяжелых отчетах.
Всем спасибо за помощь!
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Чтобы он автоматически не формировался, нужно при открытии передать параметр.
Может через расширение сделать, или поискать эту настройку на форме.
Может через расширение сделать, или поискать эту настройку на форме.
ПараметрыОтчета = Новый Структура;
Если СформироватьПриОткрытии Тогда
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Ложь);
КонецЕсли;
(6)
Пока нашел только два варианта, как отключить формирование отчетов при открытии:
1. Как я делал, изменяя код формы с помощью расширения.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Но во втором способе есть минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
ВариантыОтчетовКлиент
Попробовал сделать замер при запуске отчета и поискать вызов ОМ.ВариантыОтчетовКлиент в нём - нет вызовов. Т.е. это неверный путь.
Пока нашел только два варианта, как отключить формирование отчетов при открытии:
1. Как я делал, изменяя код формы с помощью расширения.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Но во втором способе есть минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
(12) Я так понимаю - если я получу данные замера, то в них будут все строки кода и процедуры, которые в процессе выполнялись (если отладка работает на сервере в том числе). Т.е. если потом в замере процедуру или общий модуль не могу найти, значит она и не выполнялась.
(1)
СформироватьПриОткрытии - установить в Ложь
СформироватьПриОткрытии - установить в Ложь
УсловияОтбора = Новый Структура("Товар", Элементы.Список.ТекущаяСтрока);
ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина);
ОткрытьФорму("Отчет.ЦеныТоваров.ФормаОбъекта", ПараметрыФормы);
Подведу итог, какие есть варианты решения моей задачи. Если кратко, то решить изменением пары строк кода в БСП, "малой кровью", так сказать, не выйдет.
1. Как я делал, изменяя код формы с помощью расширения.
В расширении требуется в событии "ПриОткрытии" отключить ветку условия с кодом:
и в событии "ПриЗагрузкеПользовательскихНастроекНаСервере" отключить код - отключить вывод анимации формирования отчета.
Минус: необходимо это прописать в каждой форме отчета, если он не использует общую форму.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
3. Изменить возвращаемое значение функции "БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии" на большое значение.
Минусы:
При вызове отчетов из форм справочников используется этот же параметр для определения интервала формирования. Значит, отчет не будет тут формироваться при открытии формы тоже, а это нужно.
В итоге было принято решение использовать вариант 1, но только на самых тяжелых отчетах.
Всем спасибо за помощь!
1. Как я делал, изменяя код формы с помощью расширения.
В расширении требуется в событии "ПриОткрытии" отключить ветку условия с кодом:
ПодключитьОбработчикОжидания("Подключаемый_СформироватьПриОткрытии", БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии(), Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "ФормированиеОтчета");
Минус: необходимо это прописать в каждой форме отчета, если он не использует общую форму.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
3. Изменить возвращаемое значение функции "БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии" на большое значение.
Минусы:
При вызове отчетов из форм справочников используется этот же параметр для определения интервала формирования. Значит, отчет не будет тут формироваться при открытии формы тоже, а это нужно.
В итоге было принято решение использовать вариант 1, но только на самых тяжелых отчетах.
Всем спасибо за помощь!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот