|
СкомпоноватьРезультат не вызывает ПриКомпоновкеРезультата | ☑ | ||
---|---|---|---|---|
0
novichok79
21.09.17
✎
09:14
|
Доброго времени суток, уважаемые воены 1С и светочи мудрости.
Сделал внешний отчет для УТ 11.3, в некоторых случаях не заполняются параметры отчета, при нажатии на кнопку "Сформировать", формы отчета, настроек и т д - общие, типовые. При формировании отчета вызывается фоновое задание, которое в конечном итоге компонует полученный отчет функцией "СкомпоноватьРезультат". Но вот беда, событие ПриКомпоновкеРезультата не срабатывает в отладчике (автоматическое подключение фоновых заданий подключено в конфигураторе). Вопрос к собравшимся - что я делаю не так? Заранее благодарю за ответы. |
|||
1
novichok79
21.09.17
✎
09:15
|
кусок модуля, если кому интересно
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область СлужебныеПроцедурыИФункции Функция СведенияОВнешнейОбработке() Экспорт Перем ПараметрыРегистрации; Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); МодульДополнительныеОтчетыИОбработкиКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиентСервер"); ПараметрыРегистрации = МодульДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.1.3.1"); ПараметрыРегистрации.Вид = МодульДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(); ПараметрыРегистрации.Версия = "2017.08.17"; ПараметрыРегистрации.БезопасныйРежим = Ложь; НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = ЭтотОбъект.Метаданные().Представление(); НоваяКоманда.Идентификатор = "ОткрытьОтчет"; НоваяКоманда.Использование = МодульДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); НоваяКоманда.ПоказыватьОповещение = Ложь; //Команды - ТаблицаЗначений - Необязательный для отчетов. Настройки команд, поставляемых внешним объектом. //** Идентификатор - Строка - Внутреннее имя команды. // Для внешних печатных форм (когда Вид = "ПечатнаяФорма"): // Идентификатор может содержать имена одной или нескольких команд печати, // разделенных запятыми. Подробнее см. описание колонки Идентификатор // в функции СоздатьКоллекциюКомандПечати() общего модуля УправлениеПечатью. // //** Представление - Строка - Пользовательское представление команды. // //** Использование - Строка - Тип команды. // Для определения рекомендуется использовать функции // ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<ИмяТипа>(). // Шаблоны процедур - обработчиков команд описаны в комментариях к этим функциям. // // Также Использование можно определить явно: // *** "ВызовКлиентскогоМетода" // *** "ВызовСерверногоМетода" // *** "ЗаполнениеФормы" // *** "ОткрытиеФормы" // *** "СценарийВБезопасномРежиме". // //** ПоказыватьОповещение - Булево - Истина = при запуске команды будет показано стандартное оповещение. // Не работает для команд по открытию формы (когда Использование = "ОткрытиеФормы"). // //** Модификатор - Строка - Дополнительная классификация команды. // Для внешних печатных форм (когда Вид = "ПечатнаяФорма"): // *** "ПечатьMXL" - для печатных форм на основе табличных макетов. // Для загрузки данных из файла (когда Вид = "ПечатнаяФорма" и Использование = "ЗагрузкаДанныхИзФайла"): // Модификатор является обязательным для заполнения // и должен содержать полное имя объекта метаданных (справочника), // для которого выполняется загрузка данных. // //** Скрыть - Булево - Необязательный. Признак того, что это служебная команда. // Если установить в значение Истина, то команда скрывается в карточке дополнительного объекта. КонецЕсли; Возврат ПараметрыРегистрации; КонецФункции #КонецОбласти #Область ОбработчикиСобытий Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПользовательскиеНастройкиМодифицированы = Ложь; УстановитьОбязательныеНастройки(ПользовательскиеНастройкиМодифицированы); НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); // Сообщим форме отчета, что настройки модифицированы Если ПользовательскиеНастройкиМодифицированы Тогда КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПользовательскиеНастройкиМодифицированы", Истина); КонецЕсли; КонецПроцедуры #КонецОбласти #КонецЕсли |
|||
2
novichok79
21.09.17
✎
09:38
|
ай да в топ.
|
|||
3
novichok79
21.09.17
✎
10:26
|
(0) переименовал внешний отчет, отчет находит параметры, но не заходит в процедуру. что за чертовщина, КАРЛ??!!
|
|||
4
Вафель
21.09.17
✎
10:26
|
а вообще на сервер заход в отладке?
|
|||
5
novichok79
21.09.17
✎
10:29
|
(4) конечно, да.
|
|||
6
novichok79
21.09.17
✎
10:36
|
(4) до переименования видимо заходило каким-то образом в процедуру ПриКомпоновке, но место ошибки не совпадало с реальной строкой в измененном модуле, переименовал отчет, заработало. но в процедуру все равно не заходит. кэш?
|
|||
7
novichok79
21.09.17
✎
10:46
|
только Вывести вызывается не в 91-ой, а в 93-й строке обработчика ПриКомпоновкеРезультата, сей косяк был исправлен вызовом установки параметра "ИспользуетсяОтборПоСегментуПартнеров" в общем модуле СегментыСервер
из журнала регистрации: {ОбщийМодуль.ВариантыОтчетов.Модуль(2075)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат) по причине: по причине: Ошибка исполнения отчета по причине: Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата' по причине: {ВнешнийОтчет.КрутойОтчет.МодульОбъекта(91)}: Ошибка при вызове метода контекста (Вывести) по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Ошибка создания набора данных "ДанныеОтчета" по причине: Ошибка при исполнении запроса набора данных по причине: {(79, 69)}: Не задано значение параметра "ИспользуетсяОтборПоСегментуПартнеров" ОтборПоСегментуПартнеров.ИспользуетсяОтборПоСегментуПартнеров = <<?>>&ИспользуетсяОтборПоСегментуПартнеров)) = &П4 |
|||
8
novichok79
21.09.17
✎
10:48
|
соответственно, после переименования отчета все становится хорошо. поэтому и была мысль на кэш.
|
|||
9
aleks_default
21.09.17
✎
11:40
|
(0)У тебя кнопка "Сформировать" своя нарисована?
|
|||
10
Вафель
21.09.17
✎
11:40
|
(9) это не должно влиять
|
|||
11
novichok79
21.09.17
✎
12:48
|
(9) цитирую себя же: "формы отчета, настроек и т д - общие, типовые"
|
|||
12
YAGolova
21.09.17
✎
13:07
|
(11) Может все таки дело в отладчике - не ловит фоновое задание. Я в таких случаях чтобы точно убедиться в модуле пишу матерное слово - если все таки зашел, то программа сругнется)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |