Файл выгрузки из 1С: от кнопки в списке до автоматического обмена по расписанию
Содержание
Самый быстрый файл выгрузки из 1С делается за минуту: откройте нужный список или отчёт, нажмите Ещё → Вывести список…, затем сохраните результат через ☰ → Файл → Сохранить как… в формате .xlsx. Для переноса данных в другую базу нужен XML: его готовят обработки «Выгрузка и загрузка данных XML» или «Универсальный обмен данными в формате XML». Для регулярной выгрузки в стороннюю систему пишут свою обработку и ставят её на расписание.
Способ выбирают не по вкусу, а по тому, кто будет читать файл: человек в Excel, другая база 1С или внешняя программа. От этого зависят формат, инструмент и то, сколько настройки понадобится. Всё ниже относится к платформе 8.3 с интерфейсом «Такси» и типовым конфигурациям на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.
Что проверить перед тем, как делать выгрузку
Пять вопросов до первого клика сберегают переделку:
- 📌 Кто получатель. Человек — Excel или PDF. Другая база 1С — XML или
.dt. Сайт, банк, сервис — CSV, XML или JSON по их спецификации. - 📌 Какой объём. Сотня строк выгружается откуда угодно. Сотни тысяч — только кодом и порциями.
- 📌 Разовая это задача или регулярная. Разовую делают руками, регулярную — расписанием.
- 📌 Права пользователя. Для открытия внешних обработок нужно право «Интерактивное открытие внешних отчётов и обработок». Обычному бухгалтеру его часто не дают.
- 📌 Где окажется файл. В клиент-серверной базе код на сервере пишет файл на диск сервера 1С, а не на компьютер пользователя.
| Задача | Формат | Инструмент |
|---|---|---|
| Таблица для коллеги или руководителя | .xlsx, .pdf | Вывод списка, сохранение отчёта |
| Перенос справочников между одинаковыми базами | .xml | «Выгрузка и загрузка данных XML» |
| Перенос между разными конфигурациями | .xml | «Универсальный обмен данными в формате XML» + правила |
| Полная копия базы | .dt | Конфигуратор |
| Регулярная отдача данных на сайт или в сервис | .csv, .xml, .json | Своя обработка + расписание |
Выгрузка данных из 1С без программиста: списки, отчёты, копия базы
Список документов или справочника в Excel
- Откройте нужный список, например
Справочники → Номенклатура. - Отберите и отсортируйте строки: всё, что видно в списке, попадёт в файл.
- Нажмите
Ещё → Вывести список…. - В окне отметьте нужные колонки. Переключатель «Выводить в» оставьте на табличном документе.
- Нажмите «ОК» — откроется таблица.
- Сохраните её:
☰ → Файл → Сохранить как…или кнопкой с дискетой. Выберите тип «Лист Excel 2007-…» (.xlsx).
Колонки, которых нет в списке, можно добавить заранее: Ещё → Изменить форму… и отметить нужные поля. Тогда «Вывести список» их тоже заберёт.
Отчёт в файл
Любой отчёт — ОСВ, «Анализ субконто», «Остатки товаров» — после формирования сохраняется так же: кнопкой с дискетой над табличной частью. Табличный документ платформы пишет в .mxl, .xlsx, .xls, .ods, .pdf, .docx, .html и .txt.
.mxl — родной формат 1С. Он открывается в 1С или в бесплатной программе «1С:Предприятие — Работа с файлами». Коллеге без 1С отправляйте .xlsx или .pdf.
Готовый отчёт можно ещё и отправить письмом прямо из формы, если в базе настроена учётная запись почты: файл приложится в выбранном формате.
Копия всей базы в .dt
Когда нужен «файл со всей базой» — для программиста, переезда или архива — делают выгрузку информационной базы:
- Запустите базу в режиме «Конфигуратор».
- Выберите
Администрирование → Выгрузить информационную базу…. - Укажите имя файла
.dtи дождитесь сообщения о завершении.
Выгрузка .dt монопольного режима не требует, но на время выгрузки лучше, чтобы пользователи не проводили документы — иначе в файл попадёт срез посреди работы. А вот загрузка .dt полностью заменяет данные в приёмнике и требует монопольного доступа.
Перенос данных между базами: выгрузка в XML
Одинаковые конфигурации
Если источник и приёмник — одна и та же конфигурация (например, две Бухгалтерии 3.0 одного релиза), используют обработку «Выгрузка и загрузка данных XML». Её распространяют как внешнюю обработку на диске ИТС и в комплекте поддержки.
Порядок такой:
- Откройте обработку:
☰ → Файл → Открыть…и выберите.epf. - На вкладке выгрузки отметьте объекты: справочник, документы, регистры.
- Задайте период, если выгружаете документы.
- Укажите имя файла и нажмите «Выгрузить данные».
- В базе-приёмнике откройте ту же обработку и загрузите файл на соседней вкладке.
Обработка переносит объекты с их внутренними идентификаторами. Поэтому одинаковый элемент не задвоится, а перезапишется. Связанные ссылки (например, единицы измерения у номенклатуры) обработка по умолчанию добавляет в выгрузку сама.
Разные конфигурации
Между, скажем, УТ 11 и Бухгалтерией 3.0 структура объектов разная. Тут нужна обработка «Универсальный обмен данными в формате XML» (обычно файл V8Exchan83.epf) и файл правил обмена.
- 📄 Правила описывают, какой объект источника во что превращается в приёмнике.
- 🛠 Их создают в конфигурации «Конвертация данных » или берут готовые из поставки типовых решений.
- 🔁 Обработка в базе-источнике читает правила и пишет XML, в приёмнике та же обработка его загружает.
Правила привязаны к версиям конфигураций. Правила под старый релиз на свежей базе дают ошибки и пустые реквизиты. Для штатных пар (УТ → БП, ЗУП → БП) сначала проверьте раздел Администрирование → Синхронизация данных: там обмен уже встроен и не требует ручных правил.
Выгрузка данных из 1С программным кодом
Когда формат файла диктует внешняя система, пишут свою процедуру. Ниже — три рабочих варианта. Все фрагменты предназначены для модуля формы обработки.
CSV для сайта или сервиса
Код выбирает контрагентов запросом, пишет CSV в кодировке UTF-8 и отдаёт файл пользователю. Каждое поле берётся в кавычки, кавычки внутри значения удваиваются — иначе название ООО "Ромашка" развалит строку.
&НаСервере
Функция ВыгрузитьКонтрагентовВCSV()
ИмяФайла = ПолучитьИмяВременногоФайла("csv");
Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Запись.ЗаписатьСтроку("Наименование;ИНН;КПП");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование КАК Наименование,
| Контрагенты.ИНН КАК ИНН,
| Контрагенты.КПП КАК КПП
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ЭтоГруппа
| И НЕ Контрагенты.ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Запись.ЗаписатьСтроку(ПолеCSV(Выборка.Наименование) + ";"
+ ПолеCSV(Выборка.ИНН) + ";" + ПолеCSV(Выборка.КПП));
КонецЦикла;
Запись.Закрыть();
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла), УникальныйИдентификатор);
УдалитьФайлы(ИмяФайла);
Возврат Адрес;
КонецФункции
&НаСервереБезКонтекста
Функция ПолеCSV(Значение)
Возврат """" + СтрЗаменить(Строка(Значение), """", """""") + """";
КонецФункции
&НаКлиенте
Процедура Выгрузить(Команда)
Адрес = ВыгрузитьКонтрагентовВCSV();
ФайловаяСистемаКлиент.СохранитьФайл(Неопределено, Адрес, "Контрагенты.csv");
КонецПроцедуры
ФайловаяСистемаКлиент — модуль БСП, он есть во всех типовых конфигурациях. В самописной базе без БСП вместо него используйте НачатьПолучениеФайлаССервера или ПолучитьФайл.
Excel из табличного документа
Если вы уже собрали печатную форму или отчёт в ТабличныйДокумент, файл пишется одной строкой:
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
Вместо XLSX подставьте PDF, MXL, DOCX — набор тот же, что в окне «Сохранить как».
XML средствами XDTO
Для обмена между базами одной конфигурации объект сериализуется целиком:
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ИмяФайла, "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Данные");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
СериализаторXDTO.ЗаписатьXML(Запись, Выборка.ПолучитьОбъект());
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
Ссылки внутри такого файла записаны как идентификаторы. Загрузить его осмысленно можно только в базу с той же структурой. Для JSON аналогично работают ЗаписьJSON и ЗаписатьJSON.
Выгрузка через внешнюю обработку
Внешняя обработка (.epf) — способ добавить выгрузку, не трогая конфигурацию. Обновления типовой её не ломают, а поддержка вендора не снимается.
Два способа запуска:
| Способ | Как | Кому подходит |
|---|---|---|
| Разово | ☰ → Файл → Открыть…, выбрать .epf | Администратору, программисту |
| Постоянно | Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, кнопка «Создать» | Всем пользователям с доступом к разделу |
При регистрации в справочнике дополнительных обработок файл хранится в самой базе. Пользователю не нужен доступ к папке, а администратор видит, кто и что запускал.
При открытии стороннего .epf программа предупреждает о небезопасном действии. Это не ошибка, а защита: внешняя обработка выполняет любой код с правами пользователя. Открывайте только файлы из надёжного источника.
Если пользователь видит «Недостаточно прав для открытия внешней обработки», нужен не обходной путь, а регистрация обработки в справочнике: тогда право на интерактивное открытие ему не потребуется.
Автоматическая выгрузка по расписанию
Через дополнительную обработку
Обработку для справочника дополнительных обработок программист пишет с командой типа «Вызов серверного метода». После регистрации у такой команды в карточке появляется настройка расписания. Задаёте время, например ежедневно в 06:00, и выгрузка идёт без участия людей.
Через регламентные задания
Если выгрузка встроена в конфигурацию или расширение как регламентное задание, управлять им можно в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Там видно расписание, последний запуск и текст ошибки, если запуск упал.
Учтите разницу вариантов работы:
- 🖥 Клиент-серверная база . Задания выполняет кластер серверов 1С, пользователям не нужно сидеть в программе.
- 📁 Файловая база. Задания выполняются только пока кто-то работает в базе. Ночью при закрытой программе выгрузки не будет.
Через планировщик Windows
Для файловой базы надёжнее запускать выгрузку из планировщика Windows. Платформу вызывают с ключом /Execute, который открывает внешнюю обработку сразу при старте:
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Buh" /N "Выгрузка" /P "пароль" /DisableStartupMessages /Execute "D:\Scripts\export.epf"
Внутри обработки код выгрузки ставят в ПриОткрытии формы, а в конце вызывают ЗавершитьРаботуСистемы(Ложь), чтобы сеанс закрылся сам. Для такого запуска заведите отдельного пользователя с минимальными правами.
Сеанс из планировщика занимает лицензию, пока работает. Ставьте время выгрузки на часы, когда лицензий хватает с запасом.
Почему файл выгрузки не открывается или выгружается неправильно
КодировкаТекста.UTF8 — она добавляет в начало файла метку BOM, по которой Excel узнаёт UTF-8. UTF8N метку не пишет..xlsx.Формат(Сумма, "ЧГ=0").Как выгрузить из 1С большой объём данных и не повесить базу
Выгрузка на 500 тысяч строк, написанная «в лоб», съедает память и висит часами. Помогают пять приёмов.
Выбрать()вместоВыгрузить(). Выборка читает строки по одной.Выгрузить()складывает весь результат в таблицу значений в памяти.- Писать в поток.
ЗаписьТекстаиЗаписьXMLпишут на диск по мере обхода. Табличный документ на сотни тысяч строк держится в памяти целиком. - Читать порциями. Запрос
ВЫБРАТЬ ПЕРВЫЕ 10000 … ГДЕ Ссылка > &ПоследняяСсылка УПОРЯДОЧИТЬ ПО Ссылкав цикле, пока выборка не пуста. Последнюю ссылку порции передаёте в следующий запрос. - Не читать объект целиком.
Выборка.ПолучитьОбъект()тянет все реквизиты и табличные части. Если нужно три поля — берите их в запросе. - Уводить в фоновое задание. Долгая выгрузка из формы блокирует пользователя. В конфигурациях на БСП для этого есть модуль
ДлительныеОперации, без БСП —ФоновыеЗадания.Выполнить.
Помните и про пределы форматов. Лист .xlsx вмещает 1 048 576 строк, старый .xls — 65 536. Больше — только CSV или несколько листов.
Тяжёлую выгрузку в рабочее время ставьте осторожно: долгий запрос к таблицам документов замедляет проведение у остальных пользователей. Ночное окно надёжнее.
Частые вопросы
Можно ли выгрузить из 1С сразу в Google Таблицы?
.xlsx и импортируйте его в Google Таблицы, либо программист настроит отправку данных через их API.Чем отличается выгрузка в .dt от выгрузки в XML?
.dt — полная копия базы вместе с конфигурацией, она загружается целиком и заменяет данные в приёмнике. XML переносит только выбранные объекты и добавляет их к существующим.Можно ли открыть файл .mxl без 1С?
.mxl не читает.Выгрузка запускается из планировщика, но файл пустой. Почему?
Нужна ли выгрузка базы перед загрузкой XML?
.dt: неудачную загрузку XML штатно не откатить.