Код современных типовых решений, базирующихся на базе БСП, достаточно сложный. Как все понимают, это цена за универсальность этого кода.
Локально же, на местах, не каждый разработчик готов в своей трудовой деятельности использовать функционал БСП. Многим хочется работать с более простым, прозрачным и понятным кодом.
Вот и наш слушатель задался вопросом, как же ему проще запустить выполнение отчета на СКД в фоновом режиме, не прибегая к использованию методов общего модуля ДлительныеОперации.
Вопрос
Ответ
Например, в модуле формы можно использовать вот такой фрагмент кода:
СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый);
В типовых конфигурациях на базе БСП формирование отчетов происходит в фоне, чтобы не блокировать работу пользователей. Поэтому для примера также можно посмотреть, как происходит фоновое формирование отчетов, например, в УТ 11. Правда, код в типовых конфигурациях достаточно сложный, потому что он универсальный.
Откроем общую форму ФормаОтчета, изучим обработчик команды ОтчетСкомпоноватьРезультат. Там будет вот такой фрагмент кода:
Результат = ДлительныеОперации.ВыполнитьВФоне("ВариантыОтчетов.СформироватьОтчетВФоне", ПараметрыФормирования, ПараметрыВыполнения); ФоновоеЗаданиеИдентификатор = Результат.ИдентификаторЗадания; ФоновоеЗаданиеАдресХранилища = Результат.АдресРезультата; Если Результат.Статус <> "Выполняется" Тогда ЗагрузитьРезультатФормированияОтчета(); Иначе ОтобразитьСостояниеОтчета(НСтр("ru = 'Отчет формируется...'"), БиблиотекаКартинок.ДлительнаяОперация48); КонецЕсли; Возврат Результат;
То есть явно запускается фоновое задание, в котором выполняется компоновка отчета, результат помещается в табличный документ на форме.
Комментарий слушателя
В типовых конфигурациях фоновое исполнение осуществляется с помощью специальной библиотеки Длительные операции. Это я понимаю. Я не понимаю, где в модуле формы (в какой процедуре) можно использовать СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый).
Я просил привести пример рабочего кода в контексте именно в модуле формы. Например, создал я свой отчет с помощью СКД. База файловая. Как мне его запустить в фоне, не прибегая к библиотеке ДлительныеОперации?
Комментарий тренера
Создаем команду формы, выносим ее на форму. В обработчике созданной команды размещаем следующий код (этот метод можно вызвать в обработчике нажатия на кнопку на форме):
&НаКлиенте Процедура ВыполнитьОтчет(Команда) СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый); КонецПроцедуры
То есть при нажатии на нашу кнопку выполняется фоновая компоновка отчета.
Или еще вариант – можно это же действие выполнять при открытии формы:
&НаКлиенте Процедура ПриОткрытии(Отказ) СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый); КонецПроцедуры
Тогда отчет будет компоноваться сразу при открытии формы.
Комментарий слушателя
Профессиональная разработка отчетов в 1С 8.3 на СКД.