1с создать файл excel. Бухучет инфо. Подключение внешнего загрузчика

В 1С существует 2 способа работы с файлами MS Excel, через COM-объект и встроенными средствами 1С с помощью объекта табличный документ. Разберем оба эти способа поподробнее.

1. Работа через COM-объект.

Для этого способа необходим установленный MS Excel, притом если вы работаете с файлом на сервере, то соответственно MS Excel должен быть установлен на сервере, если на клиенте - то на клиентской стороне так же необходим MS Excel.

Пример (в конце статьи можно посмотреть в текстовом виде):

Надо заметить, что все объекты, методы и свойства, предоставляемые COM-объектом "Excel.Application" - это объекты, методы и свойства VBA, языка программирования MS Office.

Примечание:

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

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

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

Пример записи очень простой и не требует особого внимания:

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

Эту проблему можно решить 2 способами, 1 - в самой книге в настройках включить отображение листов (не все пользователи будут согласны это делать), 2 - сделать это через COM-объект (нам опять нужен установленный MS Excel).

После этого небольшого дополнения, в файле MS Excel будут видны ярлыки листов.

Чтение же MS Excel не настолько простая задача, поскольку метод прочитать доступен только на сервере или толстом клиенте. Для этого нам необходимо передать файл MS Excel на сервер.

&НаКлиенте

Процедура СозданиеДокумента()

Исключение

КонецПопытки;

Книга = Эксель.WorkBooks.Add(); //Создаем новую книгу MS Excel

Лист = Книга.WorkSheets.Add(); //Добавляем лист

Лист.Name = "Пример из 1С"; //Задаем имя листа

Лист.Cells (1,1).Value = "Давайте создадим формулу";

Лист.Cells (2,1).Value = 1;

Лист.Cells (2,2).Value = 2;

Лист.Cells (2,3).Formula = "=A2+B2";

Лист.Cells (3,1).Value = ТекущаяДата();

Книга.SaveAs("C:\1\Test.xlsx");

Книга.Close();

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

&НаСервере

Функция ПолучитьМакетСервер()

Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("ШаблонНаВыгрузку"); //Таким образом мы получаем макет внешней обработки;

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

&НаКлиенте

Процедура Работа()

Эксель = Новый COMОбъект("Excel.Application");

Исключение

Сообщить("Неудачная попытка подключения компоненты Excel. Возможно, программа Excel не установлена на данном компьютере!");

КонецПопытки;

Макет = ПолучитьМакетСервер();

Макет.Записать(ИмяВременногоФайла);

У вас есть вопрос, нужна помощь консультанта?

Книга = Эксель.WorkBooks.Open(ИмяВременногоФайла);

ЛистШаблона = Книга.WorkSheets(1);

ЛистШаблона.Cells (6,1).Value = "Дата:";

ЛистШаблона.Cells (6,2).Value = ТекущаяДата();

ЛистШаблона.NumberFormat = "dd/mm/yy;@"; // Дадим формат даты, этот формат получен записью макроса в MS Excel

ЛистШаблона.Columns("B:B").EntireColumn.AutoFit; // Растянем колонку, чтобы дата точно помещалась

Книга.SaveAs(ИмяФайла);

Книга.Close();

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

&НаКлиенте

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

&НаКлиенте

Процедура ЗаписатьТабличныйДокумент()

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

ТабличныйДокумент.Область("R1C1").Текст = "Пример записи в MS Excel из 1С";

ТабличныйДокумент.Записать("C:\1\Test2.xls",ТипФайлаТабличногоДокумента.XLSX);

Excel = Новый COMОбъект("Excel.Application");

Excel.WorkBooks.Open("C:\1\Test2.xls");

Excel.Visible = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0.6;

Excel.ActiveWorkbook.Save();

Excel.Application.Quit()

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

ДвоичныеДанные = Новый ДвоичныеДанные("C:\1\test2.xlsx");

Адрес=ПоместитьВоВременноеХранилище(ДвоичныеДанные,ЭтаФорма.УникальныйИдентификатор) ;

ТабличныйДокумент = ЗагрузитьНаСервере(Адрес);

ТабличныйДокумент.Показать();

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

&НаСервере

Функция ЗагрузитьНаСервере(Адрес)

ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");

ДанныеФайла = ПолучитьИзВременногоХранилища(Адрес);

ДанныеФайла.Записать(ИмяВременногоФайла);

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

Возврат ТабличныйДокумент;

Конфигурация: 1С:Бухгалтерия

Версия конфигурации: 3.0.44.177

Дата публикации: 20.01.2017

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

Загрузка из Excel 1С:Бухгалтерия 8.3 ред. 3.0

К примеру мы имеем вот такой табличный документ Excel для загрузки списка номенклатуры и цены(розничной и закупочной).

Заходи в .

В верхней части нажимаем Номенклатура и Цены - Загрузить . Именно в этом спрятана загрузка и выгрузка из табличных документов.

Загрузка поддерживает форматы xls(старый формат Excel 97-2003) и xlsx(новый формат), а так же mxl и ods форматы. Теперь выбираем наш файл с номенклатурой и ждем загрузки.

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

Нажимаем на Укажите реквизит и выбираем нужный пункт из списка.

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

Теперь удаляем столбец с закупочной ценой, обратите внимание, что обработка умеет за 1н раз заполнять только 1н вид цены!!! Потом вы можете проделать эту операцию снова и загрузить 2й вид цены, за 1ю загрузку Розничную за 2ю закупочную.

Заполняем не заполненные данные, Тип цены, Установить цены на. Кнопки Все, Найденные, Новые, Дубли существенно облегчат поиск и помогут сопоставить номенклатуру. Заполняем и нажимаем Загрузить после чего данные будут загружены в 1С:Бухгалтерия.

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

Как видите, загрузка создала 2 документа установка цен номенклатуры, для Закупочной цены и для Розничной. Отличие этой обработки по Загрузке из Excel в 1С:Бухгалтерия 8.3, в том что это штатная обработка и она работает без сбоев и учитывая все особенности заполнения документа.

Выгрузка в Excel из 1С:Бухгалтерия 8.3 ред. 3.0

Очень полезной функцией в редакции 3.0.44.177 и выше является выгрузка в Excel из 1С:Бухгалтерия 8.3, эта обработка поможет вам сформировать прайс-лист компании или передать поставщикам или покупателям свой список номенклатуры сразу с ценами.

Все там же в справочнике Номенклатура - Номенклатура и Цены - Выгрузить .

В пункте Колонки , выбираем те колонки которые надо построить в документе Excel. Отбор служит для отбора номенклатуры по Группам, свойствам, названиям... итд.

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

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

Как открыть документы Excel в 1С и наоборот

Табличный редактор компании Майкрософт Excel по полноте функционала превосходит бухгалтерские программные продукты 1С. Поэтому пользователи 1С предпочитают часть операций выполнять в табличном редакторе, а затем возвращать данные в бухгалтерскую программу. И это неудивительно, ведь прежде бухгалтерия многих компаний велась исключительно при помощи программ Майкрософта. Но при современном уровне автоматизации бизнесс-процессов предприятий отказаться от специализированных программ невозможно. Чтобы наладить взаимодействие между разными приложениями, есть следующие простые способы:

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

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

    Пользователи 1С 7.7 могут обновиться до версии 1С 8, которая обладает улучшенным редактором таблиц.

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

Взаимодействие между 1С и Excel может осуществляться на программном уровне при помощи технологии OLE Automation, разработанной компанией Майкрософт. Она позволяет обращаться непосредственно к COM-объектам из скриптовых интерпретаторов разных программ. Проще говоря, OLE позволяет передавать часть работы из одной программы в другую, а затем возвращать сделанное в исходное приложение. Это как раз то, что требуется бухгалтерам от редактора таблиц Майкрософта.

Для того, чтобы использовать средства OLE, не нужно быть программистом. Хотя первое знакомство со строками кода будет сопровождаться ошибками, проверка поможет их выявить, а полученный опыт - избежать в дальнейшем. Ниже приводятся самые востребованные команды (их называют листинги) для работы с экселевскими данными в бухгалтерских программах и наоборот.

Как открыть экселевский файл в 1С программно

Итак, если на вашем компьютере установлены обе программы, между которыми вы хотите наладить обмен данными, то можно организовать взаимодействие программно. Для этого нужно запустить оба приложения, а затем при помощи OLE установить доступ из 1С к Excel:

  • Исключение

    Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");

  • КонецПопытки.

Доступ к табличному редактору установлен, теперь при помощи последующих команд нужно получить доступ к:

    конкретному документу:

    • Книга = Эксель.WorkBooks.Open(ПутьКФайлу)

    • Лист = Книга.WorkSheets(НомерЛиста);

  • в том числе с конкретным номером листа:

    в том числе с конкретным именем листа:

    • Лист = Книга.WorkSheets(ИмяЛиста);

    • Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;

Для чтения данных с первой страницы файла используйте следующие листинги:

    Эксель = СоздатьОбъект("Excel.Application");

    Книга = Эксель.WorkBooks.Open(ПутьКФайлу);

    Лист = Книга.WorkSheets(1);

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

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

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

    • Для Колонка = 1 По ВсегоКолонок Цикл

      Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value);

      КонецЦикла;

    КонецЦикла;

Помните, прописывать путь к файлу следует полностью. В имя документа при сохранении нельзя включать такие символы, как \, /, :, *, ?, ", >, < и |.

Как открыть файл 1С через Excel программно

Для записи данных в Excel необходимо:

    либо открыть существующий документ:

    • Книга = Эксель.WorkBooks.Open(ПутьКФайлу) - по аналогии с чтением экселевского файла из 1С;

    либо добавить новый:

    • Книга = Excel.WorkBooks.Add();

    в новом документе можно создать новый лист:

    • Лист = Книга.Sheets.Add();

    и добавить в ячейку новое значение:

    • Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение; (способы записи значений при помощи OLE подробно описаны в интернете).

  • Книга.SaveAs(ПутьКФайлу);

    Исключение

    Сообщить(ОписаниеОшибки()+" Файл не сохранен!");

    КонецПопытки.

Закончив работу с табличным редактором, выходите при помощи специальной команды (Эксель.Application.Quit();). Этот способ поможет сберечь ресурсы компьютера при дальнейшей работе.

Опасности при обмене данными между 1С и Excel

1С и Excel были разработаны разными компаниями и используют различные способы обращения с данными. Поэтому при переносе таблиц из одной программы в другую помните о следующих "подводных камнях":

    Различные разделители в дробных числах. Майкрософт разделяет цифры в десятичных дробях при помощи запятой. Поэтому при переносе таблиц из бухгалтерской программы не удивляйтесь обилию дат и прочей неразберихе. Просто в бухгалтерской программе в записи дробей может использоваться точка, которую редактор таблиц Майкрософта будет интерпретировать как разделитель даты, и 15.5 превратится в 15-ое мая. Чтобы обрабатывать бухгалтерские данные в табличном редакторе, разделитель придется заменить на запятую.

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

Если вам нужно наладить обмен большими объемами данных либо не удается избавиться от ошибок, обращайтесь за помощью к профессионалам компании "Сетби". Мы поможем решить ваши задачи на программном уровне и разобраться с необходимыми для вашей работы командами.

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

Производить перенос данных из Excel в 1С требуется не только на начальном периоде работы с данной программой. Иногда наступает необходимость подобного, когда по ходу деятельности нужно занести какие-то списки, хранящиеся в книге табличного процессора. Например, если требуется перенести прайс-листы или заказы из онлайн-магазина. В случае, когда списки небольшие, то их можно вбить и вручную, но что делать, если они содержат сотни наименований? Для того, чтобы ускорить процедуру, можно прибегнуть к некоторым дополнительным возможностям.

Для автоматической загрузки подойдут практически все типы документов:

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

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

Подготовка данных

Нам нужно будет подготовить данные в самой таблице Excel.


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

Подключение внешнего загрузчика

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

Существует несколько внешних загрузчиков таблиц Эксель для 1С, которые созданы различными разработчиками. Рассматривать мы будем пример с использованием инструмента для обработки информации «Загрузка данных из табличного документа» для версии 1С 8.3.


Одной из основных баз данных, с которыми работает 1C, является список номенклатуры товаров и услуг. Поэтому для описания процедуры загрузки из Excel остановимся на примере переноса именно этого типа данных.

  1. Возвращаемся к окну обработки. Так как мы будем загружать номенклатуру товаров, то в параметре переключатель должен стоять в позиции «Справочник» . Впрочем, он так установлен по умолчанию. Переключать его следует только тогда, когда вы собрались переносить другой тип данных: табличную часть или регистр сведений. Далее в поле «Вид справочника» кликаем по кнопке, на которой изображено многоточие. Открывается выпадающий список. В нем нам следует выбрать пункт «Номенклатура» .
  2. После этого обработчик автоматически расставляет те поля, которые программа использует в этом виде справочника. Нужно сразу отметить, что совсем не обязательно заполнять все поля.
  3. Теперь опять открываем переносимый документ Excel. Если наименование его колонок отличается от наименования полей справочника 1С, которые содержат соответствующие, то нужно переименовать эти столбцы в Экселе так, чтобы названия полностью совпадали. Если в таблице имеются столбцы, для которых в справочнике нет аналогов, то их следует удалить. В нашем случае такими столбцами являются «Количество» и «Цена» . Также следует добавить, что порядок расстановки столбцов в документе должен строго совпадать с тем, который представлен в обработке. Если для некоторых столбцов, которые отображены в загрузчике, у вас нет данных, то эти колонки можно оставлять пустыми, но нумерация тех столбцов, где имеются данные, должна совпадать. Для удобства и быстроты редактирования можно применять специальную возможность Эксель для быстрого перемещения колонок местами.

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

  4. Возвращаемся в окно обработки 1С. Жмем на кнопку «Открыть» , которая изображена в виде папки желтого цвета.
  5. Запускается окно открытия файла. Переходим в директорию, где расположен документ Эксель, который нам нужен. Переключатель отображения файлов по умолчанию установлен для расширения mxl . Для того чтобы показать нужный нам файл, его требуется переставить в позицию «Лист Excel» . После этого выделяем переносимый документ и жмем на кнопку «Открыть» .
  6. После этого содержимое открывается в обработчике. Чтобы проверить корректность заполнения данными, жмем на кнопку «Контроль заполнения» .
  7. Как видим, инструмент контроля заполнения сообщает нам, что ошибки не найдены.
  8. Теперь перемещаемся во вкладку «Настройка» . В «Поле поиска» ставим галочку в той строке, которая у всех наименований, заносимых в справочник номенклатуры, будет уникальная. Чаще всего для этого используют поля «Артикул» или «Наименование» . Это нужно делать для того, чтобы при добавлении новых позиций в список, данные не задваивались.
  9. После того, как все данные внесены и настройки выполнены, можно переходить к непосредственной загрузке информации в справочник. Для этого кликаем по надписи «Загрузить данные» .
  10. Выполняется процесс загрузки. После её завершения можно перейти в справочник номенклатуры и убедиться, что все нужные данные туда добавлены.

Мы проследили процедуру добавления данных в справочник номенклатуры в программе 1C 8.3. Для других справочников и документов загрузка будет проводиться по тому же принципу, но с некоторыми нюансами, с которыми пользователь сможет разобраться самостоятельно. Также нужно заметить, что у различных сторонних загрузчиков процедура может отличаться, но общий подход остается у всех одинаковый: сначала обработчик загружает из файла информацию в окно, где производится её редактирование, а уже потом она добавляется непосредственно в базу данных 1С.