В 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С». Все потому что некоторые по-прежнему ассоциируют данное решение лишь с программами для бухгалтера, что является неправдой.

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

Хорошо, если Вы только начинаете свой бизнес, постепенно учитывая необходимые данные в таблице по взаимоотношениям с клиентами, поставщиками, контролирующими органами, выстраивая свою произвольную структуру, но как быть дальше, когда база данных станет объемной, а штат сотрудников будет исчисляться десятками? Все так же считать по собственным параметрам? Я за то, чтобы не путать удобство с привычкой, которая зачастую мешает систематизации бизнеса, а следственно - его оптимизации.

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

1. Анализ продаж в рамках определенного периода.

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

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

3. Ведение базы контрагентов.
Даже если собственник продает лишь то, что можно купить здесь и сейчас, что характерно для сектора B2C, то с базой поставщиков у него немного другие отношения – договора, первичка... Представьте, насколько это удобно, когда все, что связано с поставщиком автоматически сразу отображается в единой базе? Менеджер, отвечающий за склад, сразу видит наличие товара на складе, другой сотрудник, ответственный за документы, мониторит информацию по их наличию, исполняются ли все обязательства по договорным отношениям, кто и сколько кому должен. А в случае расхождений можно сверить данные за определенный период, сформировав результат менее чем за минуту.

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

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

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

Про «1С» такого сказать не могу, поскольку там вся информация структурирована и взаимосвязана:

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

В защиту «Excel»

Наверное, Вам показалось, что я против построения данных в «зеленых» таблицах. Отнюдь. На самом деле я сам частенько веду некоторые дела в «Excel»: если мне нужны произвольные вычисления, если мне необходимо сегментировать данные по клиентам, проводя аналитику по тем параметрам, которых нет в «1С» - да, такое бывает – я иду в «Excel». Проще говоря, в таблицах я занимаюсь вычислениями, нестандартным анализом, но систематизирую все потом все равно в «1С».

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

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


Что в итоге – «1С» или «Excel»?

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

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

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

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

  • При выполнении обменом информацией между контрагентами (прайс-листы, акты сверки и т.д.);
  • Для облегчения работы операторов в случаях, когда основной учет ведется в 1С, а некоторая его часть выполняется в таблицах Excel;
  • При первичном заполнении базы данных.

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

Универсальный механизм

На дисках ИТС, а также на портале 1С, зайдя в меню «Технологическая поддержка» -> «Универсальные отчеты и обработки», в папке «Загрузка данных из табличного документа» находится соответствующая обработка.

При ее запуске открывается форма (Рис.1):

Как видно из формы, она позволяет выполнять перенос информации в следующие объекты конфигурации:

  1. Справочник;
  2. Табличную часть документа или справочника;
  3. Регистр сведений.

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

Табличная форма обработки заполняется при открытии загружаемого файла.

Типовая обработка поддерживает выгрузки из:

  • Разработанного специалистами фирмы 1С, файлов формата mxl;
  • Листа xls, сохраненного в формате Excel 97-2003;
  • Текстового файла txt;
  • Таблицы dbf.

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

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

Теперь перейдем к закладке «Настройка» (Рис.2):

Рис.2

Достаточно часто экселевские таблицы содержат шапку со всевозможными реквизитами и данными (наименование печатной формы, реквизиты контрагента, дату и номер входящего документа, имена колонок и так далее), чтобы исключить их обработку программой на форме, в реквизите «Первая строка табличного документа» надо указать первую строку с переносимой информацией

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

Колонки «Настройки»

Пометка – установкой или снятием флажка в строке определяется, будет ли заполняться соответствующий реквизит.

Представление реквизита – здесь прописывается синоним (наименование) реквизита метаданных, как оно задано в конфигураторе.

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

Описание типов – отображает тип данных, который имеет тот или иной реквизит метаданных.

Режим загрузки – предлагает три варианта на выбор (Рис.3):

Рис.3

  • Искать – будет осуществляться поиск соответствующего элемента, в случае его отсутствия может быть создан новый;
  • Устанавливать – подчиненным образом устанавливается определенное значение;
  • Вычислять – в этом случае в поле создаваемого элемента будет установлен результат вычисления выражения, указанного в колонке «Условие связи/Выражение для значения».

В последнем случае, активация поля Выражение вызовет открытие формы (Рис.4).

Рис.4

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

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

Условие связи/Выражение для значения – частично мы уже коснулись этого поля, когда рассматривали вычисляемые поля, дополнительно в нем можно указать условие, в соответствии с которым будут синхронизированы исходные данные.

Вот, в принципе и вся информация, которая доступна на закладке «Настройка».

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

Проверить корректность переносимых данных можно нажатием на кнопку «Контроль заполнения» (Рис.1). После этого можно запускать процесс загрузки. Об успешном выполнении процедуры или нестандартных ситуациях Вы будете оповещены отдельно.

Для загрузки данных из Экселя в информационных базах «Управление и торговля» существует еще один механизм. Он менее универсален, чем приведенный выше способ, однако не требует подписки ИТС и содержится в типовой поставке.

Эту обработку можно найти на закладке «Закупки» , в меню «Сервис», она носит наименование «Загрузка цен поставщика из файлов»(Рис.5)

Рис.5

Форма обработки содержит:

  1. Поле выбора даты, которая будет указывать, на какое время актуальна данная цена;
  2. Поле выбора контрагента, который прислал свой прайс-лист;
  3. Кнопку, позволяющую выбрать тип устанавливаемых цен;
  4. Табличную часть, которую можно заполнить загружаемыми данными.

Эту форму можно увидеть на Рис.6

Рис.6

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

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

При работе через веб-интерфейс, в некоторых браузерах может потребоваться установка браузерного дополнения (Рис.7). Нам надо нажать кнопку «Начать установку» и перезапустить наше подключение.

Рис.7

После этого мы, используя буфер обмена, сможем переносить информацию из одной таблицы в другую. Когда необходимые нам колонки («Артикул», «Наименование», «Цена») будут заполнены, мы нажимаем кнопку «Далее» и переходим на вторую страницу (Рис.8)

Рис.8

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

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

В текстовом поле можно внести комментарий, который будет записан в документе (Рис.9):

Рис.9

После выполнения обработки:

  • В справочнике «Номенклатура поставщика» будет создан соответствующий элемент (если его не было);
  • Ему будет сопоставлен элемент справочника «Номенклатура»;
  • Будет создан и проведен документ «Установка цен номенклатуры» с указанием: поставщика, типа цен и даты фиксации данных.

Аналогичным образом работает обработка «Загрузка товаров из внешних файлов».

Варианты обработки переноса своими руками

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

  • Через Microsoft ADODB – достаточно быстрый способ, который, как правило, применим и для файлового и для клиент-серверного варианта хранения базы;
  • Через использование Microsoft Office – метод, который иногда сбоит при работе с SQL базами, как правило, работает несколько медленнее первого способа, к тому же требуется установленный Office;
  • Через Libre Office – в отличие от предыдущего метода бесплатен, помимо xls и xlsx форматов поддерживает еще и собственные таблицы, но требует установленного пакета LibreOffice и некоторой подготовки загружаемого файла (первая строка таблицы должна содержать имена колонок).

Рассмотрим подробнее различные способы и варианты.

Через ADODB.Connection

Вообще ADO расшифровывается как ActiveX Data Object и служит для программного доступа к различным базам данных. Самая большая проблема при создании любого подключения к стороннему файлу (в том числе и к экселевскому) – грамотно составить строку подключения.

Для файлов Excel тут возможны три варианта:

Параметры строки подключения:

  • Provider – здесь определяется используемый драйвер;
  • Data Source – определяет имя файла, который мы будем открывать;
  • Extended Properties – здесь можно указать: нужна ли строка-заголовок для таблицы (HDR = YES говорит о том, что данные будут считываться с первой строки, HDR = NO – что со второй), открывается ли файл только для чтения (ReadOnly) и некоторые другие дополнительные параметры.

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

Рис.13

Теперь мы можем с помощью простого запроса (Рис.14) запустить выборку информации из загружаемого файла.

В данном случае параметр «Лист» определяет, с каким листом из экселевской книги нам предстоит работать.

Набор записей, хранящихся на листе можно прочитать с помощью объекта Recordset. При этом первую запись листа можно получить параметром BOF (начало файла), а последнюю EOF (конец файла).

Через Excel приложение

Главное отличие от предыдущего способа – помимо драйверов работы с базами данных, на компьютере, где выполняется соединение, должен быть установлен Excel. Только в этом случае мы можем инициализировать приложение для чтения данных из таблицы (Рис 16).

У этого COM объекта есть несколько дочерних параметров, но главным для нас, при текущих условиях задачи, является параметр WorkBooks (Рис.17).

После инициализации книги необходимо определить лист, с которого будут считываться данные (Рис.18).

После этого можно перебирать внутри циклов строки и колонки таблицы открываемого файла.

Несколько слов о возможных ошибках

Львиная доля ошибок при подключении к файлу возникает из-за того, что файл уже занят другим приложением. Хорошо, если в панели задач видно, что Excel запущен на компьютере, но если Вы или другой пользователь открыли его из внешней обработки, визуально это можно определить только через «Диспетчер задач», так что не забывайте перед окончанием процедуры переноса закрыть подключение:

В случае работы через ADO (Рис.19);

Рис.19

  • В случае работы с приложением (Рис. 20).

Рис. 20.

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

Вступление.

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

Таблицы 1С и Excel.

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

На сайте 1С (http://www.1c.ru/) есть полезная программка, которая дает возможность открывать таблицы 1С в Excel и сохранять лист Excel как таблицу 1С. Это пригодится в том случае, если таблицу 1С не сохранили в формате Excel, а на том компьютере, где нужно открыть эту таблицу не установлена 1С. Да и постоянно помнить о том, что сохранить таблицу 1С нужно в формате Excel, не будет необходимости.

Полная информация о программе находится здесь.
Скачать программу можно здесь (архив zip 682 739 байт).

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

Получение данных из Excel.

Доступ из 1С к Excel производится посредством OLE. Например, код
Попытка
Исключение
Сообщить(ОписаниеОшибки() +
);
Возврат;
КонецПопытки;
позволит нам получить доступ через переменную "Эксель" к запущенному приложению Excel. А далее уже можно получить доступ к книге (файлу), листу и ячейке с данными. Далее примеры кода.

Открытие книги (файла):
Книга = Эксель . WorkBooks . Open (ПутьКФайлу );
ПутьКФайлу - полный путь к файлу книги Excel.

Выбор листа книги для работы с ним:
или
Лист = Книга . WorkSheets (ИмяЛиста );
НомерЛиста - номер листа в книге, ИмяЛиста - имя листа в книге.

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

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

Вывод данных в Excel.

Для вывода (выгрузки) данных в Excel необходимо либо открыть существующую книгу, либо создать новую, и выбрать рабочий лист для вывода данных. Открытие существующей книги описано выше, а для создания новой книги нужно использовать следующий код:
Попытка
Эксель = СоздатьОбъект("Excel.Application" );
Исключение
Сообщить(ОписаниеОшибки() +
" Программа Exсel не установлена на данном компьютере!" );
Возврат;
КонецПопытки;
Книга = Эксель . WorkBooks . Add ();

Так как при создании книги в Excel автоматически создаются листы (Сервис->Параметры->Общие->Листов в новой книге), то нужно лишь произвести выбор листа, с которым будет вестись работа:
Лист = Книга . WorkSheets (НомерЛиста );
либо добавить в книгу новый лист, если необходимо:
Лист = Книга . Sheets . Add ();
Следующим шагом будет установка значения ячейки:
Лист . Cells (НомерСтроки , НомерКолонки ). Value = Значение ;
НомерСтроки, НомерКолонки - номер строки и номер колонки, на пересечении которых находится ячейка.
И в конце нужно произвести запись созданной книги:
Попытка
Книга . SaveAs (ПутьКФайлу );
Исключение
Сообщить(ОписаниеОшибки()
+ " Файл не сохранен!" );
Возврат;
КонецПопытки;
ПутьКФайлу - полный путь к файлу книги Excel (включая имя).
Важно: не забывайте, что в имени файлов не должно содержаться символов \ / : * ? " > < |.

Часто используемые методы для чтения/установки значений в Excel.

Эксель = СоздатьОбъект("Excel.Application" ); Получение доступа к приложению Excel.
Эксель . Visible = Видимость ; 0 - Excel не виден, 1 - виден.
Книга = Эксель . WorkBooks . Add (); Создание новой книги (файла) Excel.
Книга . SaveAs (ИмяФайла ); Сохранение книги Excel.
Лист = Книга . WorkSheets . Add (); Добавление нового листа в книгу.
Книга = Эксель . WorkBooks . Open (ИмяФайла ); Открытие существующей книги (файла) Excel.
Лист = Книга . WorkSheets (НомерЛиста ); Установка листа в качестве рабочего с номером НомерЛиста.
Лист . Name = ИмяЛиста ; Задание рабочему листу имени ИмяЛиста
Лист . PageSetup . Zoom = Масштаб ; Задание параметра страницы "Масштаб" (от 10 до 400).
Лист . PageSetup . Orientation = Ориентация ; Ориентация: 1 - книжная, 2 - альбомная.
Лист . PageSetup . LeftMargin = Эксель . CentimetersToPoints (Сантиметры ); Задание левой границы (в сантиметрах).
Лист . PageSetup . TopMargin = Эксель . CentimetersToPoints (Сантиметры ); Задание верхней границы (в сантиметрах).
Лист . PageSetup . RightMargin = Эксель . CentimetersToPoints (Сантиметры ); Задание правой границы (в сантиметрах).
Лист . PageSetup . BottomMargin = Эксель . CentimetersToPoints (Сантиметры ); Задание нижней границы (в сантиметрах).
Лист . Columns (НомерКолонки ) . ColumnWidth = Ширина ; Задание ширины колонке.
Лист . Cells (НомерСтроки , НомерКолонки ) . Value = Значение ; Ввод данных в ячейку.
Лист . Cells (НомерСтроки , НомерКолонки ) . Font . Name = ИмяШрифта ; Установка шрифта в ячейке.
Лист . Cells (НомерСтроки , НомерКолонки ) . Font . Size = РазмерШрифта ; Установка размера шрифта в ячейке.
Лист . Cells (НомерСтроки , НомерКолонки ) . Font . Bold = Жирный ; 1 - жирный шрифт, 0 - нормальный.
Лист . Cells (НомерСтроки , НомерКолонки ) . Font . Italic = Курсив ; 1 - наклонный шрифт, 0 - нормальный.
Лист . Cells (НомерСтроки , НомерКолонки ) . Font . Underline = Подчеркнутый ; 2 - подчеркнутый, 1 - нет.
Лист . Cells (НомерСтроки , НомерКолонки ) . NumberFormat = Формат ; Установка формата данных ячейки.
Лист . Cells (НомерСтроки , НомерКолонки ) . Borders . Linestyle = ТипЛинии ; Установка рамок ячейки. 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С.

Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png