Имя: Пароль:
1C
 
Отчет СКД набор данных - объект
0 StillEnough
 
05.10.15
13:40
Доброго дня всем.
Сделал отчет в обработке по следующей логикой:
1. формирую таблицу значений в нужном виде
2. передаю в СКД и вывожу пользователю.

Решил сделать перетащить на форму отчета (отчет же все - таки).
Скопировал макет, перетащил код. Но в какую процедуру запихнуть старт формирования не знаю.
Вопрос. Как при формировании отчета на СКД переопределить процедуру формирования (дописать свои правила) или другими свовами какая процедура вызывается при нажатии кнопки сформировать в форме отчета?
1 Nuobu
 
05.10.15
13:43
(0) ПриКомпоновкеРезультата()
В модуле отчета.
2 StillEnough
 
05.10.15
13:44
(1) пробовал, но вылетает ошибка, что я не передал в СКД таблицу для заполнения. Она передается позже, получается, чем пытается формироваться отчет.
3 Nuobu
 
05.10.15
13:45
(2) Пиши сюда код.
4 StillEnough
 
05.10.15
13:46
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
тзРезервирование.Очистить();
//заполняю ТЗ данными


ЭлементыФормы.Результат.Очистить();
    
    Если тзДанныеДляОтчета.Количество()=0 Тогда
       Предупреждение("Данные не загружены или отсутствуют...");
       Возврат;
    КонецЕсли;
    ВнешниеНаборыДанных=Новый Структура;
    ВнешниеНаборыДанных.Вставить("тзДанныеДляОтчета", тзДанныеДляОтчета);    
    КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
    Настройки=КомпоновщикНастроек.ПолучитьНастройки();
    МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки,ДанныеРасшифровки);

    ПроцессорКомпоновки=Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки);

    ДокументРезультат=ЭлементыФормы.Результат;
    ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

    ПроцессорВывода.НачатьВывод();

    Пока Истина Цикл
       ЭлементРезультата=ПроцессорКомпоновки.Следующий();
       Если ЭлементРезультата=Неопределено Тогда
          Прервать;
       Иначе
          ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       КонецЕсли;
    КонецЦикла;

    ПроцессорВывода.ЗакончитьВывод();

    ДокументРезультат.ОтображатьСетку=Ложь;
    ДокументРезультат.ОтображатьЗаголовки=Ложь;
    ДокументРезультат.Показать();
5 StillEnough
 
05.10.15
13:49
(4)  ВнешниеНаборыДанных.Вставить("тзДанныеДляОтчета", тзДанныеДляОтчета); суть в этой строке. Передаю заполненную структуру для заполнения СКД. И вот этой структуры не хватает когда я нажимаю сформировать.
6 Nuobu
 
05.10.15
13:50
(4) СтандартнаяОбработка = Ложь;

Где?
7 StillEnough
 
05.10.15
13:52
(6) Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь; сделал так - результат тот же
8 Nuobu
 
05.10.15
13:55
(7) Покажи код ошибки.
9 StillEnough
 
05.10.15
13:56
(8) Ошибка исполнения отчета
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "Основной"
по причине:
Не найден внешний набор данных "тзДанныеДляОтчета"
10 StillEnough
 
05.10.15
14:01
Вообщем решил голову не глумить, создаю свою кнопку, стандартную удалил и все взлетело. Вопрос закрыт.