Выгрузка данных документа в CSV
Добрый день! Уважаемые Гуру, помогите советом, плиз. Есть документ со списком студентов и нескольких ТЧ. Как проще и оптимальнее выгрузить все это в CSV? Из самого документа или посредством регистров? Пробовал оба способа - застрял, поэтому обращаюсь сюда. Простой пример с данными справочника у меня получился, с данными документа тоже, а вот с ТЧ никак. Читал что можно как то создать промежуточную таблицу для ТЧ и ее потом прикрепить к ТЗ, но не понимаю как это сделать?
вот последний мой код:
&НаСервере
Процедура ВыгрузкаВФайлCSVНаСервере()
ИспользуемыйРазделитель = ";";
ФайлCSV="d:\Data_Students.csv";
//*** Получаем данные из запроса ***
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|МедицинскиеКарты.ФИОСтудента КАК Код,
|МедицинскиеКарты.Профилактика.(
| Возраст,
| ДатаПрививки,
| Прививка,
| Вакцина,
| СерияВакцины,
| ПроизводительВакцины
|)
|ИЗ Документ.МедицинскиеКарты КАК МедицинскиеКарты";
// "ВЫБРАТЬ
//| ВнутреннийПрайс.Код КАК Код,
//| ВнутреннийПрайс.Наименование КАК Наименование
//|ИЗ Справочник.Должности КАК ВнутреннийПрайс";
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ТЗ = РезультатЗапроса;
//**********************************
ТекстCSV=""; // Текст с учетом заголовков, разделителей и переноса строк
Для Каждого СтрокаТЗ Из ТЗ Цикл
Если ТекстCSV="" Тогда
СтрокаКол="";
КолонкиТЗ=ТЗ.Колонки;
Для Каждого Колонка Из КолонкиТЗ Цикл
СтрокаКол = "" + СтрокаКол + Колонка.Имя + ИспользуемыйРазделитель ;
КонецЦикла;
ТекстCSV = СтрокаКол + Символы.ПС;
КонецЕсли;
ТекстCSV = ТекстCSV + СтрокаТЗ.Код + ИспользуемыйРазделитель + СтрокаТЗ.Наименование
+ Символы.ПС;
КонецЦикла;
КодANSI = КодировкаТекста.ANSI;
ТекстовыйФайлЗапись = Новый ЗаписьТекста(ФайлCSV, КодANSI); // Создание файла CSV
ТекстовыйФайлЗапись.ЗаписатьСтроку(ТекстCSV); // Запись информации в файл
ТекстовыйФайлЗапись.Закрыть(); // Обязательно закрываем, иначе зависает в процессе
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузкаВФайлCSV(Команда)
ВыгрузкаВФайлCSVНаСервере();
КонецПроцедуры
вот последний мой код:
&НаСервере
Процедура ВыгрузкаВФайлCSVНаСервере()
ИспользуемыйРазделитель = ";";
ФайлCSV="d:\Data_Students.csv";
//*** Получаем данные из запроса ***
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|МедицинскиеКарты.ФИОСтудента КАК Код,
|МедицинскиеКарты.Профилактика.(
| Возраст,
| ДатаПрививки,
| Прививка,
| Вакцина,
| СерияВакцины,
| ПроизводительВакцины
|)
|ИЗ Документ.МедицинскиеКарты КАК МедицинскиеКарты";
// "ВЫБРАТЬ
//| ВнутреннийПрайс.Код КАК Код,
//| ВнутреннийПрайс.Наименование КАК Наименование
//|ИЗ Справочник.Должности КАК ВнутреннийПрайс";
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ТЗ = РезультатЗапроса;
//**********************************
ТекстCSV=""; // Текст с учетом заголовков, разделителей и переноса строк
Для Каждого СтрокаТЗ Из ТЗ Цикл
Если ТекстCSV="" Тогда
СтрокаКол="";
КолонкиТЗ=ТЗ.Колонки;
Для Каждого Колонка Из КолонкиТЗ Цикл
СтрокаКол = "" + СтрокаКол + Колонка.Имя + ИспользуемыйРазделитель ;
КонецЦикла;
ТекстCSV = СтрокаКол + Символы.ПС;
КонецЕсли;
ТекстCSV = ТекстCSV + СтрокаТЗ.Код + ИспользуемыйРазделитель + СтрокаТЗ.Наименование
+ Символы.ПС;
КонецЦикла;
КодANSI = КодировкаТекста.ANSI;
ТекстовыйФайлЗапись = Новый ЗаписьТекста(ФайлCSV, КодANSI); // Создание файла CSV
ТекстовыйФайлЗапись.ЗаписатьСтроку(ТекстCSV); // Запись информации в файл
ТекстовыйФайлЗапись.Закрыть(); // Обязательно закрываем, иначе зависает в процессе
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузкаВФайлCSV(Команда)
ВыгрузкаВФайлCSVНаСервере();
КонецПроцедуры
Прикрепленные файлы:
По теме из базы знаний
- Универсальная выгрузка данных в формате CSV
- Выгрузка данных в формат CSV для загрузки в Сбербанк Онлайн
- Выгрузка данных из УПП 1.3 в систему NEON
- Выгрузка Neon (Неон) в CSV с регламентными заданиями для УТ 11.1
- Автоматическая многопоточная выгрузка данных 1С 8.3 в БД Clickhouse (для работы с данными 1С в BI-системах)
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
//...
// МассивКолонок - массив заголовков
// Разделитель = ";" (как вариант)
// Строки - коллекция строк или таблица значений
КСВ = новый ЗаписьТекста(Что-тотам);
КСВ.ЗаписатьСтроку(СтрСоединить(МассивКолонок, Разделитель));
Для каждого Строка ИЗ Строки Цикл
КСВ.ЗаписатьСтроку(СтрСоединить(МассивКолонок(Строка), Разделитель);
КонецЦикла;
КСВ.Звкрыть();
...
...
...
Функция МассивКолонок(Коллекция)
М = Новый Массив;
Для каждого Ст ИЗ Коллекция Цикл
М.Добавить(Ст);
КонецЦикла;
Возврат М;
КонецФункции
Показать