Имя: Пароль:
1C
 
Век живи - век учись. Интеграция экселя в 1С-ке.
0 Maniac
 
20.04.05
02:26
Нашел интерестную весь
http://1c.proclub.ru/modules/mydownloads/personal.php?lid=5140&cid=5.
Суть такова что есть отчет в котором вставлен объект диграмма. При выводе этой диаграммы выводится 1С-овская таблица с интегрированной диаграммой экселя. Причем при щелканьи на диаграмму прям в 1С-ке интегрируются все команды и сервисы экселя (меню) прям в 1С-ку.
Сейчас пытаюсь изучить и сделать типа сводную таблицу в 1С-ке. Передаем любой запрос и получаем сводную таблицу и крутим как хотим.
Присоединяйтесь к разборке. Мож че путевое получится.
1 Maniac
 
20.04.05
02:34
Как насчет того чтоб прям в 1С-ке в этот уни отчет передавать параметром любую сводную таблицу (скажем даже выгруженный в неё запрос) и получаем интегрированную сводную таблицу, а на основании её любую диаграмму.
2 Дани
 
20.04.05
06:11
Вещь то может и интересная, только как ее скачать:).
6 Maniac
 
21.04.05
14:57
Ап. читайте комменты в ссылке (0)
7 Maniac
 
21.04.05
15:06
Уважаемые коллеги помогите в ОЛЕ объект экселя в таблице 1С сводну построить 8))
8 Maniac
 
21.04.05
15:07
Вот код который строит сводную таблицу, но при этом открывает эксель, хотелось бы чтобы все это было интегрировано в 1С 8)))

РабочаяКнига = СоздатьОбъект("Excel.Application");
РабочаяКнига.SheetsInNewWorkbook = 1;
РабочаяКнига.Caption = "Отчет";
NewBook = РабочаяКнига.Workbooks;
List = NewBook.Add;

СписокСтолбцов = СоздатьОбъект("СписокЗначений");
СписокСтолбцов.ДобавитьЗначение("Документ");
СписокСтолбцов.ДобавитьЗначение("Индекс");
СписокСтолбцов.ДобавитьЗначение("РайонОбл");
СписокСтолбцов.ДобавитьЗначение("Населенный пункт");
СписокСтолбцов.ДобавитьЗначение("Город");
СписокСтолбцов.ДобавитьЗначение("Район");
СписокСтолбцов.ДобавитьЗначение("Признак");
СписокСтолбцов.ДобавитьЗначение("Примечание");
СписокСтолбцов.ДобавитьЗначение("Месяц");
СписокСтолбцов.ДобавитьЗначение("Количество");
СписокСтолбцов.ДобавитьЗначение("Сумма продаж");

//Заполним наименование столбцов: Модель, Разнорядка, Количество
Для Столбец = 1 По СписокСтолбцов.РазмерСписка() Цикл
Ячейка = РабочаяКнига.Cells(1,Столбец);
Ячейка.Value = СписокСтолбцов.ПолучитьЗначение(Столбец);
КонецЦикла;

НомерСтроки = 1;

Пока Запрос.Группировка(1,1) = 1 Цикл
Доставка = Запрос.Документ;

Индекс = "";РайонОбл = "";Город = "";НаселенныйПункт = "";Улица = "";Дом = "";Корпус = "";Квартира = "";
Район = "";
РазобратьАдрес(Доставка.АдресДоставки,Индекс,РайонОбл,Город,НаселенныйПункт,Улица,Дом,Корпус,Квартира);

Если Доставка.ВидОперации = Перечисление.ВидыОперацийДоставки.Самовывоз Тогда
Индекс = "САМОВЫВОЗ";
Город = "САМОВЫВОЗ";
РайонОбл = "САМОВЫВОЗ";
НП = "САМОВЫВОЗ";
Район = "САМОВЫВОЗ";
Иначе
Район = Доставка.РайонГорода;
КонецЕсли;
Пока Запрос.Группировка(2) = 1 Цикл
Пока Запрос.Группировка(3) = 1 Цикл
Пока Запрос.Группировка(4) = 1 Цикл
//Организум заполнение ячеек Excel
НомерСтроки = НомерСтроки + 1;
Для Ст = 1 По СписокСтолбцов.РазмерСписка() Цикл
Ячейка = РабочаяКнига.Cells(НомерСтроки,Ст);
Если Ст = 1 Тогда
Ячейка.Value = Строка(Доставка);
ИначеЕсли Ст = 2 Тогда
Ячейка.Value = Строка(Индекс);
ИначеЕсли Ст = 3 Тогда
Ячейка.Value = Строка(РайонОбл);
ИначеЕсли Ст = 4 Тогда
Ячейка.Value = Строка(НП);
ИначеЕсли Ст = 5 Тогда
Ячейка.Value = Строка(Город);
ИначеЕсли Ст = 6 Тогда
Ячейка.Value = Строка(Район);
ИначеЕсли Ст = 7 Тогда
Ячейка.Value = Строка(Запрос.ПризнакТовара);
ИначеЕсли Ст = 8 Тогда
Ячейка.Value = Доставка.Примечание;
ИначеЕсли Ст = 9 Тогда
Ячейка.Value = Запрос.Месяц;
ИначеЕсли Ст = 10 Тогда
Ячейка.Value = Запрос.Количество;
ИначеЕсли Ст = 11 Тогда
Ячейка.Value = глПолучитьЦену(Запрос.Номенклатура, Перечисление.ТипыЦен.Розничная);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
//Теперь создаем сводную таблицу на основе выгруженных данных
СводнаяТаблица = РабочаяКнига.ActiveSheet.PivotTableWizard;
//Разворачивает макет сводной таблицы
СводнаяТаблица.SmallGrid = 1;
///Теперь разнесем ячейки сводной таблицы
// Где:
// 1 - Строка
// 2 - Столбец
// 3 - Страница
// 4 - Данные
СводнаяТаблица.PivotFields(5).Orientation = 1;
СводнаяТаблица.PivotFields(9).Orientation = 2;
СводнаяТаблица.PivotFields(10).Orientation = 4;
СводнаяТаблица.PivotFields(11).Orientation = 4;

//Пройдемся по форме отчета
СводнаяТаблица.Format(19);

//Видимость инструментов сводной таблицы
РабочаяКнига.CommandBars("PivotTable").Visible = 0;

РабочаяКнига.Visible = 1;
РабочаяКнига = 0;
9 Maniac
 
21.04.05
15:28
Вот собственно говоря универсальная Процедура для построения сводной таблицы на основании любой таблицы значений:

//ставим после любого запроса
ТаблицаИтогов = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТаблицаИтогов,0,0);
     
Процедура СделатьСводнуюТаблицуExcel(ТаблицаИтогов)
   РабочаяКнига = СоздатьОбъект("Excel.Application");
   РабочаяКнига.SheetsInNewWorkbook = 1;
   РабочаяКнига.Caption = "Отчет";
   NewBook = РабочаяКнига.Workbooks;
   List    = NewBook.Add;
                                               
   СписокСтолбцов = СоздатьОбъект("СписокЗначений");  
           
   КолКолон = ТаблицаИтогов.КоличествоКолонок();
   КолСтрок = ТабЗнач.КоличествоСтрок();
         
   //Заполним наименование столбцов.
   Для i = 1 ПО КолКолон Цикл                        
       Заголовок = "";
       Значение  = ТаблицаИтогов.ПолучитьПараметрыКолонки(i,,,,Заголовок);
       СписокСтолбцов.ДобавитьЗначение("Значение");
       
       Ячейка = РабочаяКнига.Cells(1,i);
       Ячейка.Value = Значение;
   КонецЦикла;
                   
   НомерСтроки = 1;
                   
   Для i=1 По КолСтрок Цикл
       Для j=1 По КолКолон Цикл  
           Ячейка = РабочаяКнига.Cells(НомерСтроки,j);
           Значение = ТаблицаИтогов.ПолучитьЗначение(i,j);            
           Ячейка.Value = Значение;
       КонецЦикла;
   КонецЦикла;
   
   //Теперь создаем сводную таблицу на основе выгруженных данных
   СводнаяТаблица = РабочаяКнига.ActiveSheet.PivotTableWizard;      
   //Разворачивает макет сводной таблицы
   СводнаяТаблица.SmallGrid = 1;
   ///Теперь разнесем ячейки сводной таблицы
   // Где:
   // 1 - Строка
   // 2 - Столбец
   // 3 - Страница
   // 4 - Данные    
   СводнаяТаблица.PivotFields(5).Orientation = 1;    
   СводнаяТаблица.PivotFields(9).Orientation = 2;  
   СводнаяТаблица.PivotFields(10).Orientation = 4;  
   СводнаяТаблица.PivotFields(11).Orientation = 4;    
   
   //Пройдемся по форме отчета
   СводнаяТаблица.Format(19);  
   
   //Видимость инструментов сводной таблицы
   РабочаяКнига.CommandBars("PivotTable").Visible = 0;    
   
   РабочаяКнига.Visible = 1;  
   РабочаяКнига = 0;
КонецПроцедуры
10 Ветеран
 
21.04.05
15:28
А те, кто хоть раз смотрели диск ИТС, тихо посмеиваются сейчас над маньяком ...
11 Maniac
 
21.04.05
15:33
Исправления к (9):

//ставим после любого запроса
ТаблицаИтогов = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТаблицаИтогов,0,0);
     
Процедура СделатьСводнуюТаблицуExcel(ТаблицаИтогов)
   РабочаяКнига = СоздатьОбъект("Excel.Application");
   РабочаяКнига.SheetsInNewWorkbook = 1;
   РабочаяКнига.Caption = "Отчет";
   NewBook = РабочаяКнига.Workbooks;
   List    = NewBook.Add;
                                               
   КолКолон = ТаблицаИтогов.КоличествоКолонок();

   //Заполним наименование столбцов.
   Для i = 1 ПО КолКолон Цикл                        
       Заголовок = "";
       Значение  = ТаблицаИтогов.ПолучитьПараметрыКолонки(i,,,,Заголовок);
       
       Ячейка = РабочаяКнига.Cells(1,i);
       Ячейка.Value = Значение;
   КонецЦикла;
                   
   ТаблицаИтогов.ВыбратьСтроки();
   Пока ТаблицаИтогов.ПолучитьСтроку() = 1 Цикл
       Для j=1 По КолКолон Цикл  
           Ячейка = РабочаяКнига.Cells(ТаблицаИтогов.НомерСтроки,j);
           Значение = ТаблицаИтогов.ПолучитьЗначение(ТаблицаИтогов.НомерСтроки,j);            
           Ячейка.Value = Значение;
       КонецЦикла;
   КонецЦикла;
   
   //Теперь создаем сводную таблицу на основе выгруженных данных
   СводнаяТаблица = РабочаяКнига.ActiveSheet.PivotTableWizard;      
   //Разворачивает макет сводной таблицы
   СводнаяТаблица.SmallGrid = 1;
   ///Теперь разнесем ячейки сводной таблицы
   // Где:
   // 1 - Строка
   // 2 - Столбец
   // 3 - Страница
   // 4 - Данные    
   СводнаяТаблица.PivotFields(1).Orientation = 1;      
   СводнаяТаблица.PivotFields(КолКолон).Orientation = 4;  
   СводнаяТаблица.PivotFields(КолКолон).Orientation = 4;    
   
   //Пройдемся по форме отчета
   СводнаяТаблица.Format(19);  
   
   //Видимость инструментов сводной таблицы
   РабочаяКнига.CommandBars("PivotTable").Visible = 0;    
   
   РабочаяКнига.Visible = 1;  
   РабочаяКнига = 0;
КонецПроцедуры
12 Maniac
 
21.04.05
15:34
Сейтесь, смейтесь 8))) ну шо я виноват что что-то пропустил. А где тамммм ? *)))
Сейчас открою
13 Maniac
 
21.04.05
15:50
Ну так что ? не будет советов ? где на ИТС рыскать ? зашел в раздел "Использование OLE" ничего не увидел. мож не туда смотрю ?
14 Ядрена Матрена
 
21.04.05
15:58
Неправильно!!!

Если Доставка.ВидОперации = Перечисление.ВидыОперацийДоставки.Самовывоз Тогда
Город = "Нижний Тагил";
Если спрТовары.НайтиПоНаименованию( "Шпингалеты" ) = 1 Тогда...
.........

Схема примерно такая.
15 Maniac
 
21.04.05
16:06
Ну ладно, облажался я. сделал всё.
16 ValeraVV
 
21.04.05
16:11
питрасяны....