1с открыть табличный документ в excel 1с

На чтение 9 мин Просмотров 26.4к. Опубликовано 09.11.2017

MS Excel давно стал стандартом для работы с электронными таблицами. В статье рассматриваются способы программной выгрузки и загрузки из 1С в файлы Excel.

Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки.

Содержание

  1. Обмен через табличный документ
  2. Обмен через OLE
  3. Использование COMSafeArray
  4. Обмен через ADO
  5. Выгрузка без программирования

Обмен через табличный документ

Данный способ простой. Его суть заключается в том, что объект ТабличныйДокумент имеет методы:

  • Записать(<ИмяФайла>, <ТипФайлаТаблицы>) для выгрузки данных в файл;
  • Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>) для загрузки данных из файла.

Внимание!

Метод Записать() доступен как на клиенте, так и на сервере. Метод Прочитать() доступен только на стороне сервера. Необходимо помнить об этом
при планировании клиент-серверного взаимодействия.


Рассмотрим пример сохранения табличного документа в файл. Необходимо любым способом создать и заполнить объект ТабличныйДокумент, а выгрузка в файл осуществляется всего лишь одной строкой:

ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Здесь ТабДок — сформированный табличный документ, ПутьКФайлу — имя файла для выгрузки, ТипФайлаТабличногоДокумента.XLSX — формат создаваемого файла. Поддерживаются следующие форматы Excel:

  • XLS95 — формат Excel 95;
  • XLS97 — формат Excel 97;
  • XLSX — формат Excel 2007.

Загрузка из файла осуществляется также достаточно просто:

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);

Здесь ПутьКФайлу — путь к загружаемому файлу Excel. СпособЧтенияЗначенийТабличногоДокумента.Значение определяет, каким образом нужно интерпретировать данные, считываемые из исходного документа. Доступны варианты:

  • Значение;
  • Текст.

Обмен через OLE

Обмен через технологию OLE automation, пожалуй, самый распространенный вариант программной работы с файлами Excel. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами. Для обмена через OLE требуется установка MS Excel:

  • На компьютере конечного пользователя, если обмен происходит на стороне клиента;
  • На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.

Пример выгрузки:

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Отключение вывода предупреждений и вопросов
Эксель.DisplayAlerts = Ложь;
// Создание новой книги
Книга = Эксель.WorkBooks.Add();
// Позиционирование на первом листе
Лист = Книга.Worksheets(1);

// Запись значения в ячейку
Лист.Cells(НомерСтроки, НомерКолонки).Value = ЗначениеЯчейки;

// Сохранение файла
Книга.SaveAs(ИмяФайла);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

Примеры чтения:

// —— ВАРИАНТ 1 ——

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Открытие книги
Книга = Эксель.Workbooks.Open(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;

// Закрытие книги
Книга.Close(0);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

// —— ВАРИАНТ 2 ——

// Открытие книги
Книга = ПолучитьCOMОбъект(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;

// Закрытие книги
Книга.Application.Quit();

Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:

// —— ВАРИАНТ 1 ——
КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
КонецЦикла;

// —— ВАРИАНТ 2 ——
НомерСтроки = 0;
Пока Истина Цикл
НомерСтроки = НомерСтроки + 1;
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
Если НЕ ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Вместо последовательного обхода всех строк листа можно выгрузить все данные в массив и работать с ним. Такой подход будет быстрее при чтении большого объема данных:

ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;

Область = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок));
Данные = Область.Value.Выгрузить();

В таблице ниже приведены наиболее востребованные свойства и методы для работы с Excel через OLE:

Действие Код Комментарий
Работа с приложением
Установка видимости окна приложения Эксель.Visible = Ложь;
Установка режима вывода предупреждений (выводить/не выводить) Эксель.DisplayAlerts = Ложь;
Закрытие приложения Эксель.Quit();
Работа с книгой
Создание новой книги Книга = Эксель.WorkBooks.Add();
Открытие существующей книги Книга = Эксель.WorkBooks.Open(ИмяФайла);
Сохранение книги Книга.SaveAs(ИмяФайла);
Закрытие книги Книга.Close(0);
Работа с листом
Установка текущего листа Лист = Книга.WorkSheets(НомерЛиста);
Установка имени Лист.Name = Имя;
Установка защиты Лист.Protect();
Снятие защиты Лист.UnProtect();
Установка ориентации страницы Лист.PageSetup.Orientation = 2; 1 — книжная, 2 — альбомная
Установка левой границы Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка верхней границы Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка правой границы Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка нижней границы Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры);
Работа со строками, колонками, ячейками
Установка ширины колонки Лист.Columns(НомерКолонки).ColumnWidth = Ширина;
Удаление строки Лист.Rows(НомерСтроки).Delete();
Удаление колонки Лист.Columns(НомерКолонки).Delete();
Удаление ячейки Лист.Cells(НомерСтроки, НомерКолонки).Delete();
Установка значения Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
Объединение ячеек Лист.Range(Лист.Cells(НомерСтроки, НомерКолонки), Лист.Cells(НомерСтроки1, НомерКолонки1)).Merge();
Установка шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Name = ИмяШрифта;
Установка размера шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Size = РазмерШрифта;
Установка жирного шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Bold = 1; 1 — жирный шрифт, 0 — нормальный
Установка курсива Лист.Cells(НомерСтроки, НомерКолонки).Font.Italic = 1; 1 — курсив, 0 — нормальный
Установка подчеркнутого шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Underline = 2; 2 — подчеркнутый, 1 — нет

Для того, чтобы узнать какое свойство нужно менять или какой метод вызвать можно воспользоваться макросами Excel. Если записать макрос с требуемыми действиями, то после можно посмотреть программный код на VBA записанного макроса.

Использование COMSafeArray

При выгрузке больших объемов данных из 1С в Excel для ускорения можно использовать объект COMSafeArray. Согласно определению из синтакс-помощника, COMSafeArray — объектная оболочка над многомерным массивом SafeArray из COM. Позволяет создавать и использовать SafeArray для обмена данными между COM-объектами. Проще говоря, это массив значений, который можно использовать для обмена между приложениями по технологии OLE.

// Создание COMSafeArray
МассивКом = Новый COMSafeArray(«VT_Variant», ВсегоКолонок, ВсегоСтрок);
// Заполнение COMSafeArray
Для Стр = 0 По ВсегоСтрок1 Цикл
Для Кол = 0 По ВсегоКолонок1 Цикл
МассивКом.SetValue(Кол, Стр, Значение);
КонецЦикла;
КонецЦикла;
// Присвоение области листа Excel значений из COMSafeArray
Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)).Value = МассивКом;

Обмен через ADO

Файл Excel при обмене через ADO представляет собой базу данных, к которой можно обращаться при помощи SQL-запросов. Установка MS Excel не требуется, но обязательно наличие драйвера ODBC, при помощи которого будет осуществляться доступ. Используемый драйвер ODBC определяется при указании строки соединения к файлу. Обычно требуемый драйвер уже установлен на компьютере.

Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.

Пример выгрузки:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);

// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+«;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения

// Создание COM-объекта для команды
Команда = Новый COMОбъект(«ADODB.Command»);
Команда.ActiveConnection = Соединение;

// Присвоение текста команды для создания таблицы
Команда.CommandText = «CREATE TABLE [Лист1] (Колонка1 char(255), Колонка2 date, Колонка3 int, Колонка4 float)»;
Команда.Execute(); // Выполнение команды

// Присвоение текста команды для добавления строки таблицы
Команда.CommandText = «INSERT INTO [Лист1] (Колонка1, Колонка2, Колонка3, Колонка4) values (‘абвгдеё’, ‘8/11/2017’, ‘12345’, ‘12345,6789’)»;
Команда.Execute(); // Выполнение команды

// Удаление команды и закрытие соединения
Команда = Неопределено;
Соединение.Close();
Соединение = Неопределено;

Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table. В этом случае код примет вид:

// Создание COM-объекта для работы с книгой
Книга = Новый COMОбъект(«ADOX.Catalog»);
Книга.ActiveConnection = Соединение;

// Создание COM-объекта для работы со структурой данных на листе
Таблица = Новый COMОбъект(«ADOX.Table»);
Таблица.Name = «Лист1»;
Таблица.Columns.Append(«Колонка1», 202);
Таблица.Columns.Append(«Колонка2», 7);
Таблица.Columns.Append(«Колонка3», 5);
Таблица.Columns.Append(«Колонка4», 5);

// Создание в книге листа с описанной структурой
Книга.Tables.Append(Таблица);
Таблица = Неопределено;
Книга = Неопределено;

В приведенном примере в методе

Таблица.Columns.Append(«Колонка1», 202);

во втором параметре указывается тип колонки. Параметр необязательный, вот некоторые значения типа колонки:

  • 5 — adDouble;
  • 6 — adCurrency;
  • 7 — adDate;
  • 11 — adBoolean;
  • 202 — adVarWChar;
  • 203 — adLongVarWChar.

Пример чтения:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);

// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+«;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения

// Создание COM-объекта для получения выборки
Выборка = Новый COMОбъект(«ADODB.Recordset»);
ТекстЗапроса = «SELECT * FROM [Лист1$]»;

// Выполнение запроса
Выборка.Open(ТекстЗапроса, Соединение);

// Обход результата выборки
Пока НЕ Выборка.EOF() Цикл
ЗначениеКолонки1 = Выборка.Fields.Item(«Колонка1»).Value; // Обращение по имени колонки
ЗначениеКолонки2 = Выборка.Fields.Item(0).Value; // Обращение по индексу колонки
Выборка.MoveNext();
КонецЦикла;

Выборка.Close();
Выборка = Неопределено;
Соединение.Close();
Соединение = Неопределено;

В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе. Возможны варианты:

  • YES — первая строка воспринимается как названия колонок. К значениям можно обращаться по имени и по индексу колонки.
  • NO — первая строка воспринимается как данные. К значениям можно обращаться только по индексу колонки.

В приведенных примерах рассмотрено лишь несколько объектов ADO. Объектная модель ADO состоит из следующих объектов:

  • Connection;
  • Command;
  • Recordset;
  • Record;
  • Fields;
  • Stream;
  • Errors;
  • Parameters;
  • Properties.

Выгрузка без программирования

Для сохранения данных из 1С в Excel не всегда целесообразно прибегать к программированию. Если в режиме Предприятия пользователь может отобразить требуемые для выгрузки данные, то, их возможно сохранить в Excel без программирования.

Для сохранения табличного документа (например, результата отчета) можно вызвать команду Сохранить или Сохранить как… главного меню.

Сохранение табличного документа 1С

В открывшемся окне требуется выбрать каталог, имя и формат сохраняемого файла.

Для сохранения данных динамических списков (например, списка номенклатуры) необходимо:

  1. Вывести данные в табличный документ при помощи команды Еще ⇒ Вывести список…;
  2. Сохранить табличный документ в требуемый формат.

Сохранение динамического списка

&НаКлиенте
Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) //необходимо в событии «НачалоВыбора» поля ввода вызвать ДиалогВыбораФайлаДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   
Диалог.Заголовок = «Выберите файл Excel»;
   
Диалог.ПредварительныйПросмотр = Ложь;
   
Диалог.Фильтр = «(*.xls,*.xlsx)|*.xls;*.xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx»;

    Если

ЗначениеЗаполнено(Объект.Файл) Тогда
       
Диалог.ПолноеИмяФайла= Объект.Файл;
    КонецЕсли;

    Если

Диалог.Выбрать() Тогда
       
ВыбранныйФайл = Диалог.ПолноеИмяФайла;
       
Объект.Файл = ВыбранныйФайл;
       
ЧтениеExcel_через_ТД(ВыбранныйФайл);
    КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ЧтениеExcel_через_ТД(ВыбранныйФайл)//1) Выводим Excel в табличн.документ
   
ТаблДок = Новый ТабличныйДокумент;
   
ТаблДок.Прочитать(ВыбранныйФайл, СпособЧтенияЗначенийТабличногоДокумента.Значение);//2) Выгружаем в таблицу значений
   
ПЗ = Новый ПостроительЗапроса;
   
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблДок.Область());
   
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
   
ПЗ.ЗаполнитьНастройки();
   
ПЗ.Выполнить();ТаблицаЗначений = ПЗ.Результат.Выгрузить();

КонецПроцедуры

 +4 

   

Распечатать

Процедура сохраняет табличный документ в файл excel и открывает его

Код 1C v 8.х

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

Чтение и запись данных MS Excel с использованием 1С, примеры форматирования таблицы

Часто возникает потребность прочитать данные из таблицы MS
Excel или из источника 1С записать (выгрузить) данные в книгу MS Excel. Можно ли средствами 1С решить эти задачи? Ответ прост — можно и это не особо затруднительно.
Чтение данных по большому счету вообще не представляет больших проблем. При выгрузке данных в MS Excel возможны некоторые трудности, что может быть связано с особенностями VBA.
Для выгрузки данных из 1С в MS Excel можно воспользоваться заранее созданным шаблоном или, если состав данных не известен до самой выгрузки, создать файл MS Excel на ходу.
Здесь будет приведен пример чтения данных из файла MS Excel и выгрузки данных с созданием файла.

Допустим, стоит задача прочитать данные из файла MS Excel, каким-то образом их обработать и выгрузить полученный результат в другой файл MS Excel.
Открываем конфигуратор и создаем новую внешнюю обработку.

Создание новой внешней обработки

Добавляем форму обработку и на нее помещаем две кнопки: Загрузить данные и Выгрузить данные. Поскольку цель данного примера показать приемы работы с загрузкой и выгрузкой данных в файл MS Excel, то на форму промежуточные данные выводить не будем.
Они будут помещены в таблицу значений и затем выгружены из нее.

Создание кнопок на форме внешней обработки

Теперь поместим в обработчики кнопкок «Загрузить данные» и «Выгрузить данные»функционал чтения данных из файла MS Excel.

В обработчиках кнопок получается следующий код:

Процедура ЗагрузитьДанныеНажатие(Элемент)
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.Заголовок = "Выберите имя файла для чтения";
	Диалог.МножественныйВыбор = Ложь;
	Диалог.Фильтр = "Файл MS Excel (.xlsx)| *.xlsx";
	
	
	Если Не Диалог.Выбрать() Тогда
		Сообщить("Файл для обработки не выбран!");
	Иначе
		
		ФайлДанных = Диалог.ПолноеИмяФайла;
		Попытка
			Excel = Новый COMОбъект("Excel.Application");
			Excel.WorkBooks.Open(ФайлДанных);
			Состояние("Обработка файла Microsoft Excel...");
		Исключение
			Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
			Сообщить(ОписаниеОшибки());
			Возврат;
		КонецПопытки;

		Попытка
			
			Excel.Sheets(1).Select(); 
		Исключение
			
			Excel.ActiveWorkbook.Close();
			Excel = 0;
			Сообщить("Файл " + Строка(ФайлДанных) + " не соответствует необходимому формату! Первый лист не найден!");
			Возврат;
		КонецПопытки;

		
		Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
		Если Версия = "8" Тогда
			ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
			ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
		Иначе
			ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
			ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
		КонецЕсли;
		
		ТЗ.Очистить();
		
		Попытка 
			Для Сч = 2 По ФайлСтрок Цикл
				Состояние("Обрабатывается строка " + Строка(Сч) + " из " + Строка(ФайлСтрок));
				Если НЕ СокрЛП(Excel.Cells(Сч, 1).Value) = ""  Тогда
					НоваяСтрока = ТЗ.Добавить();
					НоваяСтрока.НомерПоПорядку 	= СокрЛП(Excel.Cells(Сч, 1).Value);
					НоваяСтрока.ТестовыйТекст 	= СокрЛП(Excel.Cells(Сч, 2).Text);
					НоваяСтрока.ТестовоеЧисло1 	= СокрЛП(Excel.Cells(Сч, 3).Value);
					НоваяСтрока.ТестовоеЧисло2 	= СокрЛП(Excel.Cells(Сч, 4).Value);
					НоваяСтрока.ТестовоеЧисло3 	= СокрЛП(Excel.Cells(Сч, 5).Value);
					НоваяСтрока.ТестовоеЧисло4 	= СокрЛП(Excel.Cells(Сч, 6).Value);
					НоваяСтрока.ТестовоеЧисло5 	= СокрЛП(Excel.Cells(Сч, 7).Value);
					НоваяСтрока.ТестовоеЧисло6 	= СокрЛП(Excel.Cells(Сч, 8).Value);
					НоваяСтрока.ТестовоеЧисло7 	= СокрЛП(Excel.Cells(Сч, 9).Value);
					НоваяСтрока.ТестоваяДата 	= СокрЛП(Excel.Cells(Сч, 10).Value);
				КонецЕсли;
				КонецЦикла;
		Исключение
			
			Excel.ActiveWorkbook.Close();
			Excel.Quit();
			Сообщить(ОписаниеОшибки());
			Возврат;
		КонецПопытки;
		
		Попытка			
			Сообщить("Файл Excel прочитан!");
			Excel.Quit();
		Исключение
			Сообщить(ОписаниеОшибки());
			Возврат;
		КонецПопытки;			
	КонецЕсли;
	
КонецПроцедуры 

Процедура ВыгрузитьДанныеНажатие()
	
	Для Каждого ТекСтрока Из ТЗ Цикл 
		ТекСтрока.ТестовоеЧисло5 = ТекСтрока.ТестовоеЧисло5 - Число(ТекСтрока.НомерПоПорядку);
	КонецЦикла;	
	
	Если ТЗ.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;

	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Заголовок = "Выберите имя файла для сохранения";
	Диалог.МножественныйВыбор = Ложь;
	Диалог.Фильтр = "Файл MS Excel *.xlsx)| *.xlsx";
	
	
	Если Диалог.Выбрать() Тогда
		
		ФайлДанных = Диалог.ПолноеИмяФайла;
		
		Попытка
			Excel = Новый COMОбъект("Excel.Application");
		Исключение
			Сообщить(ОписаниеОшибки());
			Возврат;
		КонецПопытки;
		Попытка
			Книга = Excel.WorkBooks.Add();
			
			
			Лист = Книга.WorkSheets(1);
			Лист.Name = "Выгрузка данных";
			
			Excel.ActiveWindow.View 		= 2; 	
			Excel.ActiveWindow.Zoom 		= 100;  
			Лист.PageSetup.Orientation 		= 2; 	
			Лист.Columns(1).ColumnWidth 		= 10;   
			Лист.Columns(2).ColumnWidth 		= 25;   
			Лист.Columns(10).ColumnWidth 		= 13;
			Лист.Columns(11).ColumnWidth 		= 13;			
			
			
			
			Лист.Cells(1, 1).Value 			= "Номер по порядку";
			Лист.Cells(1, 2).Value 			= "Выгружаемый текст";
			Лист.Cells(1, 3).Value 			= "Выгружаемые числа";			
			Лист.Cells(1, 10).Value 		= "Выгружаемая дата";
			Лист.Cells(1, 11).Value 		= "Программная формула";
			Лист.Cells(2, 3).Value 			= "Число 1";
			Лист.Cells(2, 4).Value 			= "Число 2";
			Лист.Cells(2, 5).Value 			= "Число 3";
			Лист.Cells(2, 6).Value 			= "Число 4";
			Лист.Cells(2, 7).Value 			= "Число 5";
			Лист.Cells(2, 8).Value 			= "Число 6";
			Лист.Cells(2, 9).Value 			= "Число 7";
			Лист.Range("A1:A2").MergeCells 	= Истина;
			Лист.Range("A1:A2").WrapText 	= Истина;
			Лист.Range("B1:B2").MergeCells 	= Истина;
			Лист.Range("B1:B2").WrapText 	= Истина;
			Лист.Range("J1:J2").MergeCells 	= Истина;
			Лист.Range("J1:J2").WrapText 	= Истина;
			Лист.Range("K1:K2").MergeCells 	= Истина;
			Лист.Range("K1:K2").WrapText 	= Истина;
			Лист.Range("C1:I1").MergeCells 	= Истина;
			Лист.Range("C1:I1").WrapText 	= Истина;
			
			Лист.Range("A1:K2").Borders.Linestyle 	= 1;  
			Лист.Range("A1:K2").HorizontalAlignment = 3;  
			Лист.Range("A1:K2").VerticalAlignment 	= 2;  
			Лист.Range("A1:K2").Font.Bold 		= 1;  
			
			
			
			СчетчикСтрок = 3; 
			Для Каждого ТекСтрока Из ТЗ Цикл
				Лист.Cells(СчетчикСтрок, 1).Value 			= ТекСтрока.НомерПоПорядку;
				Лист.Cells(СчетчикСтрок, 2).Value 			= ТекСтрока.ТестовыйТекст;
				Лист.Cells(СчетчикСтрок, 3).Value 			= ТекСтрока.ТестовоеЧисло1;
				Лист.Cells(СчетчикСтрок, 4).Value 			= ТекСтрока.ТестовоеЧисло2;
				Лист.Cells(СчетчикСтрок, 5).Value 			= ТекСтрока.ТестовоеЧисло3;
				Лист.Cells(СчетчикСтрок, 6).Value 			= ТекСтрока.ТестовоеЧисло4;
				Лист.Cells(СчетчикСтрок, 7).Value 			= ТекСтрока.ТестовоеЧисло5;
				Лист.Cells(СчетчикСтрок, 8).Value 			= ТекСтрока.ТестовоеЧисло6;
				Лист.Cells(СчетчикСтрок, 9).Value 			= ТекСтрока.ТестовоеЧисло7;
				Лист.Cells(СчетчикСтрок, 10).Value 			= ТекСтрока.ТестоваяДата;
				Лист.Cells(СчетчикСтрок, 11).Formula		= "=F" + Строка(СчетчикСтрок) + "+G" + Строка(СчетчикСтрок);
				СчетчикСтрок = СчетчикСтрок + 1;
			КонецЦикла;
			
			СчетчикСтрок = СчетчикСтрок - 1; 
			
			Лист.Range("A3:K" + Строка(СчетчикСтрок)).Borders.Linestyle 	= 1;  
			Лист.Range("A3:K" + Строка(СчетчикСтрок)).VerticalAlignment 	= 2;  
			Для НомерСтроки = 3 По СчетчикСтрок Цикл                              
				Для Столбец = 4 По 9 Цикл
					Лист.Cells(НомерСтроки, Столбец).NumberFormat 	= "0.00";
				КонецЦикла;				
				Лист.Cells(НомерСтроки, 11).NumberFormat 	= "0.00";
			КонецЦикла;
		Исключение			
			Excel.Quit();
			Сообщить(ОписаниеОшибки());
			Возврат;
		КонецПопытки;
		
		Попытка
			Книга.SaveAs(ФайлДанных);
			Сообщить("Файл " + ФайлДанных + " успешно сохранен"); 
		Исключение
			Сообщить(ОписаниеОшибки() + " Файл не сохранен!");
			Возврат;
		КонецПопытки;
		
		Попытка			
			Excel.Quit();
		Исключение			
			Сообщить(ОписаниеОшибки());
			Возврат;
		КонецПопытки;
		
	КонецЕсли;
	
КонецПроцедуры  

В результате получилась обработка, в которой сначала из файл
считываются данные, а затем — по нажатию кнопки выгрузки данных как-то
обрабатываются и выгружаются в файл. Либо в пустой, либо указанный
пользователем. При этом существующий файл пересоздается. При выгрузке показаны
некоторые примеры форматирования файла.

На этом пока все.

Пример обработки и файла для чтения данных можно скачать
тут


Содержание

  • Выгрузка информации из 1C в Excel
    • Способ 1: копирование содержимого ячейки
    • Способ 2: вставка списка в существующую книгу Excel
    • Способ 3: создание новой книги Excel со списком
    • Способ 4: копирование диапазона из списка 1С в Excel
    • Способ 5: Сохранение документов в формате Excel
  • Вопросы и ответы

Выгрузка данных из 1С в Microsoft Excel

Не секрет, что среди офисных работников, в частности тех, которые заняты в расчетной и финансовой сфере, особенно популярны программы Excel и 1С. Поэтому довольно часто приходится производить обмен данными между этими приложениями. Но, к сожалению, далеко не все пользователи знают, как быстро это сделать. Давайте выясним, как выгрузить данные из 1С в документ Excel.

Выгрузка информации из 1C в Excel

Если загрузка данных из Excel в 1С – это довольно сложная процедура, автоматизировать которую можно только с помощью сторонних решений, то обратный процесс, а именно выгрузка из 1С в Эксель – это сравнительно простой набор действий. Его можно легко выполнить с помощью встроенных инструментов вышеуказанных программ, причем сделать это можно несколькими способами, в зависимости от того, что именно пользователю нужно перенести. Рассмотрим, как это выполнить на конкретных примерах в 1С версии 8.3.

Способ 1: копирование содержимого ячейки

Одна единица данных содержится в ячейке 1С. Её можно перенести в Эксель обычным методом копирования.

  1. Выделяем ячейку в 1С, содержимое которой нужно скопировать. Кликаем по ней правой кнопкой мыши. В контекстном меню выбираем пункт «Копировать». Можно воспользоваться также универсальным способом, который действует в большинстве программ, работающих на ОС Windows: просто выделяем содержимое ячейки и набираем комбинацию клавиш на клавиатуре Ctrl+C.
  2. Копирование в 1С

  3. Открываем чистый лист Excel или документ, куда нужно вставить содержимое. Кликаем правой кнопкой мыши и в появившемся контекстном меню в параметрах вставки выбираем пункт «Сохранить только текст», который изображен в форме пиктограммы в виде большой буквы «А».
    Вставка через контекстное меню в Microsoft Excel

    Вместо этого действия можно после выделения ячейки, находясь во вкладке «Главная», щелкнуть по значку «Вставить», который расположен на ленте в блоке «Буфер обмена».

    Вставка через кнопку на ленте в Microsoft Excel

    Также можно воспользоваться универсальным способом и набрать на клавиатуре сочетание клавиш Ctrl+V после того, как ячейка выделена.

Содержимое ячейки 1С будет вставлено в Excel.

Данные в ячейку вставлены в Microsoft Excel

Способ 2: вставка списка в существующую книгу Excel

Но вышеуказанный способ подойдет лишь в том случае, если нужно перенести данные из одной ячейки. Когда же нужно совершить перенос целого списка, то следует воспользоваться другим способом, ведь копирование по одному элементу отберет очень много времени.

  1. Открываем любой список, журнал или справочник в 1С. Кликаем на кнопку «Все действия», которая должна располагаться вверху от обрабатываемого массива данных. Запускается меню. Выбираем в нем пункт «Вывести список».
  2. Переход к выводу списка в Microsoft Excel

  3. Открывается небольшое окошко вывода списка. Тут можно произвести некоторые настройки.

    Поле «Выводить в» имеет два значения:

    • Табличный документ;
    • Текстовый документ.

    По умолчанию установлен первый вариант. Для переноса данных в Эксель он как раз и подходит, так что тут мы ничего не меняем.

    В блоке «Выводить колонки» можно указать, какие колонки из списка вы хотите перевести в Excel. Если вы собираетесь производить перенос всех данных, то эту настройку тоже не трогаем. Если же вы хотите произвести конвертацию без какого-то столбца или нескольких столбцов, то снимаем галочку с соответствующих элементов.

    Lumpics.ru

    После того, как настройки завершены, жмем на кнопку «OK».

  4. Окно вывода списка в Microsoft Excel

  5. Затем на экран выводится список в табличном виде. Если вы хотите перенести его в готовый файл Excel, то просто выделите в нем все данные курсором с зажатой левой кнопкой мыши, потом кликните по выделению правой кнопкой мышки и в открывшемся меню выберите пункт «Копировать». Можно так же, как и в предыдущем способе использовать сочетание горячих клавиш Ctrl+С.
  6. Копирование списка в 1С

  7. Открываем лист Microsoft Excel и выделяем верхнюю левую ячейку диапазона, в который будут вставляться данные. Затем жмем на кнопку «Вставить» на ленте во вкладке «Главная» или набираем сочетание клавиш Ctrl+V.

Вставка списка в Microsoft Excel

Список вставлен в документ.

Список вставлен в документ в Microsoft Excel

Способ 3: создание новой книги Excel со списком

Также список из программы 1С можно сразу вывести в новый файл Эксель.

  1. Выполняем все те шаги, которые были указаны в предыдущем способе до формирования списка в 1С в табличном варианте включительно. После этого жмем на кнопку вызова меню, которая расположена в верхней части окна в виде треугольника, вписанного в оранжевый круг. В запустившемся меню последовательно переходим по пунктам «Файл» и «Сохранить как…».
    Сохранение списка в 1С

    Ещё проще сделать переход, нажав на кнопку «Сохранить», которая имеет вид дискеты и расположена в блоке инструментов 1С в самом верху окна. Но такая возможность доступна только пользователям, которые применяют программу версии 8.3. В ранних версиях можно использовать только предыдущий вариант.

    Переход к сохранению списка в 1С

    Также в любых версиях программы для запуска окна сохранения можно нажать комбинацию клавиш Ctrl+S.

  2. Запускается окно сохранение файла. Переходим в ту директорию, в которой планируем сохранить книгу, если место расположения по умолчанию не устраивает. В поле «Тип файла» по умолчанию указано значение «Табличный документ (*.mxl)». Нам это не подходит, поэтому из выпадающего списка выбираем пункт «Лист Excel (*.xls)» или «Лист Excel 2007 — … (*.xlsx)». Также при желании можно выбрать совсем старые форматы – «Лист Excel 95» или «Лист Excel 97». После того, как настройки сохранения произведены, жмем на кнопку «Сохранить».

Сохранение таблицы из 1С в Microsoft Excel

Весь список будет сохранен отдельной книгой.

Способ 4: копирование диапазона из списка 1С в Excel

Бывают случаи, когда нужно перенести не весь список, а только отдельные строки или диапазон данных. Этот вариант тоже вполне воплотим с помощью встроенных инструментов.

  1. Выделяем строки или диапазон данных в списке. Для этого зажимаем кнопку Shift и кликаем левой кнопкой мыши по тем строкам, которые нужно перенести. Жмем на кнопку «Все действия». В появившемся меню выбираем пункт «Вывести список…».
  2. Переход к выводу диапазона данных в 1С

  3. Запускается окошко вывода списка. Настройки в нем производим так же, как и в предыдущих двух способах. Единственный нюанс состоит в том, что нужно установить галочку около параметра «Только выделенные». После этого жмем на кнопку «OK».
  4. Окно вывода списка выделенных строк в Microsoft Excel

  5. Как видим, список, состоящий исключительно из выделенных строк, выведен. Дальше нам нужно будет выполнить точно такие же действия как в Способе 2 или в Способе 3, в зависимости от того, собираемся мы добавлять список к уже имеющейся книге Excel или создавать новый документ.

Список выведен в 1С

Способ 5: Сохранение документов в формате Excel

В Excel иногда нужно сохранять не только списки, но и созданные в 1С документы (счета, накладные платежные поручения и т.д.). Это связано с тем, что для многих пользователей редактировать документ проще в Экселе. К тому же в Excel можно удалить заполненные данные и, распечатав документ, использовать его при необходимости как бланк для ручного заполнения.

  1. В 1С в форме создания любого документа имеется кнопка печати. На ней расположена пиктограмма в виде изображения принтера. После того, как в документ введены необходимые данные и он сохранен, жмем на этот значок.
  2. Вывод на печать документа в 1С

  3. Открывается форма для печати. Но нам, как мы помним, нужно не распечатать документ, а конвертировать его в Эксель. Легче всего в версии 1С 8.3 это сделать, нажав на кнопку «Сохранить» в виде дискеты.
    Переход к сохранению документа в Microsoft Excel

    Для более ранних версий используем сочетание горячих клавиш Ctrl+S или, нажав на кнопку вывода меню в виде перевернутого треугольника в верхней части окна, последовательно переходим по пунктам «Файл» и «Сохранить».

  4. Переход к сохранению документа в программе 1С

  5. Открывается окно сохранение документа. Как и в предыдущих способах, в нем нужно указать место расположения сохраняемого файла. В поле «Тип файла» следует указать один из форматов Эксель. Не забываем дать название документу в поле «Имя файла». После выполнения всех настроек жмем на кнопку «Сохранить».

Сохранение документа в формате Microsoft Excel

Документ будет сохранен в формате Эксель. Этот файл теперь можно открывать в данной программе, и проводить дальнейшую его обработку уже в ней.

Как видим, выгрузка информации из 1С в формат Excel не составляет никаких сложностей. Нужно знать только алгоритм действий, так как, к сожалению, не для всех пользователей он интуитивно понятен. С помощью встроенных инструментов 1С и Эксель можно копировать содержимое ячеек, списков и диапазонов из первого приложения во второе, а также сохранять списки и документы в отдельные книги. Вариантов сохранения достаточно много и для того, чтобы пользователь мог найти подходящий именно для его ситуации, совсем не нужно прибегать к использованию стороннего программного обеспечения или применять сложные комбинации действий.

Почти каждому офисному работнику нужно знать, как выгружать из 1С в Excel. Работа многих из них основывается на взаимосвязи этих приложений, желательно понимать, как переносить информацию из одной в другую и обратно. На платформе предусмотрены механизмы, которые упрощают и облегчают процесс. Достаточно 1 раз запомнить, как это делается, чтобы потом повторять его. Удобство заключается в том, что полученные таблицы и базы можно редактировать, показывать поставщикам и распечатывать в любом количестве. Ниже — подробные инструкции, как правильно перемещать требуемые данные в документы.

Как из 1С выгрузить таблицу или файлы в Эксель (Excel)

Если процесс передачи из табличного пространства в программу — процесс сложный и долгий, требующий стороннего ПО и настройки, то обратная задача выполняется не только быстро, но и разными способами. Все зависит от того, загрузка чего требуется и в каком виде это необходимо представить. И сделать все можно разными способами.

Метод 1: Берем каждую ячейку отдельно

Если требуется только небольшой кусочек от номенклатуры, который содержится в клетке 1C, то ее легко перенести в Эксель. Для этого можно использовать любой привычный режим копирования в документах.

Как это выполнить по шагам:

  1. выделить требуемую строчку;

выгрузка из 1 с в эксель

  1. кликнуть на нее ПКМ;
  2. выбрать пункт «копирование» или набрать «Ctrl+C»;
  3. открыть лист Excel или документ другого формата, куда необходимо вставить символы;

как сделать выгрузку из 1с в эксель

  1. кнопки «Ctrl+V» или через правую клавишу найти строку «сохранить как текст» — иногда выглядит как пиктограмма «А».

как выгрузить файлы из 1с в эксель

Также можно вставить информацию на лист другим способом. Направить курсор в клетку начала, а затем открыть вкладку «Главная», нажать на «Вставить» (его можно найти в части «Буфер обмена»). После всех этих действий содержимое окажется в табличном пространстве.

Единственный минус в том, что этот способ подойдет, только если требуется отправить что-то в ячейку. Если планируется транслировать массивы, стоит попробовать действовать иначе.

Метод 2: вставляем список в заранее подготовленный Excel

Когда требуется переместить целый перечень или массив из нескольких параметров, лучше действовать иначе. Ведь если вставлять по 1 слову, то на процесс уйдет слишком много времени.

Как выполняется:

  1. Открыть справочник или специальный журнал. Найти пункт «все действия», он находится в вверху от комплекса, который нуждается в обработке.

как скопировать таблицу из 1с в эксель

  1. Запустить меню, найти строку «вывести».
  2. Появится небольшое окно, в котором производится настройка. Там есть подпункт «выводить в» и два варианта — табличный или текстовый документ. Изначально стоит первый вид, он хорошо подходит для отправки в Эксель.
  3. В блоке с названием «Выводить колонки» необходимо определиться, что придется послать в строчное пространство. Если в планах — перенести все содержимое, то здесь тоже ничего менять не надо. Если предстоит конвертировать отдельные столбцы, то с лишних снимаем галочку.
  4. После выполнения всех настроек кликнуть на «Ок».

выгрузка отчета из 1с в excel

  1. На экране отобразится перечень в таблицы. Чтобы отправить его в готовый файл, желательно выделить в нем левой кнопкой мыши нужную область и нажать правую клавишу. В высветившемся меню найти «Копировать». Для упрощения процесса советуем пользоваться стандартным «Ctrl+c».

данные из 1с в excel

  1. Раскрыть лист, в котором выделяется верхняя левая строчка. Начиная оттуда начнется перечень. Затем — пункт «Вставить» на панели во вкладке «Главная».

выгрузить таблицу из 1с в эксель

  1. Готово. Перенос обязательных данных из неудобного 1С в подходящий для модификаций и анализа Excel завершен.

перенос данных из 1с в excel

Метод 3: оформляем отдельный новый документ

Еще один способ — сразу выслать в созданный для этих целей док. Для этого следует выполнить все шаги, что изучали выше, до момента форматирования списка.

Затем кликаем на кнопку для вызова меню. Она выглядит как треугольник, оказавшийся в кружочке.

Ищем по шагам:

  • файл — при наведении на него система покажет комментарий с подсказкой;

перенос данных из 1с в эксель

  • сохранить как — после этого придется решать между разными форматами.

можно ли из 1с выгрузить в excel

Можно пойти другим путем. Кликнуть на «Сохранить» — выглядит как дискета в панели 1С. Она всегда находится в верхнем углу (доступно для ПО после обновления). Запустить окно сохранения легко с помощью «Ctrl+s».

Появляется нужное окошко. Следует перейти в то место, где необходимо сохранить книгу.

Важно выбрать правильный тип документа. Изначально всегда предлагается хранить и загружать базу в формате (*.xls), но это неудобно. В выпадающем перечне стоит другой вариант — «Лист Excel (*.xls)». Есть и совсем старые разновидности, но у них минимальный набор функционала, поэтому мы не рекомендуем их задействовать. Когда все настройки подобраны, можно сохранять изменения и получить номенклатуру в виде перечня в новой книге.

Метод 4: копируем диапазон

Часто встречаются случаи, когда переместить планируется не весь лист или таблицу, а определенный кусок или строки. Это тоже реально произвести с помощью специальных внутренних механизмов.

Как из стандартизированного 1С перенести таблицу в Эксель:

  1. Выделите нужную область. Следует зажать Shift и кликнуть на те строки, которые необходимо перенести. Нажать на «все действия» и отыскать подпункт «вывести список».

как из 1с предприятие выгрузить в excel

  1. Запустите окошко. Все настройки возьмем из предыдущих способов. Главное — не забыть поставить галочку напротив параметра «только выделенные». Позже — ищем «ок».

акт из 1с в excel

  1. Программа соберет только выделенные столбцы. Затем действуем по пунктам из 2 или 3 способа.

выгрузка клиентов из 1с в excel

Метод 5: можно ли из 1С выгрузить документ в привычном уже формате Excel и сохранить

Иногда требуется не просто скопировать список или область, а целые файлы — накладные, фактуры, платежные поручения. Большинству пользователей проще заниматься редактированием прямо в Эксель, к тому же в таблицах не страшно вносить изменения, легче печатать. Можно даже очистить автозаполнение и пользоваться бланком для оформления вручную.

Процесс пошагово:

  • В 1 C найти кнопку печати. Выглядит как картинка с принтером, сложно спутать. Когда в документ было введено все запланированное и его сохранили, кликаем на пиктограмму.

1с как выгрузить справочник в excel

  • Откроется форма предварительного просмотра. Но нужно его не распечатывать, а конвертировать. Поэтому нажимаем на «сохранить», если версия 8.3. Для более старых модификаций есть сочетание клавиш «ctrl+s».

скопировать таблицу из 1с в excel

Еще один вариант — кликнуть на перевернутый треугольник, затем на «файл» и «сохранить». Когда откроется окно сохранения, необходимо выбрать тип и имя. Когда все параметры будут отобраны — нажать на «сохранить».

Форматы переноса данных любого вида и размера из 1С в удобный Эксель

В этой программе 5 частых видов:

  • mxl — специально созданный для возможности сохранять сразу в формате таблицы, даже сбрасывать в базы на других компьютерах;
  • xls — стандартный тип;
  • txt — текстовый, вся информация в блокноте;
  • pdf — подойдет, если планируется работать с разновидностями Adobe Reader;
  • html — веб-формат, используется для размещения на странице в интернете.

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

На огромных объемах табличных строчек они размещаются на разных листах для удобной обработки.

Помните, что максимальное количество строк зависит от версии Екселя:

  • до 97 — предел 16 000;
  • 97-2003 — до 65 000;
  • от 2007 — не больше 1 048 000.

Готовые решения для всех направлений

Склады

Сократите издержки в работе склада до 70% : ускорьте складские операции, устраните ошибки человеческого фактора и забудьте про потерю и пересортицу товаров.

Узнать больше

Магазины

У вас всегда будут актуальные ценники на товарах и витринах, товар перестанет теряться при перемещении между магазинами, а в вашей системе учета — только точные остатки по товарам.

Узнать больше

Маркировка

С маркировкой вы на 100% исключите приемку контрафактного товара на свой склад, а также сможете отслеживать полную цепочку поставок товара от производителя.

Узнать больше

E-commerce

Скорость, точность приёмки и отгрузки товаров на складе — краеугольный камень в E-commerce бизнесе. Начни использовать современные, более эффективные мобильные инструменты.

Узнать больше

Учреждения

Повысьте точность учета имущества организации, уровень контроля сохранности и перемещения каждой единицы. Мобильный учет снизит вероятность краж и естественных потерь.

Узнать больше

Производство

Повысьте эффективность деятельности производственного предприятия за счет внедрения мобильной автоматизации для учёта товарно-материальных ценностей.

Узнать больше

RFID

Первое в России готовое решение для учёта товара по RFID-меткам на каждом из этапов цепочки поставок.

Узнать больше

ЕГАИС

Исключи ошибки сопоставления и считывания акцизных марок алкогольной продукции при помощи мобильных инструментов учёта.

Узнать больше

Сертификация

Получение сертифицированного статуса партнёра «Клеверенс» позволит вашей компании выйти на новый уровень решения задач на предприятиях ваших клиентов..

Узнать больше

Инвентаризация

Используй современные мобильные инструменты для проведения инвентаризации товара. Повысь скорость и точность бизнес-процесса.

Узнать больше

Показать все решения по автоматизации

Как сделать выгрузку клиентов или отчетов из 1С в Excel программным путем

Для продвинутых пользователей есть более сложные варианты произвести быстрое сохранение отдельных областей на компьютер. Сделать это можно 2 основными способами, о которых мы поговорим ниже.

Метод 1: вызываем сохранение таблицы

У каждого табличного документа имеется функция «записать», среди параметров которого есть тип файла. Следует выбрать заполнение табличного пространства, кликнуть на «записать».

Метод 2: задействуем механизм Excel.Aplication

Эту возможность проще всего реализовать в среде операционных систем Windows. Код важно отладить со стороны клиента, иначе придется долго дополнительно отстраивать серверную часть программного обеспечения.

Всю документацию по этому объекту можно найти на официальном сайте Microsoft. Для записи в нужной последовательности и формате пишут простейший код. Из всех инструментов ПО непосредственно к копированию информации относится строчка:

КнигаЭксель = Новый СОМОбъект

Как вывести данные из 1С и перенести их в Excel: способы выгрузки из 1C

Это только кажется, что настройка переселения любых частей и листов — дело хлопотное и требующее привлечения мастеров. Справиться с этой задачей может любой, если действовать по шагам.

Важно, чтобы программное обеспечение было лицензионным. Короткие пиратские версии не всегда поддерживают перенос в полном объеме. Кроме того, важно установить интеграцию с товароучетными программами, чтобы следить за остатками и не допускать пересортицы.

Чтобы подобрать решение для бизнеса, стоит обратиться в «Клеверенс». Наши специалисты помогут выбрать подходящее оборудование и софт, который будет справляться со всем комплексом поставленных задач. Отлаженная техника не создает задержек. Каждый цикл выполняется достаточно быстро, чтобы заказы собирались оперативно, а клиенты были довольны.

Как выгрузить из 1С любые понадобившиеся данные ячейки по товару или по созданному ранее справочнику в 1C в Excel (Эксель)

Мы изучили, как правильно переносить разные строчки и таблицы. А теперь давайте рассмотрим, как можно отправлять в табличное пространство целый регистр. Например, часто требуется создать отдельную книгу по контрагентам, покупателям или поставщикам, собрать заказы.

Чтобы удалось оформить номенклатуру, следует сначала ее развернуть и отыскать правильный файл. Если конфигурация ПО управляемая, то вверху экрана ищем плашку «еще». Выпадет меню, где надо искать связанные со списками строки, чтобы войти в требующийся перечень.

1с 8 выгрузка в excel

В более старых версиях программы достаточно просто щелкнуть ПКМ и найти там тот же пункт про вывод.

Откроется форма, где предстоит отметить все необходимые поля. Система покажет все подобранное в рамках одной таблицы. Оттуда их легко копировать в документ.

Как сделать выгрузку из 1С 8 в Эксель (Excel) большого количества данных

Перенос крупных баз практически ничем не отличается от копирования небольших списков. Чтобы не допустить ошибок вида «недостаточно памяти на клиенте» и сократить потраченное на процесс время, нужно пользоваться таким способом:

  • создать книгу, в которую будут складываться все для будущего анализа;

выгрузка данных из 1с в эксель

  • начать выгрузку через команды — кликнуть на «записать ТабДок»;

как перенести данные из 1с в excel

  • указать путь к созданному пространству;

как вывести в эксель из 1с

  • выбрать формат, в котором будет храниться и редактироваться информация.

При необходимости можно отладить автоматический построчный перенос для экономии. Но для этого придется один раз пригласить специалиста — он напишет код.

Как из «1С: Предприятие» выгрузить печатные формы документов или файлов в Excel

Это еще один метод, который подходит в большинстве случаев. Сначала открываем нужную вариацию накладной или акта в формате окна перед печатью.

Затем — ткнуть «ctrl+s». Появится диалоговое окошко, где предстоит придумать имя для будущего табличного пространства и его подвид.

как из 1с вывести в excel

Любой отчет можно отправить на рабочий стол или в определенную папку также просто, всего в пару кликов.

как сохранить накладную из 1с в excel

Пользоваться можно всеми основными форматами — word, html, и другими, о которых мы говорили выше. Как сохранить накладную из жесткого 1С в подходящий для редактирования Excel — вызвать меню, подготовить название и пройти по короткому пути извлечения строк из программы.

Как отправить базу целиком (в файл .dt)

Чтобы удалось скачать содержимое, потребуется перейти в режим конфигуратора.

как из 1с перенести в эксель

После этого — открыть подпункт «администрирование». Следующий шаг — выбор опции «выгрузка информационной базы».

как скопировать данные из 1с в excel

Останется только ввести имя для базы, а также найти подходящее место для хранения на диске. Чтобы в будущем загрузить все в другую директорию, нужно только кликнуть на «загрузить» и выбрать предварительно сформированный док.

Выгрузка из 1С в Excel отчетности и ее форм для комфортной печати

Сделать это достаточно просто, ведь практически все в программе имеет печатные формы. А сохранение начинается из этого поля.

Чтобы собрать информацию из платежного поручения, действуем по шагам:

  • кликнуть на него;
  • найти в верхнем поле пиктограмму принтера;

как выгрузить файл из 1с в excel

  • появится страница предпросмотра, на которой необходимо найти дискету или другой значок, указывающий на хранение;

как скопировать из 1с в excel

  • нажать на «сохранить»;
  • на экран выведется окно, в котором следует указать путь для сохранения будущего файла;

как выгрузить отчёт в эксель из 1с

  • ниже — выбор формата, в рамках которого будет содержаться информация;
  • по надобности — поставить галочки на дополнительную упаковку в архив и транслитерацию имен;
  • подтвердить свои действия нажатием на кнопку.

После этого с получившимся документом можно выполнять любые манипуляции — редактировать, удалять или добавлять строчки и столбцы, распечатывать.

Как скопировать и вывести таблицу или данные любого объема в доступный для редактирования Эксель (Excel) – для версии 1С 8.3

Одна из распространенных задач каждого бухгалтера или кадровика — сформировать перечень платежек за прошлый год или подготовить количество трудоустроенных за 2020-й. Могут попросить оформить бумажную версию книги продаж и возвратов, а также просто найти список товаров из определенной накладной за июль. Во всех этих случаях требуется создание табличного пространства в новой книге. Решить это достаточно просто.

Например, для анализа отбираются все поступления от конкретного производителя, которые были выполнены более чем на 1500 рублей.

Сначала нажимаем на значок отбора критериев. Появится окно, в котором устанавливаем необходимые параметры — контрагента и стоимость чека.

как выгрузить отчет из 1с в excel

На экране вы увидете бумаги к выдаче. Здесь следует запросить контекстное меню правой кнопкой мыши или с помощью функции «действия». В появившемся поле ищем пункт «вывести».

Система покажет, что есть 2 варианта отображения — текстовый формат и табличный. Вам пригодится последний. Через программу информация появится в отдельном окошке, из которого его реально отправлять в нужном виде через сохранение.

как выгрузить данные из 1с в excel

Эти действия вполне можно выполнять почти для каждой таблицы. Достаточно раскрыть подходящий файл, поставить галочки и прописать запрос в полях. Через несколько кликов все требуемые строчки будут готовы к транспортировке в новую книгу или на лист.

Мы рассмотрели, как выгрузить любые данные отчета или акта с 1с в более подходящий для анализа Эксель (Excel) из любых папок, что требуется сделать, чтобы получилось сохранить их в виде таблицы или книги. Изучили, как правильно переносить печатные формы, какие комбинации клавиш для этого необходимы и без чего не обойтись. Есть разные способы транслировать цифры и строчки в табличное пространство. Достаточно попробовать сделать один раз и запомнить, чтобы потом свободно повторять те же действия.

Количество показов: 41178

  • Главная
  • О сайте
  • Главная
  • Содержание

Рукопашный бой Карташ

Категории

—>

рубрики: Excel | Дата: 15 июня, 2017

Если провести опрос среди программистов 1С на тему «Как сохранить информацию из 1С в файл ексель», то большинство голосов, как мне кажется займет вариант с созданием объекта Excel.Application с последующим заполнением листа с помощью методов и свойств встроенного в Excel языка VBA. Но многие ли из вас помнят вышеупомянутые методы и свойства? А ведь между тем есть способ который позволяет сделать это гораздо проще, только с использованием языка программирования 1С.

Для этого достаточно сформировать ТабличныйДокумент (сделать это можно как с использованием макета табличного документа, так и программно), а потом просто записать его с помощью метода Записать() сразу в файл Excel, благо платформа без проблем позволяет это сделать. Напомню, что синтаксис этого метода выглядит следующим образом

Записать(ИмяФайла, ТипФайлаТаблицы)
ИмяФайла — строка в которой указан путь к файлу;
ТипФайлаТаблицы — тип файла в который мы будем записывать табличный документ.
Платформа 1С предоставляет следующие типы файлов:

  • ANSITXT (ANSITXT)
  • DOCX (DOCX)
  • HTML (HTML)
  • HTML3 (HTML3)
  • HTML4 (HTML4)
  • HTML5 (HTML5)
  • MXL (MXL)
  • MXL7 (MXL7)
  • ODS (ODS)
  • PDF (PDF)
  • TXT (TXT)
  • XLS (XLS)
  • XLS95 (XLS95)
  • XLS97 (XLS97)
  • XLSX (XLSX)

Пример использования

В качестве примера создадим процедуру в которую в качестве параметра будет передаваться таблица значений, которую будем выводить в табличный документ, который в свою очередь будем сохранять в ексель.
Вот код этой процедуры




&НаСервере
Процедура ЗаписатьТаблицуЗначенийВФайлЕксель(Таблица)

	ТабДок = Новый ТабличныйДокумент;

	КоличествоКолонок = Таблица.Колонки.Количество();

	//Формируем строку с заголовками
	Для Счетчик = 1 По КоличествоКолонок Цикл

		ТекущаяКолонка = Таблица.Колонки[Счетчик - 1];
		ТабДок.Область("R1C" + Счетчик).Текст = ТекущаяКолонка.Имя;

	КонецЦикла;

	//Добавляем строки из таблицы
	НомерСтроки = 2;
	Для каждого СтрокаТаблицы Из Таблица Цикл

		Для НомерКолонки = 1 По КоличествоКолонок Цикл

			ТабДок.Область("R" + НомерСтроки + "C" + НомерКолонки).Текст = Строка(СтрокаТаблицы[НомерКолонки - 1]);

		КонецЦикла;
		НомерСтроки = НомерСтроки + 1;

	КонецЦикла;

	//Записываем табличный документ в файл Excel
	ТабДок.Записать("D:musorTest.xlsx", ТипФайлаТабличногоДокумента.XLSX);

КонецПроцедуры

В общем то все элементарно. Пусть у нас есть вот такая таблица значений:

Товар Количество
Яблоки 5
Груши 10

После того как прогнал ее через процедуру выше, получил вот такой результат в ексель

Достоинства метода

  • Простота. Не требуется знаний VBA. Доступны синтаксический контроль и отладка кода в процессе написания.
  • Не требуется наличия установленного Excel.

Недостатки метода

  • Если макет достаточно сложный, есть вероятность, что он может сохраниться недостаточно корректно. Плюс могут возникать проблемы с форматом данных.

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

Работать с файлами Excel можно тремя способами:

  1. Через OLE  объект;
  2. Через Табличный Документ 1С.
  3. Через ADODB

Разберем первый способ.

1. Подключаемся к  OLE и октрываем файл  Excel:

//Поключимся к Excel через OLE, откроем файл и вернем список страниц
//ИмяФайла = Полный путь к файлу Excel
Соотв = Новый Соответствие;
Попытка
Листы = Новый Массив;
Excel = Новый COMОбъект("Excel.Application");
Соотв.Вставить("Соединение",Excel);
ExcelФайл = Excel.WorkBooks.Open (ИмяФайла);
Соотв.Вставить("ExcelФайл",ExcelФайл);
Для Сч = 1 По ExcelФайл.Sheets.Count Цикл
Листы.Добавить(ExcelФайл.Sheets(Сч));
КонецЦикла;
Соотв.Вставить("Листы",Листы);
лРезультат = Соотв;
Исключение
Сообщить("Ошибка создания обьекта Microsoft Excel" + ОписаниеОшибки());
лРезультат = Неопределено;
КонецПопытки;

Возврат лРезультат;

Отсоединяемся от Excel и закрываем файл:

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

Процедура  ОтключатьсяОтExcel(Соответстие)
Попытка
Соответстие["Соединение"].DisplayAlerts = 0;
Соответстие["ExcelФайл"].Close();
Соответстие["Соединение"].DisplayAlerts = 1;
Соответстие["Соединение"].Quit();
Соответстие["Соединение"] = Неопределено;
Исключение
Сообщить("Не удалось отключиться от Excel - "+ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры

Клиент-Серверный вариант в управляемых формах.

При работе в клиент-серверном варианте основная трудность заключается в том, что обычно файл мы загружаем на стороне клиента, а данные, как правило, обрабатываем на стороне сервера. Причем, таблицу значений нельзя передать от клиента на сервер (точнее, передать таблицу значений можно, но только в толстом клиенте. На тонком — 1С выдаст вам сообщение об ошибке). Есть два пути решения данной задачи:

1. Считываем данные из файла в массив из структур и затем этот массив передаем на сервер для дальнейших манипуляций с данными.

&НаКлиенте
Процедура Загрузить1(Команда)
Если Объект.ИмяФайла = "" Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не указан файл для загрузки";
Сообщение.Поле = "Объект.ИмяФайла";
Сообщение.Сообщить();
Возврат;
КонецЕсли;

Соединение = ПоключитьсяКExcel(Объект.ИмяФайла);
Если Соединение = Неопределено Тогда
Возврат;
КонецЕсли;

Лист = Соединение["Листы"][0];
//Создаем Массив для строк
МассивДанных = Новый Массив;

ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;

Для Сч = 1 по ВсегоСтрок Цикл

//Создаем структуру для текущей строки
Строка = Новый Структура;
Для Сч2 = 1 по ВсегоКолонок Цикл
Строка.Вставить("Колонка"+Строка(Сч2),Лист.Cells(Сч,Сч2).Value);
КонецЦикла;

МассивДанных.Добавить(Строка);
КонецЦикла;

Загрузить1НаСервере(МассивДанных);
КонецПроцедуры

&НаСервере
Процедура Загрузить1НаСервере(МассивДанных)
//Создадим колонки
Если МассивДанных.Количество() = 0 Тогда
Возврат;
КонецЕсли;

Таб = РеквизитФормыВЗначение("Результат");

МассивРеквизитов = Новый Массив;

Для Каждого Кл Из МассивДанных[0] Цикл
Мас = Новый Массив;
Мас.Добавить(ТипЗнч(Кл.Значение));

Таб.Колонки.Добавить(Кл.Ключ,Новый ОписаниеТипов(Мас),Кл.Значение);
КонецЦикла;

Первая = Истина;
Для Каждого Ст ИЗ МассивДанных Цикл
Если Первая Тогда
Первая = Ложь;
Продолжить;
КонецЕсли;
ТБ = Таб.Добавить();
Для Каждого Кл из СТ Цикл
ТБ[Кл.Ключ] = Кл.Значение;
КонецЦикла;

КонецЦикла;

ОтобразитьТабНаФорме(Таб);

КонецПроцедуры

2-ой способ — это передать файл Excel на сервер через хранилище данных и далее работать с ним уже на сервере.

&НаСервере
Процедура Загрузить2НаСервере(пФайл)
лФайл = ПолучитьИмяВременногоФайла("xlsx");
лДвоичДанные = ПолучитьИзВременногоХранилища(пФайл);
лДвоичДанные.Записать(лФайл);

Соединение = ПоключитьсяКExcelСервер(Объект.ИмяФайла);
Если Соединение = Неопределено Тогда
Возврат;
КонецЕсли;
/// Обработка Excel
ОтключатьсяОтExcelСервер(Соединение);
КонецПроцедуры

&НаКлиенте
Процедура Загрузить2(Команда)
лДвоичДанные = Новый ДвоичныеДанные(Объект.ИмяФайла);
лФайл = ПоместитьВоВременноеХранилище(лДвоичДанные);
Загрузить2НаСервере(лФайл);
КонецПроцедуры

Очень часто приходится работать с очень большими  файлами Excel, и его обработка путем перебора строк занимает огромное количество времени. 

В таких случаех удобно в одно действие загрузить всю таблицу в массив и в потом работать уже непосредственно с  массивом.

Лист = Соединение["Листы"][0];

ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;

Область = Лист.Range(ЛистЭксель.Cells(1,1), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок));
Данные = Область.Value.Выгрузить();

На выходе получаем двумерный массив, который содержит все данные указанного листа Excel

Полезные функции при работе с Excel:

 Устанавливает видимость Excel при работе
//0 - Excel не виден, 1 - виден.
Соединение.Visible = Видимость;
 Добавление новой книги в файл Excel
Книга = Соединение.WorkBooks.Add();
 Сохранение книги Excel
Книга.SaveAs(ИмяФайла);
 Добавление нового листа к книге
Лист = Книга.WorkSheets.Add();
 Переименование листа
Лист.Name = ИмяЛиста;
 Изменение маштаба листа
//"Масштаб" (от 10 до 400).
Лист.PageSetup.Zoom = Масштаб;
 Изменение ориентации листа
//1 - книжная, 2 - альбомная.
Лист.PageSetup.Orientation = Ориентация;
 Отступы листа
//Левый отступ
Лист.PageSetup.LeftMargin = Соединение.CentimetersToPoints(Сантиметры);
//Верхний отступ
Лист.PageSetup.TopMargin = Соединение.CentimetersToPoints(Сантиметры);
//Правый отступ
Лист.PageSetup.RightMargin = Соединение.CentimetersToPoints(Сантиметры);
//Нижний отступ
Лист.PageSetup.BottomMargin = Соединение.CentimetersToPoints(Сантиметры);
Обращение к ячейки
чтение/запись 
//Прочитать значение ячейки
//Сч = Номер строки
//Сч2 = Номер колонки
Данные = Лист.Cells(Сч,Сч2).Value

//Записать значение в ячейку
Лист.Cells(Сч,Сч2).Value =  Данные
Обращение к области ячеек
//В качестве параметров передаем ячейки по диогонали
Лист.Range(ЛистЭксель.Cells(1,1),ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок))
Очень часто при чтении или записи значений в Excel ставятся лишние пробелы в числе, например, вместо 1502 он читает как 1 502 и в дальнейшем это значение не приводится к числу. Эту проблему можно решить заменой.
ЗначениеЯчейки = Лист.Cells(1,3).Value;
СтрЗаменить(Строка(ЗначениеЯчейки),Символы.НПП,"");
Объединение ячеек
Лист.Range(Лист.Cells(1,1),Лист.Cells(10,1)).Merge(); 
 
Работа с именованными ячейками в Excel
Обл = Лист.Range("Имя_Ячейки_В_Excel").Select();
Обл.Value = "Присваиваем значение";
 
Удаление ячейки 
Лист.Cells(1,3).Delete();
Удаление области ячеек
Лист.Range(Лист.Cells(1,1),Лист.Cells(10,1)).Delete();
 Обращение к строке
//Сч = Номер строки
Лист.Rows(Сч)
 Изменение ширины колонки
Лист.Columns(НомерКолонки).ColumnWidth = Ширина;
 Обращение к колонке
//Сч = Номер Колонки
Лист.Cols(Сч)
 Удаление Строки
Лист.Rows(Сч).Delete()
 Фон ячейки / области / Строки /  
//Фон Ячейки
Лист.Cells(1,1).Interior.Color = ПолучитьЦветExcelRGB(10,10,10);

//Фон Области
Лист.Range(Лист.Cells(1,1),Лист.Cells(10,1)).Interior.Color = ПолучитьЦветExcelRGB(10,10,10);

//Фон строки
Лист.Rows(Сч).Interior.Color = ПолучитьЦветExcelRGB(10,10,10);
 
 Функция переводит цвет из формата RGB в формат Excel
Функция ПолучитьЦветExcelRGB(R,G,B)
Возврат ((B*256) + G) * 256 + R;
КонецФункции
 Управление шрифтом в ячейки/строке/области
//Изменение шрифта
Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта;

//Изменение размера шрифтв
Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта;

//Управление жирностью шрифта
//1-жирный шрифт (bold)
//0-нормальный шрифт (normal)
Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный;

//Управление курсивом шрифта
//1-Курсив
//0-Нормальный
Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив;

//2 - Подчеркнутый шрифт
//1- нет
Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline = Подчеркнутый;
 Разрешает переносить по словам в ячейке
//1-Переносить
Лист.Cells(1, 1).WrapText = 1;
 Управление рамкой ячейки
//1 - Тонкая сплошная линия
Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle = ТипЛинии;
 Устанавливаем формат ячейки
//"@" - текстовый
//"0.00" - числовой
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат;
 Формула в ячейки 
Лист.Cells(Сч,Сч2).FormulaLocal = "=ОКРУГЛ(135,46456;0)";
 Формула в ячейки 
Лист.Cells(Сч,Сч2).FormulaLocal = "=ОКРУГЛ(135,46456;0)";
 Формула в ячейки 
Лист.Cells(Сч,Сч2).FormulaLocal = "=ОКРУГЛ(135,46456;0)";
 Формула в ячейки 
Лист.Cells(Сч,Сч2).FormulaLocal = "=ОКРУГЛ(135,46456;0)";
 Функция для получения ширины колонки Excel 
Спасибо пользователю goodwill
&НаКлиенте
Функция ПолучитьШиринуКолнкиЭксель(ПараметрШиринаВПикселях)

Если ПараметрШиринаВПикселях > 9 Тогда
ШиринаВСимволах = (ПараметрШиринаВПикселях/0.75-5)/7;
Иначе
ШиринаВСимволах = ПараметрШиринаВПикселях/9;
КонецЕсли;

Возврат ШиринаВСимволах;

КонецФункции

Лист.Columns("A").ColumnWidth = ПолучитьШиринуКолнкиЭксель(РазмерШиринаВПикселях);
 Разрешить перенос слов в ячейке  
Спасибо пользователю roofless
Лист.Cells(1, 1).WrapText = 1;
 Группировки данных на листе  
Спасибо пользователю dr-wit, ignor
1. Развернуть все группы (строки и колонки):
Excel.ActiveSheet.Outline.ShowLevels(3, 3);
2. Сернуть все группы (строки и колонки) до первого уровня:
Excel.ActiveSheet.Outline.ShowLevels(1, 1);
3. Вернуть глубину дерева
Лист.Rows(Инд).OutlineLevel

При работе с Excel мы оперируем столбцами как числом (Например, 1 столбец), а у Excel адресация столбцов производится с помощью символов. И когда нам нужно отредактировать формулу, то нам нужно номер столбца преобразовать в символ. В таких случаях вам пригодится эта функция.

Функция ПреобразоватьНомерСтолбцаВФорматExcel(Столбец)
стСтолбец = "";
А = Окр(Столбец/27,0);
В = Столбец - (А*26);
Если А>0 Тогда
стСтолбец = Символ(А+64);
КонецЕсли;
Если В>0 Тогда
стСтолбец = стСтолбец + Символ(В+64);
КонецЕсли;

Возврат стСтолбец;
КонецФункции

2. Работа с Excel через ТабличныйДокумент 1С

С помощью данного метода можно и загружать из Excel и выгружать в Excel. Но на мой взгляд этот метод идепально подходит когда вам необходимо посто сохранить информацию в Excel без дальнейшей манипуляции.

Итак, приступим: загрузка из Excel:

1. Загружаем файл Excel в табличный документ

//Файл - это файл Excel
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат Неопределено;
КонецПопытки;

 2. Производим манипуляции уже с ТабличнымДокументом

//Создадим ТЗ куда будем собирать инфу
Таб = Новый ТаблицаЗначений;
Таб.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("Строка"));
Таб.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число"));
Таб.Колонки.Добавить("Цена",Новый ОписаниеТипов("Число"));

//Определяем количество строк
КолСтр = ТабДок.ВысотаТаблицы;
Для Сч = 2 по КолСтр Цикл
Попытка
ТБ = Таб.Добавить();
//Обращаемся к ячейки и забираем данные
ТБ.Номенклатура = Строка(ТабДок.ПолучитьОбласть("R" + Формат(Сч, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст);
ТБ.Количество = Число(ТабДок.ПолучитьОбласть("R" + Формат(Сч, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст);
ТБ.Цена = Число(ТабДок.ПолучитьОбласть("R" + Формат(Сч, "ЧГ=0") + "C" + 3).ТекущаяОбласть.Текст);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось загрузить строку "+Строка(Сч);
Сообщение.Сообщить();
КонецПопытки;
КонецЦикла;

Давайте теперь разберем сохранение в Excel с помощью данного метода:

Тут все очень просто сначала мы формируем обычный Табличный документ и затем записываем его в Excel

//ТабДок - Табличный документ
ТабДок.Записать(Объект.ИмяФайла,ТипФайлаТабличногоДокумента.XLSX);

2. Работа с Excel ADODB

Выражаю особую благодарность коллеги Fragster за хороший комментарий

Данный метод позволяет работать с Excel через ODBC и имеет ряд преимуществ:

  1. Не требует установки самой Excel, необходима лишь установить ODBC.  Но как правило  он уже установлен. Это особенность позволяет работать на стороне сервера без дополнительных установок Excel.
  2. Позволяет работать с таблицой Excel как с БД и строить к ней запросы на T-SQL. Таким образом мы можем делать отборы еще на этапе чтения данных и другие преимущества что дает  Т-SQL. Что на мой взгляд огромный плюс.

Подключение к ADO

Функция СоединитьсяСADO(ИмяФайла)
//Поз = СтрНайти(ИмяФайла,"",НаправлениеПоиска.СКонца);
Поз = 0;
Найден = 1;
ТмпСтр = ИмяФайла;
Пока Найден <> 0 Цикл
Найден = Найти(ТмпСтр,"");
ТмпСтр = Прав(ТмпСтр,СтрДлина(ТмпСтр) - Найден);
Если Найден <> 0 Тогда
Поз = Найден;
КонецЕсли;
КонецЦикла;
Путь = Лев(ИмяФайла,Поз-1);

Данные = Новый Структура;
СтрокаСоединения = "
| Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+СокрЛП(ИмяФайла)+";
| Extended Properties=""Excel 12.0 Xml;HDR=YES""";
Соединение = Новый COMОбъект("ADODB.Connection");
Попытка
Соединение.Open(СтрокаСоединения);
Исключение
Сообщить ("Не возможно подключится к Microsoft Excel Driver!!!
|Возможно файл ["+ИмяФайла+"] открыт другим пользователем.");
Возврат Неопределено;
КонецПопытки;
Данные.Вставить("Соединение",Соединение);

Возврат Данные;
КонецФункции

Строка подключения зависит от версии ODBC. И вызывает наибольшие трудности при подключение поэтомя я рекомендую ее сгенерировать на сайте http://www.connectionstrings.com

Отключение от ADO

Процедура ОтключитьсяОтADO(Подключение)
Попытка
Подключение["Соединение"].Close();
Подключение = Неопределено;
Исключение
КонецПопытки;
КонецПроцедуры

Выполнение запроса

Функция ВыполнитьЗапросADO(ТекстЗапроса,Подключение)
Попытка
Записи = Новый COMОбъект("ADODB.Recordset");
Исключение
Сообщить ("Не удалось Создать к Microsoft Excel Driver!!!");
Возврат Неопределено;
КонецПопытки;
Попытка
Записи.Open(ТекстЗапроса, Подключение["Соединение"]);
Возврат Записи;
Исключение
Сообщить ("Проблемы с выполнением запроса");
КонецПопытки;
КонецФункции

Пример запроса:

//Сразу отбираем только не пустые номенклатуры
ТекстЗапроса = "SELECT * FROM [Лист1$] WHERE `Номенклатура`<>""""";

Запись в  Excel тоже производится в виде запроса:

ТекстЗапроса = "
|INSERT INTO [Лист1$] (`Номенклатура`,`Количество`,`Цена`,`Сумма`) VALUES ('"
+ТБ.Номенклатура+"','"+ТБ.Количество+"','"+ТБ.Цена+"','"+ТБ.Сумма+"')";

Хочу отметить что наименование полей производится по первой строке в таблице

ADODB предоставляет ряд объектов, с которыми мы работаем

ADODB.Connection
предназначен для соединения с ADO
Соединение = Новый COMОбъект("ADODB.Connection");
  ADOX.Table
для работы с таблицей
// Создаем таблицу и добавляем в неё два столбца
Table = Новый COMОбъект("ADOX.Table");
Table.Name = "Table";
Table.Columns.Append("Code");
Table.Columns.Append("Description");
ADODB.Command Для выполнения комманд на языке T-SQL
Комманды = Новый COMОбъект("ADODB.Command");
Комманды.ActiveConnection = Подключение["Соединение"];
Комманды.CommandType = 1;
Комманды.CommandText = ТекстЗапроса;
Комманды.Execute();

 ADODB.Recordset

Похож на ADODB.Command предназначен для выполнения запросов и обработки результата 

Записи = Новый COMОбъект("ADODB.Recordset");
Записи.Open(ТекстЗапроса, Подключение["Соединение"]);

В файле продемонстрированны оба варианта работы с запросами.

На этом пока все. По возможности буду дополнять статью 🙂

В архиве находится обработка, которая демонстрирует все описанные и другие возможности при работе с Excel.

И тренировочный файл Excel.

Понравилась статья? Поделить с друзьями:
  • 1с макеты печатных форм excel
  • 1с макет как шаблон word
  • 1с макет word на клиенте
  • 1с макет word колонтитулы
  • 1с макет word для печати