|
|
|
Век живи - век учись. Интеграция экселя в 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
|
питрасяны....
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |