Вход | Регистрация


СкомпоноватьРезультат не вызывает ПриКомпоновкеРезультата

СкомпоноватьРезультат не вызывает ПриКомпоновкеРезультата
Я
   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) Может все таки дело в отладчике - не ловит фоновое задание. Я в таких случаях чтобы точно убедиться в модуле пишу матерное слово - если все таки зашел, то программа сругнется)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует