Файл выгрузки из 1С: от кнопки в списке до автоматического обмена по расписанию

· 10 мин

Содержание

Самый быстрый файл выгрузки из 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

  1. Откройте нужный список, например Справочники → Номенклатура.
  2. Отберите и отсортируйте строки: всё, что видно в списке, попадёт в файл.
  3. Нажмите Ещё → Вывести список….
  4. В окне отметьте нужные колонки. Переключатель «Выводить в» оставьте на табличном документе.
  5. Нажмите «ОК» — откроется таблица.
  6. Сохраните её: ☰ → Файл → Сохранить как… или кнопкой с дискетой. Выберите тип «Лист Excel 2007-…» (.xlsx).

Колонки, которых нет в списке, можно добавить заранее: Ещё → Изменить форму… и отметить нужные поля. Тогда «Вывести список» их тоже заберёт.

Отчёт в файл

Любой отчёт — ОСВ, «Анализ субконто», «Остатки товаров» — после формирования сохраняется так же: кнопкой с дискетой над табличной частью. Табличный документ платформы пишет в .mxl, .xlsx, .xls, .ods, .pdf, .docx, .html и .txt.

.mxl — родной формат 1С. Он открывается в 1С или в бесплатной программе «1С:Предприятие — Работа с файлами». Коллеге без 1С отправляйте .xlsx или .pdf.

Готовый отчёт можно ещё и отправить письмом прямо из формы, если в базе настроена учётная запись почты: файл приложится в выбранном формате.

Копия всей базы в .dt

Когда нужен «файл со всей базой» — для программиста, переезда или архива — делают выгрузку информационной базы:

  1. Запустите базу в режиме «Конфигуратор».
  2. Выберите Администрирование → Выгрузить информационную базу….
  3. Укажите имя файла .dt и дождитесь сообщения о завершении.

Выгрузка .dt монопольного режима не требует, но на время выгрузки лучше, чтобы пользователи не проводили документы — иначе в файл попадёт срез посреди работы. А вот загрузка .dt полностью заменяет данные в приёмнике и требует монопольного доступа.

Перенос данных между базами: выгрузка в XML

Одинаковые конфигурации

Если источник и приёмник — одна и та же конфигурация (например, две Бухгалтерии 3.0 одного релиза), используют обработку «Выгрузка и загрузка данных XML». Её распространяют как внешнюю обработку на диске ИТС и в комплекте поддержки.

Порядок такой:

  1. Откройте обработку: ☰ → Файл → Открыть… и выберите .epf.
  2. На вкладке выгрузки отметьте объекты: справочник, документы, регистры.
  3. Задайте период, если выгружаете документы.
  4. Укажите имя файла и нажмите «Выгрузить данные».
  5. В базе-приёмнике откройте ту же обработку и загрузите файл на соседней вкладке.

Обработка переносит объекты с их внутренними идентификаторами. Поэтому одинаковый элемент не задвоится, а перезапишется. Связанные ссылки (например, единицы измерения у номенклатуры) обработка по умолчанию добавляет в выгрузку сама.

Разные конфигурации

Между, скажем, УТ 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"

Внутри обработки код выгрузки ставят в ПриОткрытии формы, а в конце вызывают ЗавершитьРаботуСистемы(Ложь), чтобы сеанс закрылся сам. Для такого запуска заведите отдельного пользователя с минимальными правами.

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

Почему файл выгрузки не открывается или выгружается неправильно

Диагностика: выберите симптом

Как выгрузить из 1С большой объём данных и не повесить базу

Выгрузка на 500 тысяч строк, написанная «в лоб», съедает память и висит часами. Помогают пять приёмов.

  1. Выбрать() вместо Выгрузить(). Выборка читает строки по одной. Выгрузить() складывает весь результат в таблицу значений в памяти.
  2. Писать в поток. ЗаписьТекста и ЗаписьXML пишут на диск по мере обхода. Табличный документ на сотни тысяч строк держится в памяти целиком.
  3. Читать порциями. Запрос ВЫБРАТЬ ПЕРВЫЕ 10000 … ГДЕ Ссылка > &ПоследняяСсылка УПОРЯДОЧИТЬ ПО Ссылка в цикле, пока выборка не пуста. Последнюю ссылку порции передаёте в следующий запрос.
  4. Не читать объект целиком. Выборка.ПолучитьОбъект() тянет все реквизиты и табличные части. Если нужно три поля — берите их в запросе.
  5. Уводить в фоновое задание. Долгая выгрузка из формы блокирует пользователя. В конфигурациях на БСП для этого есть модуль ДлительныеОперации, без БСП — ФоновыеЗадания.Выполнить.

Помните и про пределы форматов. Лист .xlsx вмещает 1 048 576 строк, старый .xls — 65 536. Больше — только CSV или несколько листов.

Тяжёлую выгрузку в рабочее время ставьте осторожно: долгий запрос к таблицам документов замедляет проведение у остальных пользователей. Ночное окно надёжнее.

Частые вопросы

Можно ли выгрузить из 1С сразу в Google Таблицы?
Напрямую — нет. Сохраните файл в .xlsx и импортируйте его в Google Таблицы, либо программист настроит отправку данных через их API.
Чем отличается выгрузка в .dt от выгрузки в XML?
.dt — полная копия базы вместе с конфигурацией, она загружается целиком и заменяет данные в приёмнике. XML переносит только выбранные объекты и добавляет их к существующим.
Можно ли открыть файл .mxl без 1С?
Да, бесплатной программой «1С:Предприятие — Работа с файлами». Excel формат .mxl не читает.
Выгрузка запускается из планировщика, но файл пустой. Почему?
Чаще всего у пользователя, под которым идёт запуск, нет прав на нужные объекты. Под ним отбор возвращает ноль строк без ошибки.
Нужна ли выгрузка базы перед загрузкой XML?
Да. Сделайте копию приёмника в .dt: неудачную загрузку XML штатно не откатить.