Имя: Пароль:
1C
1С v8
8.2 сохранение в excel табличный документ
0 Doroheart
 
14.02.20
10:13
Добрый день, подскажет кто нибудь что не так делаю?

ТабДок произвольный реквизит
ТЗ ТаблицаЗначений

Процедура ПолучитьОтчетНажатие(Элемент)
    
    Макет = ПолучитьМакет("МакетТаблицы");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
        |ЗначенияСвойствТоварныхКатегорий.Номенклатура.Наименование,
        |ЗначенияСвойствТоварныхКатегорий.Свойство.Код,
        |ЗначенияСвойствТоварныхКатегорий.Значение
    |ИЗ
        |РегистрСведений.ЗначенияСвойствТоварныхКатегорий КАК ЗначенияСвойствТоварныхКатегорий
    |ГДЕ
        |ЗначенияСвойствТоварныхКатегорий.Номенклатура.ПометкаУдаления = ЛОЖЬ
        |И ЗначенияСвойствТоварныхКатегорий.Свойство.Код = ""00050""
        |И ЗначенияСвойствТоварныхКатегорий.Значение = ИСТИНА";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    ТЗ = Запрос.Выполнить().Выгрузить();
    ЭлементыФормы.ТЗ.СоздатьКолонки();

КонецПроцедуры

Процедура СохранитьНажатие(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.ПолноеИмяФайла = "";
    Диалог.Фильтр = "Файлы Excel(*.xls; *.xlsx)|*.xls; *.xlsx";
    Диалог.Каталог = "\";
    Если Диалог.Выбрать() Тогда
        ТабДок.Записать(Диалог.ПолноеИмяФайла);
        Сообщить("Файл успешно сохранен. ");
    Иначе
        Сообщить("Файл не сохранен");
        Возврат;
    КонецЕсли;

КонецПроцедуры
1 НЕА123
 
14.02.20
10:20
СП у ДенисЧ спрашивай
2 Галахад
 
гуру
14.02.20
10:33
Для того чтобы сказать, что ты не правильно делаешь, нужно знать что бы хочешь сделать.
3 SeriyP
 
14.02.20
10:40
(0) ТабДок.Записать(Диалог.ПолноеИмяФайла,  ТипФайлаТабличногоДокумента.XLSX);
4 Doroheart
 
14.02.20
11:01
(2) перед открытием сохраненной excel пишет не соответствует разрешению файла. Возможно файл поврежден или небезопасен, а после открытия странные данные http://prntscr.com/r25skh
5 SeriyP
 
14.02.20
11:05
в Эксель сохраняете mxl
6 Doroheart
 
14.02.20
13:12
(5) в фильтр поставил (*.xlsx)|*.xlsx и ТабДок.Записать назначил ТипФайлаТабличногоДокумента.XLSX и взлетело. Если не указывать ТипФайла по стандарту mxl назначался.
7 catena
 
14.02.20
13:20
(6)Как собственно и написано в СП.