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

Можно ли в СКД в одном отчете вывести 2 набора данных?

Можно ли в СКД в одном отчете вывести 2 набора данных?
Я
   olegon7
 
25.05.16 - 14:56
Здравствуйте ! Платформа 8.3

Можно ли в одном отчете СКД вывести два набора данных ?

Т.е 2 внешних набора данных -объекты

При построении отчета выводятся 2 таблицы
   aleks_default
 
1 - 25.05.16 - 14:57
легко
   olegon7
 
2 - 25.05.16 - 15:00
(1)
2 набора я создам и наполню их данными.

меня интересует вот эта область , что конкретно здесь надо указывать?

http://radikal.ru/Img/ShowUploadedImg?id=58c41d646e3c449dad1eb62b4e5bdfd4
   olegon7
 
3 - 25.05.16 - 15:01
   Nuobu
 
4 - 25.05.16 - 15:05
(2) Указывай то, что нужно указать.
   olegon7
 
5 - 25.05.16 - 15:06
(4)детальные записи будут браться сразу с двух наборов?

они как то отличаться будут названием?
   Nuobu
 
6 - 25.05.16 - 15:22
(5) Нет.
Можешь поле задать в одном и во втором наборе что-то вроде такого
"Набор1" КАК ПолеДляОтличия

А во втором - 

"Набор2" КАК ПолеДляОтличия

Тогда сможешь отличить.
   olegon7
 
7 - 25.05.16 - 15:36
http://s020.radikal.ru/i722/1605/10/889097036395.jpg

ошибка Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{Отчет.ОшибкиОборудованияИПодозрительныеДанные.МодульОбъекта(86)}: Ошибка при вызове метода контекста (Инициализировать)
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешнийНабор);
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "НаборДанных2"
по причине:
Не найден внешний набор данных "ТаблицаДанных1"


http://s020.radikal.ru/i722/1605/10/889097036395.jpg


что не так делаю?
   Nuobu
 
8 - 25.05.16 - 15:37
(7) Код на Мисту не выкладываешь, вот и не работает.
   olegon7
 
9 - 25.05.16 - 15:38
код

   olegon7
 
10 - 25.05.16 - 15:39
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
СтандартнаяОбработка=Ложь;
//////////////////////////////////////////////////////////////////////////////////////////////

// 1 набор данных
objComm = Новый COMОбъект("ADODB.Command") ;
    oConnection =Новый COMОбъект("ADODB.Connection");
    RecordSet = Новый COMОбъект("ADODB.RecordSet");

Попытка

ConnectString="
 |DRIVER={MySQL ODBC 5.1 Driver};
 |SERVER=10.182.2.23;
 |DATABASE=aramis; 
 |UID=Oleg;
 |PWD=55555;
 |Option=3";
oConnection.Open (ConnectString);

Исключение
    Сообщить("Не удалось подключится к MySQL "+ОписаниеОшибки());
        Возврат;
КонецПопытки;

objComm.ActiveConnection = oConnection;
objComm.CommandText = "otchet_oshibki_oborudovamiya";
objComm.CommandType = 4 ;
Период=СокрЛП(ПериодФормирования);
Параметр=objComm.CreateParameter("@year_mon",129,1,10,Период);
Параметр1=objComm.CreateParameter("@res",200,1,15,РЭС);
objComm.Parameters.Append(Параметр);
objComm.Parameters.Append(Параметр1);

Попытка
    RecordSet = objComm.Execute();
Исключение
    Сообщить("Ошибка выполнения хранимой процедуры: "+ОписаниеОшибки());
    oConnection.Close();
    Возврат;
КонецПопытки;

ТаблицаДанных = Новый ТаблицаЗначений;
   ТаблицаДанных.Колонки.Добавить("ЛицевойСчет", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(20)));
   ТаблицаДанных.Колонки.Добавить("Фамилия", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(64)));
   ТаблицаДанных.Колонки.Добавить("Город", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(64)));
   ТаблицаДанных.Колонки.Добавить("Улица", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(64)));
   ТаблицаДанных.Колонки.Добавить("Дом", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(10)));
   ТаблицаДанных.Колонки.Добавить("ТекущийМесяц", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(10)));
   ТаблицаДанных.Колонки.Добавить("Показание", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,2,ДопустимыйЗнак.Неотрицательный)));
   ТаблицаДанных.Колонки.Добавить("СтатусОшибки", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,2,ДопустимыйЗнак.Неотрицательный)));
   ТаблицаДанных.Колонки.Добавить("ДатаУстановки", Новый ОписаниеТипов("Дата",Новый КвалификаторыДаты(ЧастиДаты.Дата)));
   ТаблицаДанных.Колонки.Добавить("НомерСчетчика", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(20)));
   ТаблицаДанных.Колонки.Добавить("НомерПломбы", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(20)));


   Пока RecordSet.EOF() = 0 Цикл
     Стр = ТаблицаДанных.Добавить();  
     Стр.ЛицевойСчет = Recordset.Fields(0).Value;
     Стр.Фамилия = Recordset.Fields(1).Value;
     Стр.Город = Recordset.Fields(2).Value;
     Стр.Улица = Recordset.Fields(3).Value;
     Стр.Дом = Recordset.Fields(4).Value;
     Стр.ТекущийМесяц = Recordset.Fields(5).Value;
     Стр.Показание = Recordset.Fields(6).Value;
     Стр.СтатусОшибки = Recordset.Fields(7).Value;
     Стр.ДатаУстановки = Recordset.Fields(8).Value;
     Стр.НомерСчетчика = Recordset.Fields(9).Value;
     Стр.НомерПломбы = Recordset.Fields(10).Value;
    RecordSet.MoveNext(); 
    
   КонецЦикла; 

  RecordSet.Close();
   oConnection.Close();
   
 ВнешнийНабор=Новый Структура ("ТаблицаДанных",ТаблицаДанных);
    
    
    Настройки=КомпоновщикНастроек.Настройки;
    КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);

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


objComm = Новый COMОбъект("ADODB.Command") ;
    oConnection =Новый COMОбъект("ADODB.Connection");
    RecordSet = Новый COMОбъект("ADODB.RecordSet");

Попытка

ConnectString="
 |DRIVER={MySQL ODBC 5.1 Driver};
 |SERVER=10.182.2.23;
 |DATABASE=aramis; 
 |UID=Oleg;
 |PWD=55555;
 |Option=3";
oConnection.Open (ConnectString);

Исключение
    Сообщить("Не удалось подключится к MySQL "+ОписаниеОшибки());
        Возврат;
КонецПопытки;

objComm.ActiveConnection = oConnection;
objComm.CommandText = "otchet_perechen_oproshennyh_domov";
objComm.CommandType = 4 ;
Период=СокрЛП(ПериодФормирования);
Параметр=objComm.CreateParameter("@year_mon",129,1,10,Период);
Параметр1=objComm.CreateParameter("@res",200,1,15,РЭС);
objComm.Parameters.Append(Параметр);
objComm.Parameters.Append(Параметр1);

Попытка
    RecordSet = objComm.Execute();
Исключение
    Сообщить("Ошибка выполнения хранимой процедуры: "+ОписаниеОшибки());
    oConnection.Close();
    Возврат;
КонецПопытки;

ТаблицаДанных1 = Новый ТаблицаЗначений;
   ТаблицаДанных1.Колонки.Добавить("Город1", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(64)));
   ТаблицаДанных1.Колонки.Добавить("Улица1", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(64)));
   ТаблицаДанных1.Колонки.Добавить("Дом1", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(10)));
   
   Пока RecordSet.EOF() = 0 Цикл
     Стр = ТаблицаДанных1.Добавить();  
        Стр.Город1 = Recordset.Fields(0).Value;
     Стр.Улица1 = Recordset.Fields(1).Value;
     Стр.Дом1 = Recordset.Fields(2).Value;
    RecordSet.MoveNext(); 
    
   КонецЦикла; 

  RecordSet.Close();
   oConnection.Close();
   
 ВнешнийНабор1=Новый Структура ("ТаблицаДанных1",ТаблицаДанных1);
    
    
    Настройки=КомпоновщикНастроек.Настройки;
    КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);

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

КонецПроцедуры

   Nuobu
 
11 - 25.05.16 - 15:43
RecordSet.MoveNext(); 
    
   КонецЦикла; 

  RecordSet.Close();
   oConnection.Close();
   
 ВнешнийНабор=Новый Структура ("ТаблицаДанных",ТаблицаДанных);

//Настройки=КомпоновщикНастроек.Настройки;

//   КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;

//   МакетКомпоновки=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);


//ПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных;

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

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

  //  ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

  //  ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

  
///////////////// второй  набор данных



objComm = Новый COMОбъект("ADODB.Command") ;

Так должно работать.
   olegon7
 
12 - 25.05.16 - 15:54
(11) тогда как в компоновщик макета попадет набор  данных
ТаблицаДанных ?
   olegon7
 
13 - 25.05.16 - 15:58
(11) еще надо дописать

ВнешнийНабор1=Новый Структура ("ТаблицаДанных1,ТаблицаДанных",ТаблицаДанных1,ТаблицаДанных);
  во вотром наборе данных
тогда заработает

Спасибо,Nuobu
   olegon7
 
14 - 25.05.16 - 16:05
еще вопрос 

у меня 2 набора данных , у них есть одинаковые поля 

город улица дом

хотелось чтобы названия города , улицы и дома , которые есть в первой таблице как то выделялись цветом во второй таблице.

можно ли как это реализовать стандартными инструментами скд?
условным форматированием например?
   olegon7
 
15 - 25.05.16 - 17:06
сделал условным оформлением 

по отбору
( Дом Содержит Дом1 И Город Содержит Город1 И Улица Содержит Улица1 ) закрасить красным

не срабатывает , не могу понять почему.
В какой переменной смотреть в отладчике данные котрые сформировались отбором?
   Necessitudo
 
16 - 25.05.16 - 17:20
А как ты связал два набора?
   Bober
 
17 - 25.05.16 - 17:51
(0) субъективно дешевле использовать эксель с ВПР.
   olegon7
 
18 - 26.05.16 - 09:35
(16) я их не связывал.
они как отдельные наборы с разных источников.
   aleks_default
 
19 - 26.05.16 - 09:38
(18) а вот это нельзя
   olegon7
 
20 - 26.05.16 - 09:45
(19) их надо связать обязательно?

по 3 этим полям?

дом город улица 

левым соединением?
   olegon7
 
21 - 26.05.16 - 10:07
http://s019.radikal.ru/i640/1605/c0/3250243c4fda.jpg

вот так написал
но теперь все элементы окрашиваются

не понимаю таким образом какое соединение формируется
левое ?истосник1 левое соединение источник 2?
   olegon7
 
22 - 26.05.16 - 10:18
источник 1 
объект 1
поля 
-лицевой счет
-фамилия
-город
-улица
-дом
-текущий месяц
-показания
-статус ошибки
-дата установки
-номер счетчика
-номер пломбы

источник2 
объект 2
поля
-город
-улица
-дом

т.е. мне надо все записи вывести из источника 1
и соеденить с источниом 2 по полям город И улица И дом
   Карупян
 
23 - 26.05.16 - 10:48
если не связные, то лучше через вложенные схемы делать


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