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