Загрузка табелей из эксель в 8.3. Возможно ли загрузить данные из Excel в справочник "Номенклатура"? Несколько слов о возможных ошибках

08.03.2024

Как в «1С:Бухгалтерии 8» редакции 3.0 можно загрузить документы от поставщика по электронной почте?

Видеоролик выполнен в программе «1С:Бухгалтерия 8» (релиз 3.0.42.84).

Существенно упростить процесс обмена документами между контрагентами, а также снизить затраты на доставку документов, приобретение расходных материалов и хранение архивов поможет переход на электронный документооборот (ЭДО). С 8 апреля 2011 года действует Федеральный закон от 06.04.2011 № 63-ФЗ «Об электронной подписи», который определил порядок получения и использования электронной подписи и обязанности участников обмена электронными документами. Подробнее об обмене электронными документами см. в справочнике «Обмен электронными документами» в разделе «Бухгалтерский и налоговый учет» .

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

Документы учетной системы Счет покупателю , Реализация (акт, накладная), Счет-фактура выданный можно отправить контрагенту по электронной почте (по кнопке Отправить по электронной почте с изображением конверта). Документ отправляется в виде приложенного к письму файла в формате, выбранном пользователем. Также к письму приложен файл, предназначенный для загрузки получателем в «1С:Бухгалтерии 8» (ред. 3.0).

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

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

Получатель может загрузить документы вида или УПД из файлов с расширением xls, mxl или в формате, утвержденном ФНС России. Загружать документы можно из файла или из электронной почты. Выбрать способ загрузки можно в форме списка документов поступления по кнопке Загрузить . При загрузке программа проверяет соответствие формату и сообщает о результатах проверки.

При загрузке документов ТОРГ-12, Акт приемки-сдачи работ (услуг) или УПД создается документ учетной системы Поступление (акт, накладная) , в котором автоматически заполняются необходимые реквизиты. К документам поступления дополнительно может быть создан документ Счет-фактура полученный.

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

Настройка учетных записей электронной почты осуществляется в разделе Администрирование - Органайзер. Адрес электронной почты контрагента должен быть указан в форме элемента справочника Контрагенты.

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

Конфигурация: 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 мы будем добавлять новую колонку, а именно ставку НДС, вроде не очень надо, но мы практикуемся.

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

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

Внимание!

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

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

ТабДок. Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента. 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 );

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

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

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

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

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

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

Для обхода всех заполненных строк листа 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Объект(«ADODB.Connection»);


Соединение. ConnectionString = «

|Data Source=»+ ИмяФайла + «;
;
Соединение. Open(); // Открытие соединения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

11
ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 1. Путем замены шаблонного текста в макете Wordа. 2. Путем вставки текста с... 9
Конвертация таблиц из Excel в MXL - скачать Converter Excel v MXL: Для 8.х - Для 7.7 - // Выбор файла Microsoft Excel Procedure FileNameStartChoice(Element, StdProcessing) StdProcessing = False; DialogFile = New FileDialog(FileDialogMode. 3
Я думаю, все сталкивались с однолистовым excel файлом из 1С, у которого на первый взгляд, нет возможности добавить листы. Все не так страшно - их просто скрыли или, что чаще всего - даже не отображали (обусловлено созданием... 2
Процедура СохранитьТаблицуВФайлExcel(Таблица, ПолноеИмяФайла=" " , ОткрыватьДиалогВыбораФайла=Истина, ВыгружаемыеКолонки=" ") Экспорт Если ПустаяСтрока(ПолноеИмяФайла) ИЛИ ОткрыватьДиалогВыбораФайла Тогда Диалог =...

Отвечает специалист:

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

Чтобы загрузка из excel в 1с 8.3 произошла без искажения данных – необходимо сначала подготовить таблицу непосредственно в excel. Список, который загружается в1с, должен быть правильно структурирован, т.е. не допускается наличие в одном столбце или одной ячейке несколько типов данных (количество, номер, фамилия и т.д.).

Если таблица будет предельно доступной, то и в 1с загрузка из excel пройдёт без каких-либо проблем. Далее следует выполнить обработку 1с для загрузки данных изexcel. Для совершения обработки заходим в меню Файл, указываем ЗагрузкаДанныхИзТабличногоДокумента.epf Во всплывшим окошке в строчке Режим загрузкинаписано Загрузка в справочник. Строчкой ниже указываем вид справочника – Номенклатура. Потом открываем файл и в списке ищем Лист Excel(*.xls), выбираем файл, который содержит необходимую нам информацию для загрузки. Далее перейдем в настройки, в строчке Первая строка данных табличного документа указывает цифру 2, поскольку в верхней строчке находится шапка нашей таблицы.

Потом пронумеровываем колонки, указывая Ручную нумерацию колонок. Отключаем все флажочки, ради этого существует определенная кнопка на панелейинструментов. Отмечаемые флажками поля Наименование и Полное наименование, режим не трогаем, пусть остаётся Искать, нумерацию колонок ставимсоответствующую таблице Excel.

Остаётся только указать единицу измерения и ставку НДС, если не поставить сразу, то в последствии придётся проставлять вручную по одной позиции. Отмечаемыйфлажками Ставка НДС Базовая единица измерения, режим – Устанавливать, устанавливаемые Значение по умолчанию и непосредственно18% в строчку Ставка. Подготовку завершили. Указываем Табличный документ и кликаем Контроль заполнения. Должна появиться табличка с информацией об отсутствии ошибок.

Теперь можно спокойно загружать. В программу 1с загрузка номенклатуры из excel завершена