Сводная таблица Excel из 1С

30.07.21

Интеграция - Загрузка и выгрузка в Excel

Сводная таблица Excel из 1С - как сделать ее программно через COM соединение.

Скачать исходный код

Наименование Файл Версия Размер
Числовые значения констант Excel
.zip 30,78Kb
1
.zip 30,78Kb 1 Скачать

Неожиданно столкнулся с задачей выкинуть из 1С 7.7 данные в Excel и сделать из них сводную таблицу. В целом, все это можно использовать и под 1С 8, но это уже сами, если что )))

И вдруг оказалось, что задача не настолько тривиальна, как казалось издалека. Поэтому, ткнувшись носом в ряд граблей, решил написать, вдруг, кому-то еще понадобится.

Итак, первое, с чем я столкнулся - это константы Excel, всякие xlYes, xlNo и т.д. Я вдруг обнаружил, что выковыривать их значения из документации Microsoft довольно муторно, а обратиться к ним по имени через внешнее соединение нельзя.

В качестве бонуса я приложу файл со списком констант и их числовыми значениями, я же сделал у себя СписокЗначений, назвал его глКонстантыExcel и запихал все это туда, так как периодически приходится сталкиваться с экспортом/импортом через Excel.

Конкретно тут используются константы:

xlSrcRange = 1
xlYes = 1
xlNo = 2
xlDatabase = 1

Вторая грабля - это создание нового листа, дело в том, что надо использовать Null в качестве передаваемого параметра, а из 1С 7.7 это ну никак не получится, поэтому пришлось использовать скрипты.

Треьтья грабля, на которую я убил более всего времени - это коллекция PivotCaches. В отличии от остальных коллекций листа Excel,это не объект коллекции, а метод, возвращающий коллекцию (внезапно, правда), то есть обращаться к нему надо так:

ОбъектЛистExcel.PivotCaches().Create( ну и далее уж параметры

Далее уже код:

//============================================================
Функция ПолучитьЛистExcel(Книга, ТекущийЛист, Заголовок="")
	//__ как, по вашему передать null из 1С 7.7 ?????
	// в общем, создаем скрипт
	врСкрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
	врСкрипт.Language = "javascript";
	// кладем туда параметры
	врСтраницы = Книга.WorkSheets();
	врСкрипт.AddObject("Worksheets", врСтраницы);
	врСкрипт.AddObject("LastWorksheet", ТекущийЛист);
	// и возвращаем вычисленное там значение уже в переменную 1С
	врЛист = врСкрипт.eval("Worksheets.add(null,LastWorksheet,null,null);");
	Если СокрЛП(Заголовок)="" Тогда
		// ну и переименовываем по необходимости
		врЛист.Name = СокрЛП(Заголовок);
	КонецЕсли;
	Возврат врЛист;
КонецФункции	// ПолучитьЛистExcel

//__ тут у нас есть
//  глКонстантыExcel - это список значений с константами Excel и их числовыми значениями
//  ИмяФайла - это существующий, сохраненный ранее файл с отчетом, в книге на 1 листе лежат данные
//  Габариты - это список значений с границами данных в отчете (Лево, Верх, Право, Низ)
//============================================================
Процедура УмнаяТаблицаExcel(ИмяФайла, Габариты)
	Попытка
		врExcel = СоздатьОбъект("Excel.Application");     
		врExcel.DisplayAlerts = 0;  // без лишних вопросов
	Исключение
		Сообщить("Excel на компьютере не установлен..","!");
		Возврат;
	КонецПопытки;
	врКнигаТемп = врExcel.WorkBooks.Open(ИмяФайла); //открываем файл
	врExcel.Visible = 1; // пусть будет видимый для пользователя
	врЛистТемп = врКнигаТемп.WorkSheets(1); // получаем 1 лист
	врЛистТемп.Name = "Данные"; // переименовываем его
	// получаем диапазон ячеек данными
	врДиапазон = врЛистТемп.Range(врЛистТемп.Cells(Габариты.Получить("Верх"), Габариты.Получить("Лево")),врЛистТемп.Cells(Габариты.Получить("Низ"), Габариты.Получить("Право")));
	// создаем умную таблицу
	врУмнаяТаблица = врЛистТемп.ListObjects.Add(глКонстантыExcel.Получить("xlSrcRange"), врДиапазон, глКонстантыExcel.Получить("False"), глКонстантыExcel.Получить("xlYes"));
	// задаем ей имя
	врУмнаяТаблица.Name = "SmTable1";
	// получаем PivotCahce - вот тут я особенно долго мучался и так и не нагуглил ответа
	// даже немного повезло, дело в том, что я вызывал PivotCaches.Create(...,
	// а оказалось, что PivotCaches - это не коллекция, а метод, возвращающий коллекцию,
	// и обращаться к нему надо PivotCahces().Create(...
	врКэшДляСвода = врКнигаТемп.PivotCaches().Create(глКонстантыExcel.Получить("xlDatabase"), "SmTable1");
	// создаем новый лист, куда помести уже сводную таблицу
	врНовЛист = ПолучитьЛистExcel(врКнигаТемп, врЛистТемп, "Свод");
	// ну и, наконец, создаем саму сводную таблицу
	// в качестве последнего параметра я передаю имя умной таблицы, так как у Microsoft
	// в описании сказано, что следует передавать имя, потому что при передаче объекта 
	// может "неожиданно возникнуть ошибка" (с) Microsoft
	врСвод = врКэшДляСвода.CreatePivotTable(врНовЛист.Cells(2,2), "PvTable1");
	
КонецПроцедуры

В приложенном файле в архиве таблица Excel с кодами констант Excel и их числовыми значениями.

Вот такой вот пример. По правилам надо указать точную версию, где тестировалось - это 1С 7.70.027 (правда, 7.7 уже давно не обновляется).

Excel PivotTable СводныеТаблицы КонстантыExcel

См. также

Загрузка банковской выписки для 1С 7.7 любой конфигурации

Банковские операции Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Россия Бухгалтерский учет Платные (руб)

Решение предоставляет комплексную загрузку банковской выписки из CSV, XLS, TXT файла в 1С 7.7 любой конфигурации. Позволяет создавать документы выбранного вида, например "Строка выписки банка (приход/расход)", или многострочный табличный документ, например Выписка, для каждой операции из загружаемого файла банковской выписки. Загружает реквизиты документа, а также создаёт контрагентов и другие необходимые элементы справочников.

3588 руб.

29.07.2021    20853    13    22    

14

Загрузка документов в 1С (7.7) из табличных файлов Excel,OpenOffice,1C,DBF,TXT (обработка)

Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Платные (руб)

Обработка решает поставленную задачу по вводу документов, а кроме того обладает важной функцией: настраивается на ассортимент конкретного поставщика, запоминая соответствие между его номенклатурой и «нашей». Т.е. фактически – является самообучающейся системой ввода накладных. У разных поставщиков могут быть накладные различного типа, с разным количеством полей, поэтому для каждого из них может быть сохранена своя собственная настройка диалоговой формы так, что любая поступающая накладная может быть обработана. По отношению к программе "1С:Предприятие 7.7" данное решение является внешними файлами. Для использования данного продукта не требуется вносить изменения в алгоритм существующих программ или используемых конфигураций.

2400 руб.

10.12.2009    76713    58    93    

68

Выгрузка товаров из 1С:Предприятия 7.7 "Торговля и Склад 9.2" в файл CSV для онлайн кассы МТС

Кассовые операции Оптовая торговля Розничная торговля Загрузка и выгрузка в Excel Оперативный учет 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Управленческий учет Абонемент ($m)

Данная обработка предназначена для выгрузки файла из программы 1С: Предприятие 7.7 Конфигурации «Торговля и Склад 9.2» в файл CSV для загрузки в кассу МТС. Тестирование проводилось на релизах 937 и 998. В теории должна работать на всех типовых релизах конфигурации «Торговля и Склад 9.2».

1 стартмани

07.02.2021    9976    5    Kuzya_brаtsk    1    

7

Выгрузка товаров из 7.7 для загрузки в личный кабинет АТОЛ для ньюджеров 91Ф, 92Ф и подобных

Оптовая торговля Загрузка и выгрузка в Excel Платформа 1С v7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Управленческий учет Абонемент ($m)

Выполняет выгрузку товаров (всех, только с признаком в прайсе, только из указанной папочки) с гибкой настройкой выгружаемых данных. Формируется файл в формате XLSX подходящий для прямой удаленной загрузки в кассовый аппарат АТОЛ 91Ф/92Ф и им подобных, имеющих управление через Личный кабинет АТОЛ (lk.atol.ru).

1 стартмани

31.01.2021    8189    2    &-rey    1    

3

Загрузка данных из файла XLS в Штрих-М Торговое предприятие 4.17.01

Розничная торговля Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет Абонемент ($m)

Заполнение справочника номенклатуры и документа приходной накладной. Будет полезно для товароведов или менеджеров.

5 стартмани

20.02.2020    11244    0    Ignatov_mu    6    

3

Дополнение реквизитов номенклатуры из Эксель в 7.7. Групповое редактирование реквизитов номенклатуры 7.7 в списке

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Платформа 1С v7.7 1С:Комплексная 7.7 Управленческий учет Абонемент ($m)

Обработки группового дополнения данных о номенклатуре. Ввод веса и объема существующих товаров вручную в форму таблицы значений и затем запись в справочник Номенклатуры и Единиц. Закачка весов и объемов существующих товаров из Эксель в справочник Номенклатуры и Единиц. Загрузка внешних кодов товаров из Эксель в справочник Номенклатуры. Редактирование внешних кодов товаров в форме списка. Дозаполнение реквизитов существующих товаров из Эксель (ключевые поля - штрихкод, наименование, внешний код).

1 стартмани

11.10.2019    11926    2    ksnik    2    

2

Оптовая торговля. Обработки дистрибьютора для обмена с поставщиками и покупателями через Excel в 1С 7.7

Оптовая торговля Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Оптовая торговля, дистрибуция, логистика Управленческий учет Абонемент ($m)

В данной публикации приведены примеры обработок обмена дистрибьютора с поставщиками и покупателями через Эксель. Создание товаров-новинок. Автоматическое формирование Заказа поставщику по продажам. Заполнение бланка заказа поставщику. Загрузка приходной накладной от поставщика. Загрузка любых справочников из Эксель, например товарных сертификатов. Выгрузка прайслиста в бланк заказа (создание бланка заказа). Загрузка заявки покупателя из произвольного файла Эксель. Загрузка заявки покупателя из бланка заказа.. Для работы требуется установленный MS Excel.

1 стартмани

08.09.2019    16274    10    ksnik    2    

3

Загрузка адресов произвольного формата (КЛАДР и нестандартных "грязных" адресов) в ФИАС современных конфигураций из 1С 7.7

Загрузка и выгрузка в Excel Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 1С:ERP Управление предприятием 2 Абонемент ($m)

Описание технологии загрузки любых адресов из 1С 7.7 с разложением по ФИАС в современные конфигурации 1C 8.3 на примере ERP. Предлагаемый способ просто чудо, он гарантирует результат, он очень простой и качественный! Моя обработка является синтаксическим анализатором, который подставляет в строку грязного адреса выражение "Дом №" и "Корпус", благодаря чему грязные адреса 7.7 сами очень хорошо раскладываются по значимым полям ФИАС - заполняется область, город, улица, дом, корпус.. все раскладывается само с помощью встроенного механизма современных конфигураций 1С 8.3, который написали сами сотрудники фирмы 1С!

1 стартмани

16.08.2019    19308    17    ksnik    12    

8
Оставьте свое сообщение