Имя: Пароль:
1C
1С v8
Подскажите как состыковать отчет на скд по нескольким базам,
0 Ivan_495
 
21.02.14
11:29
Подскажите как состыковать отчет на скд по нескольким базам, подключаюсь к базам по OLE
1 PR
 
21.02.14
11:29
СКД.Состыковать(<МассивИБ>)
2 Cube
 
21.02.14
11:31
(0) Я собираю данные из разных баз в ТЗ, а ТЗ потом уже скармливаю в СКД.
3 mistеr
 
21.02.14
11:36
Фабрика отчетов?
4 Ivan_495
 
21.02.14
11:43
(1) нет такого метода
5 dk
 
21.02.14
11:45
закинуть результаты оле запросов во временную
---
или ты интерактивные фильтры хочешь в запросах по OLE??
6 PR
 
21.02.14
11:46
(4) Это была минутка хумора :))
Что ты подразумеваешь под состыковать?
Как вообще в принципе мы можем объянять складывание данных из разных баз кроме как на уровне примитивных типов?
7 PR
 
21.02.14
11:46
объянять  = обсуждать
8 Ivan_495
 
21.02.14
11:49
(2) используешь в скд внешний источник данных?
9 Cube
 
21.02.14
11:59
(8) Да
10 Ivan_495
 
21.02.14
12:03
(9) метод СКД не подскажешь, которым загружаешь?
11 Cube
 
21.02.14
12:07
(10) Можно ПриКомпоновкеРезультата сразу, а можно свою кнопку "Сформировать" нарисовать. Зависит от задачи.

А код простенький (из Хрусталевой, по-моему ещё):

    ДокументРезультат = ЭлементыФормы.Результат;
    
    ДокументРезультат.Очистить();
    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("ТаблицаДвижений", ИнициализацияТаблицыДвижений());
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
12 Ivan_495
 
21.02.14
12:10
(11) благодарю
13 Ivan_495
 
21.02.14
12:11
(7) много текста :)
14 ИС-2
 
naïve
21.02.14
12:15
говорят, что в 8.3 можно использовать в запросе внешний источник данных, соединять с реальными таблицами и т.д
15 Ivan_495
 
21.02.14
12:21
(11) а запрос в скд остается?
16 Cube
 
21.02.14
12:26
(15) Конечно же нет. В СКД делается внешний источник данных (таблица) и у него поля должны быть такие же, как у ТЗ, что ты будешь туды сувать.
ТЗ полностью собирается в коде.
17 Ivan_495
 
21.02.14
13:11
в сформировать() пишу

Запрос....
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    
    Запрос.УстановитьПараметр("Периодичность", Периодичность);
    Запрос.УстановитьПараметр("ТолькоПродажи", ТолькоПродажи);

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

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

ругается

Ошибка исполнения отчета
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Не найден внешний набор данных "ТаблицаДвижений"
19 Ivan_495
 
21.02.14
13:19
(16) если в скд создан "НаборДанных1" и у него объект содержащий данные "таблицадвижений", то я должен не создавать объект
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ТаблицаДвижений",Результат);

а как то получить объект "таблицадвижений" из скд и в него загрузить данные
20 hhhh
 
21.02.14
13:19
(18) вот так надо

Результат = Запрос.Выполнить();
21 Ivan_495
 
21.02.14
13:20
(20) не помогло
22 wade25
 
21.02.14
13:26
Ты ТЗ как структуру передаешь?)
23 Ivan_495
 
21.02.14
13:28
ТЗ обычна таблица значений
отчет при открытии отрабатывает нормально, когда повторно нажимаю сформировать ругается
Ошибка исполнения отчета
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Не найден внешний набор данных "ТаблицаДвижений
24 Ivan_495
 
21.02.14
13:30
может при компановке результата все это прописать?
25 hhhh
 
21.02.14
13:37
(23) в БП 2.0 посмотри как сделано с внешними источниками. Поиск функции ПолучитьВыборку() запусти по конфигурации, и там можно посмотреть
26 Ivan_495
 
21.02.14
13:53
(25) да здесь сформиовать отчет лежит в модуле объекта, может поэтому
27 Ivan_495
 
21.02.14
14:43
сделал сформировать в модуле объекта, не помогло, первый раз запускается нормально второй раз ошибка
28 Cube
 
25.02.14
05:03
(27) Замени это

   Результат = Запрос.Выполнить().Выгрузить();
   ВнешниеНаборыДанных = Новый Структура;
   ВнешниеНаборыДанных.Вставить("ТаблицаДвижений",Результат);

на это

   МояТЗ = Запрос.Выполнить().Выгрузить();
   ВнешниеНаборыДанных = Новый Структура;
   ВнешниеНаборыДанных.Вставить("ТаблицаДвижений",МояТЗ);