Как отключить формирование отчетов при открытии их формы?

1. al_zzz 304 12.02.25 11:25 Сейчас в теме
Дано: конфигурация Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.167.32), 1С:Предприятие 8.3 (8.3.24.1667), отчеты группы "Задолженность".
При открытии формы любого отчета он сразу начинает формироваться. Таким образом:
1. Пользователю приходится ждать, если данных много, прежде чем задать правильные настройки.
2. Создаётся лишняя нагрузка на сервер, так как отчет формируется по два раза.
Пока я расширением в конкретных тяжелых отчетах поправил прямо в форме, в процедуре ПриОткрытии, закомментировав соответствующую ветку. Но хотелось бы узнать как автоформриование отчетов при открытии сделать грамотно, средствами БСП и сразу для всех отчетов. Заранее спасибо за ответы!
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
18. al_zzz 304 14.02.25 05:29 Сейчас в теме
Подведу итог, какие есть варианты решения моей задачи. Если кратко, то решить изменением пары строк кода в БСП, "малой кровью", так сказать, не выйдет.
1. Как я делал, изменяя код формы с помощью расширения.
В расширении требуется в событии "ПриОткрытии" отключить ветку условия с кодом:
ПодключитьОбработчикОжидания("Подключаемый_СформироватьПриОткрытии", БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии(), Истина);
и в событии "ПриЗагрузкеПользовательскихНастроекНаСервере" отключить код
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "ФормированиеОтчета");
- отключить вывод анимации формирования отчета.
Минус: необходимо это прописать в каждой форме отчета, если он не использует общую форму.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
3. Изменить возвращаемое значение функции "БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии" на большое значение.
Минусы:
При вызове отчетов из форм справочников используется этот же параметр для определения интервала формирования. Значит, отчет не будет тут формироваться при открытии формы тоже, а это нужно.
В итоге было принято решение использовать вариант 1, но только на самых тяжелых отчетах.
Всем спасибо за помощь!
VyacheslavShilov; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user-z99999 78 12.02.25 11:41 Сейчас в теме
(1) Чтобы он автоматически не формировался, нужно при открытии передать параметр.
Может через расширение сделать, или поискать эту настройку на форме.

 ПараметрыОтчета = Новый Структура;     
	
	Если СформироватьПриОткрытии Тогда
		ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Ложь);
	КонецЕсли;
4. al_zzz 304 12.02.25 11:48 Сейчас в теме
(2) Эти отчеты открываются из интерфейса. Как мне передавать в них во все это параметр? На данный момент там параметр "СформироватьПриОткрытии" - неопределено.
6. vladimir_korshun 87 12.02.25 11:49 Сейчас в теме
(4) смотри здесь
ОбщийМодуль.ВариантыОтчетовКлиент

Процедура ОткрытьФормуОтчета
7. al_zzz 304 12.02.25 12:36 Сейчас в теме
(6)
ВариантыОтчетовКлиент
Попробовал сделать замер при запуске отчета и поискать вызов ОМ.ВариантыОтчетовКлиент в нём - нет вызовов. Т.е. это неверный путь.
Пока нашел только два варианта, как отключить формирование отчетов при открытии:
1. Как я делал, изменяя код формы с помощью расширения.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Но во втором способе есть минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
12. vadim1011985 103 12.02.25 15:14 Сейчас в теме
(7) Так Вы немного не то ищите. Попробуйте найти эту фразу "СформироватьПриОткрытии"
13. al_zzz 304 12.02.25 16:50 Сейчас в теме
(12) Я так понимаю - если я получу данные замера, то в них будут все строки кода и процедуры, которые в процессе выполнялись (если отладка работает на сервере в том числе). Т.е. если потом в замере процедуру или общий модуль не могу найти, значит она и не выполнялась.
17. spacecraft 13.02.25 09:33 Сейчас в теме
(7) (9) если в самой форме жестко прописаны свои условия запуска, то общей точки поправить нет.
Для разных случаев свои решения делать.
К примеру, для 2 случая, делать проверку на наличие нужного реквизита формы.
3. vladimir_korshun 87 12.02.25 11:43 Сейчас в теме
(1)
СформироватьПриОткрытии - установить в Ложь
УсловияОтбора = Новый Структура("Товар", Элементы.Список.ТекущаяСтрока);
ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина);
ОткрытьФорму("Отчет.ЦеныТоваров.ФормаОбъекта", ПараметрыФормы);
5. al_zzz 304 12.02.25 11:49 Сейчас в теме
(3) Куда этот код прописать при открытии отчета из интерфейса?
8. ZOMI 143 12.02.25 12:39 Сейчас в теме +1 $m
(5) Не надо так
Нужно в Общие формы/ФормаОтчета/ ПриСозданииНаСервере - После

Параметры.СформироватьПриОткрытии = Ложь;
Элементы.ФормироватьСразу.Пометка = Ложь
НастройкиОтчета.ПрочитатьФлажокФормироватьСразуИзПользовательскихНастроек = Ложь;
9. al_zzz 304 12.02.25 12:59 Сейчас в теме
(8) У отчетов типа "Задолженность", да и у многих других, вызываются свои формы. Т.е., если я просто в общей форме отчета задам параметры, будет работать только для отчетов, не имеющих своей формы.
А с такими итак проблем нет.
10. ZOMI 143 12.02.25 13:06 Сейчас в теме
(9) тогда сюда расширением
БыстрыеНастройкиОтчетовСервер.ПриСозданииНаСервере(ЭтотОбъект);
11. al_zzz 304 12.02.25 13:10 Сейчас в теме
(10)
БыстрыеНастройкиОтчетовСервер
- в этот ОМ тоже не попадаем при открытии отчета.
Тупик какой-то...
14. Sashares 33 12.02.25 17:12 Сейчас в теме +1 $m
(1) Если отчет использует общую форму БСП - есть флаг в Еще.
Если флаг снят, то просто открывается форма отчета, без формирования.
Прикрепленные файлы:
15. al_zzz 304 13.02.25 05:06 Сейчас в теме
(14) Мне надо в общем случае, для всех отчетов с формированием при открытии.
16. Sashares 33 13.02.25 09:11 Сейчас в теме
(15) Вам написали как это сделать.
18. al_zzz 304 14.02.25 05:29 Сейчас в теме
Подведу итог, какие есть варианты решения моей задачи. Если кратко, то решить изменением пары строк кода в БСП, "малой кровью", так сказать, не выйдет.
1. Как я делал, изменяя код формы с помощью расширения.
В расширении требуется в событии "ПриОткрытии" отключить ветку условия с кодом:
ПодключитьОбработчикОжидания("Подключаемый_СформироватьПриОткрытии", БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии(), Истина);
и в событии "ПриЗагрузкеПользовательскихНастроекНаСервере" отключить код
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "ФормированиеОтчета");
- отключить вывод анимации формирования отчета.
Минус: необходимо это прописать в каждой форме отчета, если он не использует общую форму.
2. В ОМ.БухгалтерскиеОтчетыПереопределяемый, в процедуру ПриСозданииНаСервере прописать Форма.Отчет.РежимРасшифровки = Истина;
Минусы:
- не в каждом отчете есть ветка для расшифровки;
- в некоторых отчетах в условии код: "Отчет.РежимРасшифровки И ПравоДоступаКДаннымБухгалтерии";
- в форме есть анимация формирования отчета, которая всё равно запускается (её нужно отключать отдельно).
3. Изменить возвращаемое значение функции "БухгалтерскиеОтчетыКлиент.ИнтервалЗапускаФормированияОтчетаПриОткрытии" на большое значение.
Минусы:
При вызове отчетов из форм справочников используется этот же параметр для определения интервала формирования. Значит, отчет не будет тут формироваться при открытии формы тоже, а это нужно.
В итоге было принято решение использовать вариант 1, но только на самых тяжелых отчетах.
Всем спасибо за помощь!
VyacheslavShilov; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот