Имя: Пароль:
1C
 
Создание Куба Олап
Ø
0 Kon98
 
29.07.05
13:16
Подскажите как можно создать куб Олап ".cub" и до заполнять его. Если можно все это только используя 1С.
1 France
 
30.07.05
04:47
неужели "Контур-стандарт"?
2 iliko
 
30.07.05
13:41
(0) не знаю, что конкректно тебе надо,
но зайди WWW.INTALEV.RU , там компонента в свободном доступе есть
ГиперКуб называется, может пригодится .....
3 Greenmkp
 
31.07.05
12:10
Ты не по в тот форум обратился.
Вот здесь скорее найдеш ответ.
www.sql.ru
www.olap.ru
http://www.sql.ru/forum/actualtopics.aspx?bid=26
в частности на твой вопрос
http://www.olap.ru/basic/olap_intro10.asp
4 Шурик71
 
31.07.05
18:13
не мое. работает.
  // Создаем локальный OLAP куб
  Попытка
    С = РазделительСтрок;
    // Провайдер, куда кладем куб, где берем исходные данные
    Prov = "PROVIDER = MSOLAP;";
    DS = "DATA SOURCE = "+ФайлКуба+";";
    SourceDSN = "SOURCE_DSN=""Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ФайлБазы+""";";
    // Структура куба
    CreateCube =
      "CREATECUBE = CREATE CUBE [Анализ] ("
      "DIMENSION [ДатаОперации], LEVEL [Все] TYPE ALL, LEVEL [Месяц], LEVEL [Неделя], LEVEL [День],"
      "DIMENSION [Субконто1], LEVEL [Все] TYPE ALL, LEVEL ["+НазвСубконто1+"],"
      "DIMENSION [Субконто2], LEVEL [Все] TYPE ALL, LEVEL ["+НазвСубконто2+"],"
      "DIMENSION [Субконто3], LEVEL [Все] TYPE ALL, LEVEL ["+НазвСубконто3+"],"
      "DIMENSION [КоррСчет], LEVEL [Все] TYPE ALL, LEVEL [КоррСчет],"
      "DIMENSION [КоррСубконто1], LEVEL [Все] TYPE ALL, LEVEL [КоррСубконто1],"
      "DIMENSION [КоррСубконто2], LEVEL [Все] TYPE ALL, LEVEL [КоррСубконто2],"
      "DIMENSION [КоррСубконто3], LEVEL [Все] TYPE ALL, LEVEL [КоррСубконто3],"
      "MEASURE [СумДт] FUNCTION SUM,"
      "MEASURE [СумКт] FUNCTION SUM,"
      "MEASURE [КолДт] FUNCTION SUM,"
      "MEASURE [КолКт] FUNCTION SUM );";
    // Какими данными заполняем куб
    InsertInto =
      "INSERTINTO = INSERT INTO Анализ ("
      "[ДатаОперации].[Месяц], [Неделя], [День],"
      "[Субконто1].["+НазвСубконто1+"],"
      "[Субконто2].["+НазвСубконто2+"],"
      "[Субконто3].["+НазвСубконто3+"],"
      "[КоррСчет].[КоррСчет],"
      "[КоррСубконто1].[КоррСубконто1],"
      "[КоррСубконто2].[КоррСубконто2],"
      "[КоррСубконто3].[КоррСубконто3],"
      "[СумДт],[СумКт],[КолДт],[КолКт]) OPTIONS ATTEMPT_ANALYSIS ";
    // SQL запрос
    Sel =
      "SELECT Unloading.Месяц, Unloading.Неделя, Unloading.День,"
      "Unloading."+НазвСубконто1+", Unloading."+НазвСубконто2+", Unloading."+НазвСубконто3+","
      "Unloading.КоррСчет,"
      "Unloading.КоррСубконто1, Unloading.КоррСубконто2, Unloading.КоррСубконто3, "
      "Unloading.СумДт, Unloading.СумКт, Unloading.КолДт, Unloading.КолКт "
      "FROM Unloading;";
    InsertInto = InsertInto +С+ Sel;
    // Собственно, создаем куб
    ADO = СоздатьОбъект("ADODB.Connection");
    s = Prov +С+ DS +С+ SourceDSN +С+ CreateCube +С+ InsertInto;
    ADO.Open(s);
    ADO = 0;
    Если ФС.СуществуетФайл(ФайлБазы)=1 Тогда
      ФС.УдалитьФайл(ФайлБазы);
    КонецЕсли;
    Результат = 2;
  Исключение
    Сообщить("Выгрузка в cub неудалась: "+ОписаниеОшибки());
  КонецПопытки;
5 Шурик71
 
31.07.05
18:18
Нашел ссылку на оригинал.
http://1c.proclub.ru/modules/kb/article.php?storyid=41
6 MV
 
02.08.05
10:11
Хочу заняться этой проблеммой. Скачала обработку. Пишет 'Поле агрегатного
объектра не обнаружено ConnectionStrig' Что-то не установлено?
7 MV
 
02.08.05
10:26
?
8 Шурик71
 
02.08.05
11:21
Небось офис 2003?
Та обработка писана под офис 2000 / ХР(?).
Я у себя переделывал. Щас напишу что заменить:
1)
ИсходныйКод =
  "<HTML>"
  "<HEAD>"
  "<TITLE></TITLE>"
  "<META NAME=""GENERATOR"" Content=""Microsoft Visual Studio"">"
  "<META HTTP-EQUIV=""Content-Type"" content=""text/html; charset=UTF-8"">"
  "</HEAD>"
  "<BODY>"
  "<object id=PivotControl1 name='PivotTable' style=""WIDTH: 502px; HEIGHT: 258px"" height=258 width=502 "
  "classid=clsid:0002E55A-0000-0000-C000-000000000046 VIEWASTEXT>"
  "<PARAM NAME=""XMLData"" VALUE='<xml xmlns:x=""urn:schemas-microsoft-com:office:excel"">&#13;&#10;"
  "<x:PivotTable>&#13;&#10; <x:OWCVersion>11.0.0.5531"
  "</x:OWCVersion>&#13;&#10;"
  "<x:DisplayScreenTips/>&#13;&#10;"
  "<x:CubeProvider>msolap.2</x:CubeProvider>&#13;&#10;"
  "<x:CacheDetails/>&#13;&#10;"
  "<x:ConnectionString>Provider=MSOLAP.2;Persist Security Info=True;Data Source="+ИсточникДанных+";Client Cache Size=25;Auto Synch Period=10000</x:ConnectionString>&#13;&#10;"
  "<x:DataMember>Анализ</x:DataMember>&#13;&#10;"
  "<x:Name>PTable</x:Name>&#13;&#10;"
  "<x:PivotView>&#13;&#10; <x:IsNotFiltered/>&#13;&#10; </x:PivotView>&#13;&#10;"
  "</x:PivotTable>&#13;&#10;</xml>'>"
  "</OBJECT>"
  "</BODY>"
  "</HTML>"
  ;
  
9 Шурик71
 
02.08.05
11:23
2.
заменить
Стр = "Provider=MSOLAP;Data Source="+ИсточникДанных;
Doc.PivotTable.ConnectionString=Стр;
Doc.PivotTable.DataMember="Анализ";
Doc.PivotTable.DisplayFieldList=-1;
на
Стр = "OLEDB;Provider=MSOLAP.2;Data Source="+ИсточникДанных+";Initial Catalog=Анализ;Client Cache Size=25;Auto Synch Period=10000";
10 Шурик71
 
02.08.05
11:25
Вроде все...
11 Higs
 
02.08.05
11:35
Да фигня все это.
Надо в строке
object classid=CLSID:0002E530-0000-0000-C000-000000000046
E530 на E55B для DataSource заменить
E520 на E55A для Pivottable заменить
Все остальное работает!
12 MV
 
02.08.05
13:44
(9) нАВЕРНОЕ ЕЩЕ ЧТО-ТО?
(11) НЕ ПОНЯЛА.
2003 Офис
13 MV
 
02.08.05
13:47
(9) Присвоили стр значение, а далее?
14 MV
 
02.08.05
13:53
Поменяла как сказал 11
Теперь такая ошибка - что не хватает?
Выгрузка в cub неудалась: Microsoft® OLE DB Provider for Analysis Services: Error while processing a partition: 'Processing error [Source data contains no rows] Measures'.
                            Спасибо
15 Шурик71
 
02.08.05
14:14
Сообщение говорит о том, что данных нет :)
Как в варианте 11 - я не знаю.
В моем варианте менять не только то, что в (9), но и то, что в (8).
Щас полный текст кину. У меня работает.
16 Шурик71
 
02.08.05
14:18
Перем ФайлКуба, ФайлБазы;
//------------------------------------------------------------------------------
Функция ВыбранКаталог()
  Если ФС.ВыбратьКаталог(ИмяКаталога,"Выберите каталог с файлом выгрузки/исходных данных")=0 Тогда
    Возврат 0 ;
  Иначе
    Если Прав(СокрЛП(ИмяКаталога),1)<>"\" Тогда
      ИмяКаталога = СокрЛП(ИмяКаталога) + "\";
    КонецЕсли;
    Возврат 1;
  КонецЕсли;
КонецФункции
//------------------------------------------------------------------------------
Процедура ПриНачалеВыбораЗначения(Элемент,Флаг)
  Если Элемент="ИмяКаталога" Тогда
    ВыбранКаталог();
  КонецЕсли;
КонецПроцедуры
//------------------------------------------------------------------------
17 Шурик71
 
02.08.05
14:20
Функция Выгрузить()
  Если ИспользоватьКаталогПользователя=0 Тогда
    Если Прав(СокрЛП(ИмяКаталога),1)<>"\" Тогда
      ИмяКаталога = СокрЛП(ИмяКаталога) + "\";
    КонецЕсли;
  Иначе
    ИмяКаталога = ?(КаталогПользователя()="",КаталогИБ(),КаталогПользователя());
  КонецЕсли;
  Результат = 0;
  Попытка
    // Названия колонкок в таблице результатов
    НазвСубконто1 = ?(СокрЛП(ВыбСчет.ВидСубконто(1))="","НетСубконто1",СокрЛП(ВыбСчет.ВидСубконто(1).Идентификатор()));
    НазвСубконто2 = ?(СокрЛП(ВыбСчет.ВидСубконто(2))="","НетСубконто2",СокрЛП(ВыбСчет.ВидСубконто(2).Идентификатор()));
    НазвСубконто3 = ?(СокрЛП(ВыбСчет.ВидСубконто(3))="","НетСубконто3",СокрЛП(ВыбСчет.ВидСубконто(3).Идентификатор()));
    // типы полей в таблицах
    adInteger = 3; adChar = 130; adDate = 7; adDouble = 5;
    adColNullable = 2; // поле может быть пустым
    ФайлБазы = СокрЛП(ИмяКаталога)+"unloading.mdb";
    ФайлКуба = СокрЛП(ИмяКаталога)+"unloading.cub";
    Если ФС.СуществуетФайл(ФайлБазы)=1 Тогда
      ФС.УдалитьФайл(ФайлБазы);
    КонецЕсли;
    Если ФС.СуществуетФайл(ФайлКуба)=1 Тогда
      ФС.УдалитьФайл(ФайлКуба);
    КонецЕсли;
    Cat = СоздатьОбъект("ADOX.Catalog");
    Cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ФайлБазы);
    Cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ФайлБазы;
    Tab = СоздатьОбъект("ADOX.Table");
    Tab.Name = "Unloading";
    Cat.Tables.Append(Tab);
18 Шурик71
 
02.08.05
14:23
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "День"; Col.Type = adDate; Col.DefinedSize = 0; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "Неделя"; Col.Type = adInteger; Col.DefinedSize = 0; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "Месяц"; Col.Type = adChar; Col.DefinedSize = 15; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = НазвСубконто1; Col.Type = adChar; Col.DefinedSize = 100; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = НазвСубконто2; Col.Type = adChar; Col.DefinedSize = 100; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = НазвСубконто3; Col.Type = adChar; Col.DefinedSize = 100; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "КоррСчет"; Col.Type = adChar; Col.DefinedSize = 12; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "КоррСубконто1"; Col.Type = adChar; Col.DefinedSize = 100; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "КоррСубконто2"; Col.Type = adChar; Col.DefinedSize = 100; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "КоррСубконто3"; Col.Type = adChar; Col.DefinedSize = 100; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "СумДт"; Col.Type = adDouble; Col.DefinedSize = 0; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "СумКт"; Col.Type = adDouble; Col.DefinedSize = 0; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "КолДт"; Col.Type = adDouble; Col.DefinedSize = 0; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Col = СоздатьОбъект("ADOX.Column"); Col.Name = "КолКт"; Col.Type = adDouble; Col.DefinedSize = 0; Col.Attributes = adColNullable; Tab.Columns.Append(Col);
    Tab = 0; Cat = 0; Col = 0;
    // Теперь открываем базу
    adModeReadWrite = 3;
    adOpenDynamic = 2;
    adLockOptimistic = 3;
    ADO = СоздатьОбъект("ADODB.Connection");
    ADO.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ФайлБазы;
    ADO.Mode = adModeReadWrite;
    ADO.Open();
    RS = СоздатьОбъект("ADODB.Recordset");
    RS.Open("Unloading",ADO,adOpenDynamic,adLockOptimistic);
    // Запрос по счету
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Если ПустоеЗначение(Субконто1)=0 Тогда
      Ит.ИспользоватьСубконто(ВыбСчет.ВидСубконто(1),Субконто1,2);
    Иначе
      Ит.ИспользоватьСубконто(ВыбСчет.ВидСубконто(1));
    КонецЕсли;
    Если ПустоеЗначение(Субконто2)=0 Тогда
      Ит.ИспользоватьСубконто(ВыбСчет.ВидСубконто(2),Субконто2,2);
    Иначе
      Ит.ИспользоватьСубконто(ВыбСчет.ВидСубконто(2));
    КонецЕсли;
    Если ПустоеЗначение(Субконто3)=0 Тогда
      Ит.ИспользоватьСубконто(ВыбСчет.ВидСубконто(3),Субконто3,2);
    Иначе
      Ит.ИспользоватьСубконто(ВыбСчет.ВидСубконто(3));
    КонецЕсли;
    Ит.ВыполнитьЗапрос(НачДата,КонДата,ВыбСчет,,,,"Проводка");
    Ном = 0;
    Если ДК=2 Тогда
      Ит.ВыбратьПериоды(,1);
    ИначеЕсли ДК=3 Тогда
      Ит.ВыбратьПериоды(,2);
    Иначе
      Ит.ВыбратьПериоды(,0);
    КонецЕсли;
19 Шурик71
 
02.08.05
14:25
    Пока Ит.ПолучитьПериод()=1 Цикл
      Ном = Ном + 1;
      Состояние("Выгрузка: "+Ит.Операция.ДатаОперации+" ("+Ном+")");
      RS.AddNew();
      RS.Fields("День").Value = СокрЛП(Ит.Операция.ДатаОперации);
      RS.Fields("Неделя").Value = СокрЛП(НомерНеделиГода(Ит.Операция.ДатаОперации));
      RS.Fields("Месяц").Value = Формат(ДатаМесяц(Ит.Операция.ДатаОперации),"Ч(0)2")+" "+СокрЛП(Формат(Ит.Операция.ДатаОперации,"ДММММ"));
      Если Ит.Операция.Дебет.Счет=ВыбСчет Тогда
        RS.Fields(НазвСубконто1).Value = СокрЛП(Ит.Операция.Дебет.Субконто(1));
        RS.Fields(НазвСубконто2).Value = СокрЛП(Ит.Операция.Дебет.Субконто(2));
        RS.Fields(НазвСубконто3).Value = СокрЛП(Ит.Операция.Дебет.Субконто(3));
        RS.Fields("КоррСчет").Value = СокрЛП(Ит.Операция.Кредит.Счет);
        RS.Fields("КоррСубконто1").Value = СокрЛП(Ит.Операция.Кредит.Субконто(1));
        RS.Fields("КоррСубконто2").Value = СокрЛП(Ит.Операция.Кредит.Субконто(2));
        RS.Fields("КоррСубконто3").Value = СокрЛП(Ит.Операция.Кредит.Субконто(3));
        RS.Fields("СумДт").Value = Ит.Операция.Сумма;
        RS.Fields("СумКт").Value = 0;
        RS.Fields("КолДт").Value = Ит.Операция.Количество;
        RS.Fields("КолКт").Value = 0;
      Иначе
        RS.Fields(НазвСубконто1).Value = СокрЛП(Ит.Операция.Кредит.Субконто(1));
        RS.Fields(НазвСубконто2).Value = СокрЛП(Ит.Операция.Кредит.Субконто(2));
        RS.Fields(НазвСубконто3).Value = СокрЛП(Ит.Операция.Кредит.Субконто(3));
        RS.Fields("КоррСчет").Value = СокрЛП(Ит.Операция.Дебет.Счет);
        RS.Fields("КоррСубконто1").Value = СокрЛП(Ит.Операция.Дебет.Субконто(1));
        RS.Fields("КоррСубконто2").Value = СокрЛП(Ит.Операция.Дебет.Субконто(2));
        RS.Fields("КоррСубконто3").Value = СокрЛП(Ит.Операция.Дебет.Субконто(3));
        RS.Fields("СумДт").Value = 0;
        RS.Fields("СумКт").Value = Ит.Операция.Сумма;
        RS.Fields("КолДт").Value = 0;
        RS.Fields("КолКт").Value = Ит.Операция.Количество;
      КонецЕсли;
      RS.Update();
    КонецЦикла;
    RS.Close();
    ADO.Close();
    RS = 0; ADO = 0;
    Результат = 1;
  Исключение
    Сообщить("Выгрузка в mdb неудалась: "+ОписаниеОшибки());
  КонецПопытки;
20 Шурик71
 
02.08.05
14:27
  // Создаем локальный OLAP куб
  Попытка
    С = РазделительСтрок;
    // Провайдер, куда кладем куб, где берем исходные данные
    Prov = "PROVIDER = MSOLAP;";
    DS = "DATA SOURCE = "+ФайлКуба+";";
    SourceDSN = "SOURCE_DSN=""Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ФайлБазы+""";";
    // Структура куба
    CreateCube =
      "CREATECUBE = CREATE CUBE [Анализ] ("
      "DIMENSION [ДатаОперации], LEVEL [Все] TYPE ALL, LEVEL [Месяц], LEVEL [Неделя], LEVEL [День],"
      "DIMENSION [Субконто1], LEVEL [Все] TYPE ALL, LEVEL ["+НазвСубконто1+"],"
      "DIMENSION [Субконто2], LEVEL [Все] TYPE ALL, LEVEL ["+НазвСубконто2+"],"
      "DIMENSION [Субконто3], LEVEL [Все] TYPE ALL, LEVEL ["+НазвСубконто3+"],"
      "DIMENSION [КоррСчет], LEVEL [Все] TYPE ALL, LEVEL [КоррСчет],"
      "DIMENSION [КоррСубконто1], LEVEL [Все] TYPE ALL, LEVEL [КоррСубконто1],"
      "DIMENSION [КоррСубконто2], LEVEL [Все] TYPE ALL, LEVEL [КоррСубконто2],"
      "DIMENSION [КоррСубконто3], LEVEL [Все] TYPE ALL, LEVEL [КоррСубконто3],"
      "MEASURE [СумДт] FUNCTION SUM,"
      "MEASURE [СумКт] FUNCTION SUM,"
      "MEASURE [КолДт] FUNCTION SUM,"
      "MEASURE [КолКт] FUNCTION SUM );";
    // Какими данными заполняем куб
    InsertInto =
      "INSERTINTO = INSERT INTO Анализ ("
      "[ДатаОперации].[Месяц], [Неделя], [День],"
      "[Субконто1].["+НазвСубконто1+"],"
      "[Субконто2].["+НазвСубконто2+"],"
      "[Субконто3].["+НазвСубконто3+"],"
      "[КоррСчет].[КоррСчет],"
      "[КоррСубконто1].[КоррСубконто1],"
      "[КоррСубконто2].[КоррСубконто2],"
      "[КоррСубконто3].[КоррСубконто3],"
      "[СумДт],[СумКт],[КолДт],[КолКт]) OPTIONS ATTEMPT_ANALYSIS ";
    // SQL запрос
    Sel =
      "SELECT Unloading.Месяц, Unloading.Неделя, Unloading.День,"
      "Unloading."+НазвСубконто1+", Unloading."+НазвСубконто2+", Unloading."+НазвСубконто3+","
      "Unloading.КоррСчет,"
      "Unloading.КоррСубконто1, Unloading.КоррСубконто2, Unloading.КоррСубконто3, "
      "Unloading.СумДт, Unloading.СумКт, Unloading.КолДт, Unloading.КолКт "
      "FROM Unloading;";
    InsertInto = InsertInto +С+ Sel;
    // Собственно, создаем куб
    ADO = СоздатьОбъект("ADODB.Connection");
    s = Prov +С+ DS +С+ SourceDSN +С+ CreateCube +С+ InsertInto;
    ADO.Open(s);
    ADO = 0;
    Если ФС.СуществуетФайл(ФайлБазы)=1 Тогда
      ФС.УдалитьФайл(ФайлБазы);
    КонецЕсли;
    Результат = 2;
  Исключение
    Сообщить("Выгрузка в cub неудалась: "+ОписаниеОшибки());
  КонецПопытки;
  Возврат Результат;
КонецФункции
21 Шурик71
 
02.08.05
14:29
//------------------------------------------------------------------------------
Процедура Показать(РезультатВыгрузки)
  Если ИспользоватьКаталогПользователя=0 Тогда
    Если Прав(СокрЛП(ИмяКаталога),1)<>"\" Тогда
      ИмяКаталога = СокрЛП(ИмяКаталога) + "\";
    КонецЕсли;
  Иначе
    ИмяКаталога = ?(КаталогПользователя()="",КаталогИБ(),КаталогПользователя());
  КонецЕсли;
  ФайлБазы = СокрЛП(ИмяКаталога)+"unloading.mdb";
  ФайлКуба = СокрЛП(ИмяКаталога)+"unloading.cub";
  Если РезультатВыгрузки=0 Тогда
    Возврат;
  ИначеЕсли РезультатВыгрузки=1 Тогда
    ИсточникДанных = ФайлБазы;
  Иначе
    ИсточникДанных = ФайлКуба;
  КонецЕсли;
  // Исходный код HTML-страницы
  ИсходныйКод =
  
  "<HTML>"
  "<HEAD>"
  "<TITLE></TITLE>"
  "<META NAME=""GENERATOR"" Content=""Microsoft Visual Studio"">"
  "<META HTTP-EQUIV=""Content-Type"" content=""text/html; charset=UTF-8"">"
  "</HEAD>"
  "<BODY>"
  "<object id=PivotControl1 name='PivotTable' style=""WIDTH: 502px; HEIGHT: 258px"" height=258 width=502 "
  "classid=clsid:0002E55A-0000-0000-C000-000000000046 VIEWASTEXT>"
  "<PARAM NAME=""XMLData"" VALUE='<xml xmlns:x=""urn:schemas-microsoft-com:office:excel"">&#13;&#10;"
  "<x:PivotTable>&#13;&#10; <x:OWCVersion>11.0.0.5531"
  "</x:OWCVersion>&#13;&#10;"
  "<x:DisplayScreenTips/>&#13;&#10;"
  "<x:CubeProvider>msolap.2</x:CubeProvider>&#13;&#10;"
  "<x:CacheDetails/>&#13;&#10;"
  "<x:ConnectionString>Provider=MSOLAP.2;Persist Security Info=True;Data Source="+ИсточникДанных+";Client Cache Size=25;Auto Synch Period=10000</x:ConnectionString>&#13;&#10;"
  "<x:DataMember>Анализ</x:DataMember>&#13;&#10;"
  "<x:Name>PTable</x:Name>&#13;&#10;"
  "<x:PivotView>&#13;&#10; <x:IsNotFiltered/>&#13;&#10; </x:PivotView>&#13;&#10;"
  "</x:PivotTable>&#13;&#10;</xml>'>"
  "</OBJECT>"
  "</BODY>"
  "</HTML>"
  ;
  
  // Подключение компоненты
  ОшибкаРегистрации = 0;
  Попытка
    Состояние("Подключение внешней компоненты...");
    ЗагрузитьВнешнююКомпоненту("RBrowser.dll");
    Browser = СоздатьОбъект("RBrowser");
  Исключение
    ОшибкаРегистрации = 1;
  КонецПопытки;
  
  Если ОшибкаРегистрации = 1 Тогда
    //первый раз?
    Состояние("Регистрация внешней компоненты...");
    exe="regsvr32.exe /s ";
    Парам="""" + КаталогИБ()+"ExtForms\RBrowser.dll"+"""" ;
  // сообщить(exe+Парам);
    ЗапуститьПриложение(exe+Парам);
    Для х = 1 по 3000 цикл
      //ждем...
      //зарегистрировалась?
    КонецЦикла;
    Попытка
      Состояние("Подключение внешней компоненты...");
      ЗагрузитьВнешнююКомпоненту("RBrowser.dll");
      Browser = СоздатьОбъект("RBrowser");
    Исключение
      Предупреждение("Не удалось загрузить внешнюю компоненту RBrowser");
      Возврат;
    КонецПопытки;
  КонецЕсли;
22 Шурик71
 
02.08.05
14:32

  Browser.Open("about: OLAP OWC - "+ПериодСтр(НачДата,КонДата));
  Состояние("Инициализация WebBrowser...");
  Пока Browser.WebBrowser.ReadyState<>4 Цикл
  КонецЦикла;
  // Получаем ссылку на объект WebBrowser и формируем HTML страницу
  Состояние("Формирование HTML страницы...");
  Doc = Browser.WebBrowser.Document;
  Doc.Write(ИсходныйКод);
  // Подключаем таблицу к источнику данных
  Попытка
    Состояние("Подключение сводной таблицы к источнику данных...");
    //Стр = "Provider=MSOLAP;Data Source="+ИсточникДанных;
    //Doc.PivotTable.ConnectionString=Стр;
    //Doc.PivotTable.DataMember="Анализ";
    //Doc.PivotTable.DisplayFieldList=-1;
    Стр = "OLEDB;Provider=MSOLAP.2;Data Source="+ИсточникДанных+";Initial Catalog=Анализ;Client Cache Size=25;Auto Synch Period=10000";
    View = Doc.PivotTable.ActiveView;
    View.TitleBar.Caption = "Анализ счета "+ВыбСчет+" за "+ПериодСтр(НачДата,КонДата);
    Totals = View.Totals;
    Browser.Title("OLAP OWC - "+ПериодСтр(НачДата,КонДата));
  Исключение
    Предупреждение(
      "Не удалось подключить СводнуюТаблицу OWC к выгруженным данным!!!"+
      РазделительСтрок+РазделительСтрок+ОписаниеОшибки()
      );
    Возврат;
  КонецПопытки;
  Состояние("");
  Doc = 0;
  Browser = 0;
КонецПроцедуры
//-----------------------------------------------------------------
Процедура Сформировать()
  Результат = Выгрузить();
  Если Результат<>0 Тогда
    Показать(Результат);
  КонецЕсли;
КонецПроцедуры
//-----------------------------------------------------------------
Процедура ОбработкаСобытий()
  Если ИспользоватьКаталогПользователя=0 Тогда
    Форма.ИмяКаталога.Доступность(1);
    Форма.КнОчистить.Доступность(1);
    Форма.КнВыгрузить.Доступность(1);
    Форма.КнПоказать.Доступность(1);
  Иначе
    Форма.ИмяКаталога.Доступность(0);
    Форма.КнОчистить.Доступность(0);
    Форма.КнВыгрузить.Доступность(0);
    Форма.КнПоказать.Доступность(0);
  КонецЕсли;
КонецПроцедуры
//-----------------------------------------------------------------
Процедура ПриВыбореСчета()
  Форма.Субконто1.НазначитьТип(ВыбСчет.ВидСубконто(1));
  Форма.Субконто2.НазначитьТип(ВыбСчет.ВидСубконто(2));
  Форма.Субконто3.НазначитьТип(ВыбСчет.ВидСубконто(3));
КонецПроцедуры
//-----------------------------------------------------------------
Процедура ПриОткрытии()
  НачДата = НачМесяца(РабочаяДата());
  КонДата = КонМесяца(РабочаяДата());
  ИмяКаталога = ВосстановитьЗначение("OLAP_OWC_ИмяКаталога");
  ИспользоватьКаталогПользователя = ВосстановитьЗначение("OLAP_OWC_ИспользоватьКаталогПользователя");
  ОбработкаСобытий();
  ВыбСчет = ВосстановитьЗначение("OLAP_OWC_ВыбСчет");
  ПриВыбореСчета();
  Субконто1 = ВосстановитьЗначение("OLAP_OWC_Субконто1");
  Субконто2 = ВосстановитьЗначение("OLAP_OWC_Субконто2");
  Субконто3 = ВосстановитьЗначение("OLAP_OWC_Субконто3");
  ДК = ВосстановитьЗначение("OLAP_OWC_ДК");
  Если ДК=0 Тогда
    ДК=1;
  КонецЕсли;
КонецПроцедуры
//-----------------------------------------------------------------
Процедура ПриЗакрытии()
  СохранитьЗначение("OLAP_OWC_ИмяКаталога",ИмяКаталога);
  СохранитьЗначение("OLAP_OWC_ИспользоватьКаталогПользователя",ИспользоватьКаталогПользователя);
  СохранитьЗначение("OLAP_OWC_ВыбСчет",ВыбСчет);
  СохранитьЗначение("OLAP_OWC_Субконто1",Субконто1);
  СохранитьЗначение("OLAP_OWC_Субконто2",Субконто2);
  СохранитьЗначение("OLAP_OWC_Субконто3",Субконто3);
  СохранитьЗначение("OLAP_OWC_ДК",ДК);
КонецПроцедуры
23 Шурик71
 
02.08.05
14:34
Все.
И еще надо почитать описание к обработке :)
24 MV
 
02.08.05
14:47
Спасибо. Заработало. Очень медленно. Хотелось бы узнать преимущества.
И где взять описание обработки.
25 MV
 
02.08.05
14:59
Любопытно. Но все-таки долго очень.
26 Шурик71
 
02.08.05
15:07
Описание - в обработке :)
Открыть обработку, помощь - описание :)
Но если заработало - читать нечего.