1С Программирование | 1C Разработка и Предприятие 8.3. Уроки для начинающих и Профи. Курсы Программиста: Конфигурация, Код и Внедрение. IT Карьера, Фриланс и Обучение. ERP, ЗУП, Бухгалтерия.
IT и технологии · 11 мая 2026 г.
Быстрый экспорт Таблицы значений в CSV файл
Быстрый экспорт Таблицы значений в CSV файл Для примера рассмотрим преобразование таблицы значений, полученное с помощью произвольного запроса. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | * |ИЗ | Справочник.Пользователи КАК Пользователи"; ТаблицаЗначений = Запрос.Выполнить().Выгрузить(); Для начала нам будет необходимо преобразовать Таблицу значений в Табличный документ, для этого есть функция ТаблицаЗначенийВТабличныйДокумент Функция ТаблицаЗначенийВТабличныйДокумент(ТаблицаЗначений) Экспорт //Используем Построитель отчета для вставки Данных ТаблицыЗначений в ТабличныйДокумент ТабличныйДокумент = Новый ТабличныйДокумент; Построитель = Новый ПостроительОтчета; Построитель.ВыводитьПодвалОтчета = Ложь; Построитель.ВыводитьПодвалТаблицы = Ложь; Построитель.ВыводитьОбщиеИтоги = Ложь; Построитель.ВыводитьЗаголовокОтчета = Ложь; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаЗначений); Построитель.Вывести(ТабличныйДокумент); //Постротель оставляет первую колонку пустой, удаляем ее чтобы данные начинались с первой колонки ТабличныйДокумент.УдалитьОбласть(ТабличныйДокумент.Область(1, 1,ТабличныйДокумент.ВысотаТаблицы , 1), ТипСмещенияТабличногоДокумента.ПоГоризонтали); // Возвращает Табличный документ где первая строка содержит колонки ТаблицыЗначений а последующие строки хранят строки Возврат ТабличныйДокумент; КонецФункции ТабличныйДокумент = ТаблицаЗначенийВТабличныйДокумент(ТаблицаЗначений); Полученный Табличный документ мы сохраним в виде текстового файла. Предварительно временно заменим существующие символы табуляции в исходных данных, чтобы не сломать структуру csv файла, так как колонки будут разделены по ним: //Определяем куда нужно сохранить готовый результат ИмяФайла = "D:\Repository\test.csv"; //В Табличном документе заменяем все символы Табуляции на текст "<$СимволТабуляции$/>" чтобы исключить конфликты при создании csv-файла // этот цикл можно исключить если исходные данные точно не содержат символы табуляции ОбластьПоиска = ТабличныйДокумент.Область(1,1,1,1); Пока Истина Цикл ОбластьПоиска = ТабличныйДокумент.НайтиТекст(Символы.Таб,ОбластьПоиска); Если ОбластьПоиска = Неопределено Тогда Прервать; КонецЕсли; ОбластьПоиска.Текст = СтрЗаменить(ОбластьПоиска.Текст,Символы.Таб,"<$СимволТабуляции$/>"); КонецЦикла; // Сохраняем Табличный документ как текст, в полученном текстовом документе значения каждой ячейки разделяются через символ табуляции ТабличныйДокумент.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.TXT); //Извлекаем полученный Текстовый документ ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.Прочитать(ИмяФайла,КодировкаТекста.UTF8,Символы.ПС); Текст = ТекстовыйФайл.ПолучитьТекст(); Теперь нам необходимо заменить символом табуляции на разделитель csv файла - ";", а также восстановить ранее замененные и символы ТАБ. После чего мы можем сохранить готовый csv файл. //Заменяем сформированные символы табуляции на символ рахделитель csv файла - ";" Текст = СтрЗаменить(Текст,Символы.Таб,";"); // Востанавливаем ранее экранированные символы табуляции в самих данных Текст = СтрЗаменить(Текст,"<$СимволТабуляции$/>",Символы.Таб); // Сохраняем сформированные текст csv-файла ТекстовыйФайл.УстановитьТекст(Текст); ТекстовыйФайл.Записать(ИмяФайла,,Символы.ПС); ✍️ @odin1C_rus
Канал в каталоге Максиметера
4 103 подписчиков · IT и технологии