1С сохранить отчет в Excel программно

Logo_1c_8_RazradotkaВ данной статье приведены экземпляры кода на языке 1С, которые позволяют подключаться к базе данных на SQL-сервере, получать из нее данные, а также записывать новые и обновлять существующие записи в таблицах этой базы данных. Код протестирован на платформе 8.3.5, а также на версиях SQL Server 2008 R2 и SQL Server 2012. Операционная система Windows Server 2008 и Windows Server 2012. Есть предположение, что указанный код будет работать и на других версиях 1С, SQL и Windows.

  1. Постановка задачи
  2. Подключение к SQL-серверу
  3. Добавление записей в таблицу
  4. Обновление записей в таблице
  5. Просмотр выборки из таблицы
  6. Удаление записей из таблицы
  7. Закрытие соединения
  8. Общий текст процедуры

Содержание

1. Постановка задачи

Итак, имеется SQL-сервер с адресом WIN2012\TEST_SQL. Для подключения используется имя входа SQL-сервера UserDB с паролем Pass123456.

podkly-k-sql-iz-1s_004

На сервере размещена база данных с именем TestDB. В базе имеется таблица с именем Table_1, в которой 3 столбца:

  • C_DateTime, с типом datetime
  • C_Char, с типом char(50)
  • C_Numeric, с типом numeric(18,0)

podkly-k-sql-iz-1s_001

Изначально таблица пустая:

podkly-k-sql-iz-1s_002

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

podkly-k-sql-iz-1s_003

Требуется научиться записывать в базу данных и читать из базы данных из 1С при помощи прямых запросов к SQL-серверу.

2. Подключение к SQL-серверу

Весь приведенный ниже код может работать как на клиенте, так и на сервере. Главное чтобы был доступен COM-объект «ADODB» (подробнее о данной библиотеке можно прочитать, например, ). Также с клиента (или с сервера, смотря где выполняется код) должен быть доступен указанный SQL-сервер (настроено правило в Брандмауере для возможности внешнего подключения). Код приводится совсем простой, для понимания с чего вообще начинать разработчику, который раньше с этим не сталкивался.

Итак, для подключения необходимо создать COM-объект «ADODB». Для этого выполняется код 1С:

&НаКлиентеПроцедура ВыполнитьОбработку(Команда) //Инициализация переменных ИмяСервераSQL = "WIN2012\TEST_SQL"; ПользовательSQL = "UserDB"; ПарольSQL = "Pass123456"; БазаДанныхSQL = "TestDB"; ТаблицаSQL = "Table_1"; ///////////////////////////////////////// //Подключение к SQL-серверу Попытка Соединение = Новый COMОбъект("ADODB.Connection"); Команда = Новый COMОбъект("ADODB.Command"); Выборка = Новый COMОбъект("ADODB.RecordSet"); Соединение.ConnectionString = "driver={SQL Server};" + "server="+ИмяСервераSQL+";"+ "uid="+ПользовательSQL+";"+ "pwd="+ПарольSQL+";"+ "database="+БазаДанныхSQL+";"; Соединение.ConnectionTimeout = 30; Соединение.CommandTimeout = 600; //Открытие соединение Соединение.Open(); Команда.ActiveConnection = Соединение; Сообщить("Успешное подключение!"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки;КонецПроцедуры

Результат работы в 1С:Предприятии:

podkly-k-sql-iz-1s_005

Теперь, в общем то, можно выполнять любой запрос SQL через данный COM-объект. Посмотрим как это делать на самых распространенных примерах.

3. Добавление записей в таблицу

Теперь добавим новую строку в нашу пока еще пустую таблицу. Для этого необходимо выполнить код:

 ///////////////////////////////////////// //Добавляем запись в таблицу ТекДата = ТекущаяДата(); ТекСтрока = "Запись строки"; ТекЧисло = 123456; //Приобразуем данные Если НЕ ЗначениеЗаполнено(ТекДата) Тогда //Для пустой даты необходимо отправлять 01.01.1753 ТекДата = Дата(1753,1,1); КонецЕсли; ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы ТекстТекущейИнструкции = "INSERT INTO "+ТаблицаSQL+" |(, , ) |VALUES ('"+ТекДата+"', N'"+ТекСтрока+"', '"+ТекЧисло+"')"; Попытка Соединение.Execute(ТекстТекущейИнструкции,,128); Сообщить("Запись добавлена!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки;

Смотрим результат и видим, что строка появилась в таблице:

podkly-k-sql-iz-1s_006

4. Обновление записей в таблице

Теперь попробуем обновить все записи в таблице со значением C_Numeric=123456. Для этого выполняем код:

 ///////////////////////////////////////// //Обновляем записи в таблице с C_Numeric = 123456 ТекЧисло = 123456; ТекДатаНовая = Дата(1,1,1); ТекСтрокаНовая = "Обновленная запись строки"; //Приобразуем данные Если НЕ ЗначениеЗаполнено(ТекДатаНовая) Тогда //Для пустой даты необходимо отправлять 01.01.1753 ТекДатаНовая = Дата(1753,1,1); КонецЕсли; ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы ТекстТекущейИнструкции = "UPDATE "+ТаблицаSQL+" |SET |  = N'"+ТекСтрокаНовая+"', |  = '"+ТекДатаНовая+"' |WHERE ='"+ТекЧисло+"'"; Попытка Соединение.Execute(ТекстТекущейИнструкции,,128); Сообщить("Запись обновлена!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки;

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

podkly-k-sql-iz-1s_007

5. Просмотр выборки из таблицы

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

 ///////////////////////////////////////// //Читаем записи ТекстИнструкции = "SELECT | , ,  |FROM "+ТаблицаSQL; Попытка Команда.CommandText = ТекстИнструкции; Выборка = Команда.Execute(); Если Выборка.BOF = Ложь Тогда Выборка.MoveFirst(); Пока Выборка.EOF = Ложь Цикл Сообщить("="+Дата(Выборка.Fields("C_DateTime").Value) +", ="+СокрЛП(Выборка.Fields("C_Char").Value) +", ="+Число(Выборка.Fields("C_Numeric").Value)); Выборка.MoveNext(); КонецЦикла; КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки;

Результат в предприятии:

podkly-k-sql-iz-1s_008

6. Удаление записей из таблицы

Для удаления всех записей в таблице со значением C_Numeric=123456 выполняем код:

 ///////////////////////////////////////// //Удаляем записи в таблице с C_Numeric = 123456 ТекЧисло = 123456; ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы ТекстТекущейИнструкции = "DELETE FROM "+ТаблицаSQL+" |WHERE ='"+ТекЧисло+"'"; Попытка Соединение.Execute(ТекстТекущейИнструкции,,128); Сообщить("Запись удалена!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки;

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

podkly-k-sql-iz-1s_009

7. Закрытие соединения

Ну и после выполнения всех необходимых действий необходимо закрыть соединение с SQL-сервером. Для этого достаточно вызвать метод Close() созданного COM-объекта:

 ///////////////////////////////////////// //Закрытия соединения Попытка Соединение.Close(); Сообщить("Соединение закрыто!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки;

8. Общий текст процедуры

Общий текст всей процедуры получился следующий:

&НаКлиентеПроцедура ВыполнитьОбработку(Команда) //Инициализация переменных ИмяСервераSQL = "WIN2012\TEST_SQL"; ПользовательSQL = "UserDB"; ПарольSQL = "Pass123456"; БазаДанныхSQL = "TestDB"; ТаблицаSQL = "Table_1"; ///////////////////////////////////////// //Подключение к SQL-серверу Попытка Соединение = Новый COMОбъект("ADODB.Connection"); Команда = Новый COMОбъект("ADODB.Command"); Выборка = Новый COMОбъект("ADODB.RecordSet"); Соединение.ConnectionString = "driver={SQL Server};" + "server="+ИмяСервераSQL+";"+ "uid="+ПользовательSQL+";"+ "pwd="+ПарольSQL+";"+ "database="+БазаДанныхSQL+";"; Соединение.ConnectionTimeout = 30; Соединение.CommandTimeout = 600; //Открытие соединение Соединение.Open(); Команда.ActiveConnection = Соединение; Сообщить("Успешное подключение!"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; ///////////////////////////////////////// //Добавляем запись в таблицу ТекДата = ТекущаяДата(); ТекСтрока = "Запись строки"; ТекЧисло = 123456; //Приобразуем данные Если НЕ ЗначениеЗаполнено(ТекДата) Тогда //Для пустой даты необходимо отправлять 01.01.1753 ТекДата = Дата(1753,1,1); КонецЕсли; ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы ТекстТекущейИнструкции = "INSERT INTO "+ТаблицаSQL+" |(, , ) |VALUES ('"+ТекДата+"', N'"+ТекСтрока+"', '"+ТекЧисло+"')"; Попытка Соединение.Execute(ТекстТекущейИнструкции,,128); Сообщить("Запись добавлена!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ///////////////////////////////////////// //Обновляем записи в таблице с C_Numeric = 123456 ТекЧисло = 123456; ТекДатаНовая = Дата(1,1,1); ТекСтрокаНовая = "Обновленная запись строки"; //Приобразуем данные Если НЕ ЗначениеЗаполнено(ТекДатаНовая) Тогда //Для пустой даты необходимо отправлять 01.01.1753 ТекДатаНовая = Дата(1753,1,1); КонецЕсли; ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы ТекстТекущейИнструкции = "UPDATE "+ТаблицаSQL+" |SET |  = N'"+ТекСтрокаНовая+"', |  = '"+ТекДатаНовая+"' |WHERE ='"+ТекЧисло+"'"; Попытка Соединение.Execute(ТекстТекущейИнструкции,,128); Сообщить("Запись обновлена!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ///////////////////////////////////////// //Читаем записи ТекстИнструкции = "SELECT | , ,  |FROM "+ТаблицаSQL; Попытка Команда.CommandText = ТекстИнструкции; Выборка = Команда.Execute(); Если Выборка.BOF = Ложь Тогда Выборка.MoveFirst(); Пока Выборка.EOF = Ложь Цикл Сообщить("="+Дата(Выборка.Fields("C_DateTime").Value) +", ="+СокрЛП(Выборка.Fields("C_Char").Value) +", ="+Число(Выборка.Fields("C_Numeric").Value)); Выборка.MoveNext(); КонецЦикла; КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ///////////////////////////////////////// //Удаляем записи в таблице с C_Numeric = 123456 ТекЧисло = 123456; ТекЧисло = Формат(ТекЧисло,"ЧГ="); //Удаляем пробелы ТекстТекущейИнструкции = "DELETE FROM "+ТаблицаSQL+" |WHERE ='"+ТекЧисло+"'"; Попытка Соединение.Execute(ТекстТекущейИнструкции,,128); Сообщить("Запись удалена!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ///////////////////////////////////////// //Закрытия соединения Попытка Соединение.Close(); Сообщить("Соединение закрыто!"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки;КонецПроцедуры

Результат работы в 1С:Предприятии:

podkly-k-sql-iz-1s_010

Помогла ли вам данная статья?

Цитата(twilight_dream @ 02.07.14, 9:29) *
Можно через ком, примеров полно. Если нужен только один лист, я обычно вывожу в отчет (таблица), а потом вызываю метод таблицы Записать(<ИмяФайла>,<ТипФайла>)

Если я правильно понял, необходимо сформировать несколько отчетов и сохранить их в одной книге Ексель разместив каждый из них на разные листы. Если речь идет об этом — то штатными средствами 1 С никак.
По-поводу применения в таком случае метода СоздатьОбъект(«Excel.Application»), считаю нецелесообразным поскольку время такого выполнения будет зависить от размеров самого отчета, а тем более когда речь будет идти о добавлении листов, которых может быть немеряное количество, врямя выполнения затянется на минуты, если не на десятки. Прекрастно, можно даже сказать «потрясающе» с потобной задачей справится внешняя компонента «Йоксель», пример сохранения можеш взять здесь: (там же находится сама компонента). Добаления листов Йоксель также решает:
Добавить (ИмяЛиста, Документ);
Синтаксис:
Добавить (ИмяЛиста,Документ)
Назначение:
Добавляет лист в книгу Excel.
Параметры:
ИмяЛиста
Название листа (будет отображаться на ярлычке листа в Excel). Не может превышать в длину 30 символов. Имя каждого листа должно быть уникально в пределах книги. При попытке добавить лист с именем уже существующего листа будет выдана ошибка. Проверка имени происходит без учета регистра символов.
Документ
Объект типа ТабличныйДокумент.
Создание такой обрабатки много времени не займет, а если через Excel.Application то там уже нужно и мозговать, и написание займет кучу времени.

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

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

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

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

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

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

Внимание!

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

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

ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.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 char(255), Колонка2 date, Колонка3 int, Колонка4 float)»;
Команда.Execute(); // Выполнение команды

// Присвоение текста команды для добавления строки таблицы
Команда.CommandText = «INSERT INTO (Колонка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 «;

// Выполнение запроса
Выборка.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. Сохранить табличный документ в требуемый формат.

Почти каждому офисному работнику нужно знать, как выгружать из 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.

Как сделать выгрузку клиентов или отчетов из 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) из любых папок, что требуется сделать, чтобы получилось сохранить их в виде таблицы или книги. Изучили, как правильно переносить печатные формы, какие комбинации клавиш для этого необходимы и без чего не обойтись. Есть разные способы транслировать цифры и строчки в табличное пространство. Достаточно попробовать сделать один раз и запомнить, чтобы потом свободно повторять те же действия.

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

Добавить комментарий