Совет: Как выгрузить таблицу, справочник или документ из 1С 8.3 в Excel?
У большинства пользователей 1С может возникнуть необходимость перенести информацию из базы 1С в таблицы Microsoft Excel. Например, выгрузить список номенклатуры из программы 1С:Управление торговлей 8, или список сотрудников из 1С:Зарплата и управление персоналом 8. Такой список удобно редактировать, распечатать или переслать по электронной почте. Все программы на платформе 1С:Предприятие 8.3 имеют одинаковый алгоритм выгрузки информации в таблицу Excel, который укладывается в несколько простых действий.
Программы 1С:Предприятие 8.3 – это, в том числе, конфигурации 1С:Бухгалтерия 3.0, 1С:ЗУП 3.1, 1С:Управление торговлей 11.4, и другие. Это разные программы для различных учетных целей, но с одинаковым интерфейсом и одной логикой разработки.
Для примера мы выгрузим в Excel справочник сотрудников из программы 1С:ЗУП 8 редакции 3.1. Используя тот же алгоритм можно выгрузить из программы любую информацию, которая сгруппирована в таблицы – табличные части документов, списков, справочников.
Справа над над табличной частью окна расположена кнопка Еще, при нажатии на которое появится меню. Команда, которая формирует из списка таблицу привычного формата – Вывести список.
После нажатия на команду Вывести список. программа попросит выбрать колонки, которые попадут в итоговую таблицу. Вы можете снять галочки с тех колонок, которые будут не нужны в итоговой таблице – таблица будет сформирована без нее и значений ее полей. На скриншоте видно, что мы не стали убирать колонки. Когда закончите, нажмите ОК.
В результате откроется новое окно, в котором из выбранной информации будет сформирована таблица. Благодаря аналогичному форматированию из таблицы 1С можно копировать части прямо в табличный процессор MS Excel, либо сохранить эту таблицу как отдельный файл. Для этого нажмите на 3 точки в правом верхнем углу таблицы, затем Файл, команда Сохранить как.
После нажатия на кнопку появится стандартное окно проводника Windows, где нужно будет указать путь размещения файла и его тип. При этом не забудьте выбрать нужный формат сохраняемой таблицы: *.xlsx, чтобы сохранить для современных версий Excel, или *.xls, чтобы файл можно было открыть в старых версиях Excel 2003 года или более ранних. Также на выбор доступны и другие форматы таблиц.
После сохранения файл с таблицей появится в указанной директории и его можно открыть в программе Excel, переслать по почте или распечатать.
Табличный документ сохранить в Excel
Механизм создания табличных документов и печатных форм в 1С достаточно продуман и хорошо проработан, однако, до функциональных возможностей, реализованных в Microsoft Excel, ему, конечно же, далеко. Поэтому многие пользователи предпочитают действовать по следующему алгоритму:
- Сформировать печатную форму в 1С;
- Сохранить данные как лист Excel (Рис.1)или скопировать таблицу;
- Продолжить работу с информацией в другой программе.
И, нередко, у них возникает вопрос: как осуществить непосредственную выгрузку информации из 1С в Excel, минуя дополнительные шаги?
Два главных требования, которые должны быть выполнены
Для безошибочного функционирования нашей обработки, необходимо:
- Чтобы на компьютере пользователя был установлен Microsoft Office и, в частности, Excel (мы будем подключаться к приложению посредством создания COM-объекта);
- Представлять себе структуру хранения данных в Excel (понимать, как формируются имена ячеек, знать, что такое лист, книга и т.д.).
Только убедившись, что два этих пункта выполнены, следует приступать к дальнейшей разработке.
Алгоритм при выгрузке и его реализация в 1С
Последовательность действий при выгрузке из 1С в Excel можно представить следующей последовательностью шагов:
- Формируем набор данных, которые необходимо сохранить в Excel;
- Создаем подключение к приложению (запускаем его);
- Заполняем файл выгружаемыми данными;
- Сохраняем файл;
- Закрываем открытое приложение.
Теперь по этому списку подробнее.
Формирование набора данных
В качестве источника данных может выступать результат выполнения запроса, печатная форма табличного документа, любая выборка элементов. В нашем случае мы будем выгружать реестр документов «Поступление товаров и услуг» за текущий месяц (Рис.2)
Осуществляем программный запуск приложения
Как было сказано выше, для того, чтобы запуститься, мы будем использовать режим Com-соединения. Код на Рис.3 показывает, как это можно осуществить.
Процедуру создания нового объекта мы сознательно вставили в конструкцию Попытка — Исключение-КонецПопытки, для того, чтобы исключить всевозможные нестандартные ситуации в дальнейшем ходе обработки.
Заполнение файла, его сохранение и завершение работы приложения
В первую очередь следует определиться, что мы хотим сделать: выгрузить данные в существующий файл или создать новый:
- В первом случае нам необходимо запустить диалог выбора файла и получить полное имя существующего хранилища информации;
- Во втором случае мы должны самостоятельно придумать имя создаваемого файла и определиться с его местоположением (именно из этих двух слагаемых будет создано имя файла).
Решив, где мы будем хранить наши данные, приступим к непосредственному заполнению файла , для этого создадим процедуру и передадим в нее в качестве параметра нашу выборку документов за текущий месяц. (Рис.4)
Как видно из кода, в первую очередь мы создали книгу, в которой будет храниться наша таблица. По умолчанию программа Excel при первом запуске создает в книге три листа. Для внесения данных мы можем выбрать любой из них, просто указав номер листа в качестве параметра для метода WorkSheets(). Если же нам понадобилось бы добавить новый лист в книгу, мы должны бы были записать строку вида:
На этом мы закончили формировать общую структуру документа и приступаем к его заполнению.
Циклом со счетчиком перебираем строки и колонки нашей таблицы значений, для получения данных конкретной ячейки и их переноса в конечную таблицу.
Здесь важно иметь ввиду, что индексы строк и колонок таблицы значения в 1С начинаются с 0 и заканчиваются на числе на 1 меньшем, чем количество этих строк и колонок, а нумерация строк и колонок ячеек в Exel начинается с 1.
Перебрав нашу таблицу и перенеся её в новое место, мы должны сохранить созданный файл. Параметр ПутьКФайлу, указанный в процедуре SaveAs, должен содержать полный путь к файлу, включая его имя.
Если на компьютере установлен Microsoft Office версии 2007 года или более поздний, у Вас, вероятно, может возникнуть необходимость в сохранении табличного документа в формате Excel 2003, программно это можно сделать, если указать в качестве второго параметра процедуры SaveAs значение (-4143). Именно это число указывает на формат сохраняемого файла, соответсвующий расширению xls.
В случае ошибки (допустим сохраняемый файл уже открыт), наша обработка должна предупредить пользователя о нестандартной ситуации, что и прописано в процедуре Сообщить().
Так как мы не планируем дальше продолжать работу с Excel, мы должны закрыть приложение. Здесь следует отметить, что визуально отследить выполнение нашей обработки можно только воспользовавшись диспетчером задач, в списке открытых окон его видно не будет. Опять же, если не прописать закрытие приложения, оно будет занимать место в оперативной памяти и может привести к конфликтам запуска дополнительных копий Excel.
Дополнительный способ сохранения табличного документа из 1С в Excel
Еще один способ выгрузки — непосредственное сохранение табличного документа на диск без его вывода на экран или перед выводом, код соответствующей процедуры показан на (Рис.5).
Одно очень важное замечание: в программах 1С и Excel различаются разделители целой и дробной части в числовых значениях, этот момент следует учитывать при выгрузке во избежание перекоса в данных.
Сохранение табличного документа в EXCEL (xlsx) с форматом ячеек Число, Дата, Дата время
Для решения проблемы можно например использовать EXCEL через ком объект, но это замедляет работу. Да и сам Microsoft не рекомендует использовать ком объект EXCEL в серверных приложениях.
Можно напрямую писать весь документ, лист, в формат Office Open XML, работая как с xml файлом. Но тогда нужно в нем разбираться, понимать, знать. А самое главное поддерживать, вносить изменения, новые разработчики должны тоже уметь и т.д.
В данной статье предлагается простое универсальное решение:
Если нужно, чтобы при сохранении у ячейки табличного документа, в файле excel было число, делаем так:
2. Дата, Дата время.
Тут сложнее, предлагается способ с небольшой пост обработкой стилей xlsx файла, универсальным методом.
Ниже подробнее, по шагам рассмотрим весь способ.
2.1 Формат дата в EXCEL.
На самом деле в EXCEL, на уровне хранения данных, нет понятия даты или времени.
Все хранится как число, обозначающее количество дней с 1 января 1900 г.
А понимает EXCEL что это дата или время и т.д., с помощью форматных строк.
У ячеек есть понятие формата.
Из пункта 1, мы умеем сохранять формат число , через Табличный документ.
Таким образом реализовав простой метод, который будет конвертировать дату 1С, в число по стандартам EXCEL.
Мы можем в момент формирования Табличного документа, сразу писать xlsx файл как нужно.
И делать это все привычными средствами 1С, пример:
Остается только указать нужный нам формат даты.
Для этого мы будем использовать Имя шрифта.
Так как оно будет записано в файл стилей, как обычная строка.
При этом мы запомним, какие шрифты, на какие форматы мы заменили, что бы потом обратно сделать подмену.
Дополним наш код выше примером:
2.2 Универсальное редактирование стилей в файле XLSX.
Все стили у формата Office Open XML хранятся в xl\styles.xml.
После пункта 2.1, наша ячейка будет ссылаться на стиль, который будет записан с именем шрифта, равным нашей форматной строке.
Нам остается лишь:
-Тем стилям которые ссылаются на такой шрифт, указать форматную строку.
-Вернуть корректное имя шрифта.
Это можно обернуть в универсальный метод:
Внутри которого реализована модификация xl\styles.xml
Под спойлером пример кода, с реализацией всех методов, можно использовать по лицензии MIT.
Для запуска примера можно:
1.Создать внешнюю обработку.
2.Добавить форму, в модуль формы скопировать весь код под спойлером.
3.Добавить команду и на ее вызов повесить СформироватьПример().
4.По пути "C:\Пример.xlsx" будет создан пример xlsx файла из табличного документа, с форматами.
Для удобства можно объявить все как "НаКлиенте".
Цель кода показать пример, сам код каждый может изменить под себя:
Специальные предложения
Просмотры 4206
Загрузки 0
Рейтинг 19
Создание 26.07.21 10:10
Обновление 26.07.21 10:10
№ Публикации 1486726
Тип файла Нет файла
Платформа 8.3.14
Конфигурация Не имеет значения
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Да
См. также
Копирование числовых ячеек из 1С в Excel Промо
Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.
15.01.2019 38972 itriot11 27
Выгрузка данных в Excel с добавлением формул (нюансы формирования формул)
Итак, я здесь описываю выгрузку отчета в Excel с добавлением пустых колонок для заполнения внутри самого Excel + колонки с формулами для выполнения расчетов на базе выгруженного и введенного руками в Excel. На самом деле публикация появилась по причине моих проблем, возникших при написании формул. Все остальное вроде штатно, но вдруг кому пригодится.
30.05.2022 725 Zlohobbit 2
Выгрузка / Загрузка регистра сведений из внешней системы с большим количеством строк
Часто возникает задача, когда уже вся НСИ загружена и необходимо перегрузить регистры сведений с большим количеством строк (около миллиона строк). Перегрузка может быть из любой информационной системы (на 1С или нет). Для себя определил максимальной быстрый вариант выгрузки/загрузки — через файл Excel с учетом возможности предварительной правки и просмотра результата загрузки.
28.01.2022 1227 Shining_ninja 4
Универсальная загрузка данных формата Excel
Универсальная обработка по чтению/импорту данных формата Excel в базы 1С.
14.04.2021 8989 artkor 27
Excel vs 1С: битва с неожиданным исходом Промо
Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!
11.04.2019 43884 bolefirenko 122
Делаем формат ячейки дата в Excel без Excel
Задача отправлять печатную форму в формате Excel, но у этой печатной формы должен быть правильный формат ячеек с датой
26.03.2021 3756 John_d 23
Генерация кода с помощью формул Excel
В работе периодически возникает необходимость создания однотипных строк кода, отличающихся, в общем случае, только неким известным заранее строковым содержимым. При помощи конкатенации в Excel подобные данные легко превратить в готовые строки кода.
27.10.2020 1240 aleksei_adamov 6
Удаление из файла эксель ненужных страниц средствами 1С без COM и через COM
Как средствами 1С из файла эксель удалить ненужные листы без COM и с ним. Я разрабатывал на платформе 1С:Предприятие 8.3 (8.3.14.1694)
28.01.2020 3926 pavel_pss 12
Из Excel в 1С запросом Промо
. ну, конечно, не прям так типовым языком запросов, а расширенным языком запросов. Речь пойдет о том, как "залить" данные в таблицы 1С и не пилить при этом бесконечного количества наколеночных обработок.
14.08.2018 22570 m-rv 5
Обертка функций Excel на русском. Ускорение процесса разработки.
Устали переключаться с русского на английский и обратно при работе с таблицами Excel из 1С? Сборка наиболее необходимых функций и методов работы с Excel, обернутых в функции 1С на русском языке.
24.10.2019 8426 DmitryKotov 6
Выгрузка из 1С номенклатуры со штрихкодами без программирования
Я так и не смог найти простой инструкции или обработки, чтобы выгрузить из 1С: Управление торговлей 11 номенклатуру вместе со штрихкодами, поэтому решил написать собственную инструкцию.
28.08.2019 30718 user1114182 12
Простая работа с dbf и перевод в excel
Хочу рассказать, как просто создать и отредактировать dbf файл, переведя его в excel.
23.08.2019 5357 WWWWW 3
Загрузка из EXCEL в 1С на платформе 8.3.6/8.3.7/8.3.8/8.3.9/8.3.10 (с картинками) Промо
Импорт содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в таблицу значений.
06.04.2015 278036 StepByStep 76
Почему не получается использовать ТабличныйДокумент для работы с Excel?
Трудности загрузки/выгрузки эксельных прайсов.
21.06.2019 6812 kuzyara 5
Загрузка картинок в справочники (Универсальная загрузка из табличного документа)
Пример загрузки картинок в справочник Номенклатура (с помощью обработки универсальная загрузка данных из табличного документа). Проверялось на конфигурации УТ 11.4.7.
28.05.2019 11069 Rasdag 6
Повторение строк заголовка на каждой странице при обработке файлов Excel средствами платформы 1С:Предприятие
Вопросы повторения строк на каждой странице при работе с файлом Excel из программы, работающей в системе 1С.
23.01.2019 7455 senshkr 3
Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ПостроительDOM Промо
ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "NativeXLSX" (ПостроительDOM). Обрабатываются данные EXCEL типов: "Строка", "Число", "Дата" ("Время"), "Булево", "Процент", а также изображения.
11.09.2014 82148 StepByStep 27
Запись одной книги Excel на нескольких листах средствами 1С (без внешних компонент)
Пользователи часто просят сохранить им стопиццот отчетов в один файл Excel, чтобы отчеты были в одном файле. Ну или клиент хочет счет, накладную и счет-фактуру получить в одном документе. 1С умеет это делать без всяких там COM-объектов. Давайте разберемся, куда нажимать и что крутить.
14.01.2019 32117 starik-2005 45
Как легко загружать данные из электронных таблиц (Excel, OpenOffice и т.д)
Как легко загружать данные из электронных таблиц (Excel, OpenOffice и т.д). На примере загрузки в табличную часть документа Поступление товаров и услуг в УТ 11.4.
09.01.2019 17307 Rasdag 16
Работа с Excel через COM
Несколько примеров работы с excel (ms office 2010, в моем случае) через COM.
01.10.2018 15453 jaroslav.h 0
Загрузка из EXCEL в 1С. MS ADODB.Connection Промо
ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод "MS ADODB" (ADODB.Connection). Поддерживаемые типы: *.xls,*.xlsx.
30.11.2012 167714 StepByStep 89
Выгрузка в Excel с использованием формата OpenXML, разбор файла sheet1.xml
Судя по количеству просмотров темы https://infostart.ru/public/900022/ решил описать структуру файла Листа excel. На полноту не претендую, опишу то, что знаю.
21.09.2018 9271 user1045404 2
Excel: создание в формате xlsx без COM технологии
По работе приходится часто выгружать данные в Excel формате. При большом количестве строк и формул этот процесс достаточно длительный. Решил написать для своих целей небольшую библиотечку для выгрузки данных. Используется технология open-xml. Никаких библиотек не надо, пишу напрямую в xml файлики. На данном этапе сделано форматирование, формулы.
10.09.2018 13456 user1045404 19
Маркировка ячеек цветом. Отладка загрузки данных из эксель.
После 100-ой кривой загрузки родился способ, как отладить алгоритм.
05.07.2018 10363 Rustig 7
Вредные советы (загрузка из таблиц Excel) Промо
Программисты просят вас предоставить данные в xls для загрузки? Обязательно почитайте и проверьте все ли пункты присутствуют в вашем файле. Иначе загрузка будет скучной и не интересной для них.
01.04.2012 26223 opx 23
Загрузка из Excel в управляемом приложении
С появлением управляемого интерфейса стали актуальными вопросы в давно освоенных приемах работы. В частности, загрузка из файла.
30.11.2017 45955 alex_bitti 17
Функция сохранения картинок из книги Excel в каталог с определением координат на листе
Разбор файла *.xlsx как Web-архива, выгрузка изображений без потери качества, с определением положения изображений.
12.11.2017 11898 user634820_zergemoth 1
Работа с Excel
Собрал различные полезности для работы с Excel из 1С. Иногда приходится форматировать документ Excel программно из 1С. Так вот, чтобы не искать постоянно на просторах интернета как сделать левое выравнивание в ячейке Excel из 1С и т.п. решил опубликовать это.
23.10.2017 66841 arakelyan 42
СТАБИЛЬНАЯ Загрузка справочника номенклатуры в 1С:Управление торговлей 8 из прайс-листа в Excel (код открыт скачать можно бесплатно) Промо
В таких случаях многие заказывают соответствующие обработки у собственных штатных программистов, фирм-франчайзи или сторонних разработчиков, но это дополнительные расходы и время. Как быть, если по различным причинам такой возможности нет? У каждого пользователя профессиональной версии 1С:Предприятие 8 подобная обработка уже есть! На диске ИТС! Типовая обработка «ЗагрузкаДанныхИзТабличногоДокумента.epf», находиться в разделе «Технологическая поддержка» > «Методическая поддержка 1С:Предприятие 8» > «Универсальные отчеты и обработки» > «Загрузка данных из табличного документа». Обратите внимание, начиная с Февраля 2010 г. на диске ИТС данная обработка для конфигураций на платформе 8.1 находится в другом разделе: «Технологическая поддержка» > «Методическая поддержка 1С:Предприятие 8» > «Платформа 1С:Предприятие 8.1» > «Универсальные отчеты и обработки» > «Загрузка данных из табличного документа».