Выгрузка данных из 1С и экспорт в Excel справочников и регистров сведений
Не так давно возникла казалось бы тривиальная задача. Есть «боевая» база Управление торговлей (версия конфигурации 10.1, платформы — 8.1). Создается новая компания, в которой нужно развернуть новую базу (версия конфигурации 11.2, платформы — 8.3). Чтобы облегчить нелёгкий труд сотрудницам новой компании, было принято решение скопировать часть номенклатуры (каталог товаров и их реквизитов) в новую базу.
Однако не тут-то было. Попытки использовать стандартные средства в 1С привели к неудаче. Синхронизация данных для веб-узла выдавала очень урезанные данные. И даже замечательный обработчик Выгрузка и загрузка данных в XML выдавал ошибку.
Поэтому было найдено такое решение:
- Выгрузка данных из «старой» базы посредством обработчика Выгрузка и загрузка данных в XML
- Экспорт данных в Excel
- Импорт в «новую» базу из Excel собственным обработчиком
Для того чтобы реализовать пункт 1, использовался обработчик отсюда (тот самый Выгрузка и загрузка данных в XML, для платформы 8.1). Для других платформ — Google в помощь.
В связи с тем, что для загрузки нужен была только справочник номенклатуры, то для обработки необходимы только такие сущности, как справочники и регистры сведений. Анализ выгруженного xml-файла (сумасшедших 280Мб для 35000 товаров) показал, что необходимые данные для обеих сущностей хранятся в «плоском» виде:
Затем на Python был написан парсер, который раскладывал все сущности по отдельным Excel файлам. В результате его работы появился примерно такой набор файлов:
- CatalogObject.Банки.xlsx
- CatalogObject.БанковскиеСчета.xlsx
- .
- InformationRegisterRecordSet.НоменклатураКонтрагентов.xlsx
- InformationRegisterRecordSet.ЦеныНоменклатуры.xlsx
С приблизительно такими графами (столбцами)*:
- ШтрихКодНоменклатурыКонтрагента
- КодНоменклатурыКонтрагента
- АртикулНоменклатурыКонтрагента
- НаименованиеНоменклатурыКонтрагента
- ХарактеристикаНоменклатуры
- ЕдиницаНоменклатурыКонтрагента
- Номенклатура
- Контрагент
* пример приведен для файла InformationRegisterRecordSet.ЦеныНоменклатуры.xlsx
А дальше программисты 1С сказали «Отлично, вот теперь мы сами». И все стали немножко более счастливы.
Исходный код лежит на github вот здесь. Поскольку я понимаю, что большинство программистов 1С не знают Python, то там же (в релизах) лежит скомпилированный код (для x64). Если будут просьбы, то код переведу в C# и скомпилирую (уж он-то везде должен работать).
Надеюсь кому-то моя заметка сэкономит время.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Совет: Как выгрузить таблицу, справочник или документ из 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, переслать по почте или распечатать.
Пройдите курсы 1С и Вам больше не понадобятся советы и руководства!