среда, 3 июля 2019 г.

1С Excel

Само сохранение:
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Подготовка данных, 2 метода, второй более "красивый".
&НаСервере
Функция ТЗ_В_ТабДок(ТаблицаЗначений) Экспорт
ТабДок = Новый ТабличныйДокумент;
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(ТаблицаЗначений);       
Построитель.Вывести(ТабДок);
Возврат ТабДок;
КонецФункции

&НаСервере
Функция Запрос_В_ТабДок(Запрос) Экспорт
ТабДок = Новый ТабличныйДокумент;
Результат = Запрос.Выполнить();
Колонки = Результат.Колонки;
Выборка = Результат.Выбрать();
Количество = Выборка.Количество()+2;
// рисуем заголовки
кол = 1;
стр = 1;
Для Каждого колонка Из Колонки цикл
Имяобласть = "R1C" + Строка(кол);
ТабДок.Область(Имяобласть).Текст = колонка.Имя;
кол = кол + 1;
КонецЦикла;
Пока Выборка.Следующий() Цикл
кол = 1;
стр = стр + 1;
Для Каждого колонка Из Колонки цикл
Имяобласть = "R" + Строка(стр) + "C" + Строка(кол);
ТабДок.Область(Имяобласть).Текст = Выборка[колонка.Имя];
кол = кол + 1;
КонецЦикла;
КонецЦикла;
Возврат ТабДок;
КонецФункции

Первый метод взят отсюда:
Источник: https://pro1c8.ru/obmen-excel-1c/#tablichnyjdokument

1C 8.3 + Excel (ADO)

&НаСервере
Функция ПолучитьДанныеПоДокументу(TableName)
// Получаем номенклатуру для выгрузки
Запрос = Новый Запрос("ВЫБРАТЬ
                      | ИнвентаризацияНоменклатура.Штрихкод КАК Штрихкод,
                      | ИнвентаризацияНоменклатура.Факт КАК Количество,
                      | ИнвентаризацияНоменклатура.Товар.Артикул КАК Артикул,
                      | ИнвентаризацияНоменклатура.Товар.ПолноеНаименование КАК ПолноеНаименование
                      |ИЗ
                      | Документ.Инвентаризация.Номенклатура КАК ИнвентаризацияНоменклатура
                      |ГДЕ
                      | ИнвентаризацияНоменклатура.Ссылка = &Ссылка");
Запрос.Параметры.Вставить("Ссылка", Объект.Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Массив = Новый Массив;
// Заполняем таблицу данными выборки
Пока Выборка.Следующий() Цикл
        Массив.Добавить("INSERT INTO [" + TableName + "] VALUES ("""+Выборка.Штрихкод+""","""+Выборка.Количество+""","""+ Выборка.Артикул+""","""+Выборка.ПолноеНаименование+""")");
КонецЦикла;
Возврат Массив;
КонецФункции