Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выгрузка табличной части документа в Excel
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
DenitScout
Здравствуйте, возникла проблема при выгрузке документа "РасходнаяНакладная" в файл.
При выгрузке табличной части в Excel выдаёт ошибку
Поле объекта не обнаружено (Товар)
ExcelЛист.Cells(ТекущаяСтрока,1).Value = Выборка.Товар;
Название всех реквизитов написано правильно.

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    РасхНакл.Товары.Товар,
|    РасхНакл.Товары.Цена,
|    РасхНакл.Товары.Количество,
|    РасхНакл.Товары.Стоимость,
|    РасхНакл.Товары.НДС,
|    РасхНакл.Товары.СуммаСНДС
|ИЗ
|    Документ.РасходнаяНакладная КАК РасхНакл
|ГДЕ
|    РасхНакл.Номер = &Номер";
Запрос.УстановитьПараметр("Номер",РасходнаяНакладная.Номер);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
        ExcelЛист.Cells(ТекущаяСтрока,1).Value = Выборка.Товар;
        ExcelЛист.Cells(ТекущаяСтрока,2).Value = Выборка.Цена;
        ExcelЛист.Cells(ТекущаяСтрока,3).Value = Выборка.Количество;
        ExcelЛист.Cells(ТекущаяСтрока,4).Value = Выборка.Стоимость;
        ExcelЛист.Cells(ТекущаяСтрока,5).Value = Выборка.НДС;
        ExcelЛист.Cells(ТекущаяСтрока,6).Value = Выборка.СуммаСНДС;
        ТекущаяСтрока = ТекущаяСтрока + 1;
КонецЦикла;

sava1
Цитата(DenitScout @ 23.02.19, 11:31) необходимо зарегистрироваться для просмотра ссылки
ВЫБРАТЬ | РасхНакл.Товары.Товар,


ВЫБРАТЬ 
    РасхНакл.Товары.Товар как Товао,
DenitScout
sava1 @ Сегодня, 12:47 необходимо зарегистрироваться для просмотра ссылки ,
Возникла ошибка
{Обработка.ВыгрузкаВExcel.Форма.Форма.Форма(57)}: Ошибка при установке значения атрибута контекста (Value)
ExcelЛист.Cells(ТекущаяСтрока,1).Value = Выборка.Товар;
по причине:
Произошла исключительная ситуация (0x800a03ec)
cwant
DenitScout @ Сегодня, 11:31 необходимо зарегистрироваться для просмотра ссылки ,
Попробуйте перед записью в первую ячейки преобразовать товар принудительно в строку СокрЛП(Выборка.Товар)
Но алиасы тоже лучше задать для каждого реквизита
DenitScout
cwant @ Сегодня, 13:07 необходимо зарегистрироваться для просмотра ссылки , Теперь проходит без ошибок, но документ Excel пустой, проверял должно быть 2 строки
TrasserZero
DenitScout @ Сегодня, 13:17 необходимо зарегистрироваться для просмотра ссылки ,
Из кода непонятно как с экселем взаимодействие идет..
Надо что-то типа так если ком-соединением

Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks().Add();
Лист = Книга.Sheets(1);    
Лист.Cells(1,1).Value = "Тест";
Книга.SaveAS("E:\test.xls");
Книга.Close();
Эксель.Quit();
Alegzander
ТекущаяСтрока где определяется?
Перед циклом:
ТекущаяСтрока = 1;
TipsyKID
Не совсем по теме скажу, т.к. возможно Вам надо дополнить конкретный эксель или конкретный лист, но если это создания нового Exel файла с нуля, то лучше вообще сделать это штатными механизмами 1с:

Запрос вставить в скд, программно сформировать его выполнение в табличный документ а табличный документ сохранить через метод
Записать(ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLSX);


Т.к. этот геморой с Exel как COMОбъект очень разнообразен.
Vidocq05
Цитата(TipsyKID @ 25.02.19, 12:42) необходимо зарегистрироваться для просмотра ссылки
Запрос вставить в скд, программно сформировать его выполнение в табличный документ а табличный документ сохранить через метод

Не совсем понял Ваш метод. Можно подробнее?

Я использую во внешней обработке "Конструктор запроса с обработкой результата" и на первой вкладке выбираю Тип обработки "Вывод в табличный документ". Потом, если нужно, корректирую и
МойТабДок.Записать(ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLSX);

Но Ваш метод мне тоже интересен.
TipsyKID
Vidocq05 @ Сегодня, 13:25 необходимо зарегистрироваться для просмотра ссылки ,

Как то так, разници между обработкой и просто куском кода нет, лишь то откуда брать макет из обработки, из общего макета или макета документа:

&НаСервере
Процедура ВывестиСКДВТабличныйДокумент(МакетСКД, ТабличныйДокумент, КомпоновщикНастроек = Неопределено)
    
    Если КомпоновщикНастроек = Неопределено Тогда
        КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
        КомпоновщикНастроек.ЗагрузитьНастройки(МакетСКД.НастройкиПоУмолчанию);        
    КонецЕсли;
    
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();  
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(МакетСКД, Настройки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
    
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
КонецПроцедуры

&НаСервере
Процедура КомандаВывестиВТабличныйДокументНаСервере()
    
    Обработка =  РеквизитФормыВЗначение("Объект");
    Макет = Обработка.ПолучитьМакет("Макет");    
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ВывестиСКДВТабличныйДокумент(Макет,ТабличныйДокумент);
    
    ТабличныйДокумент.Записать(<ПолныйПутьКФайлу>,ТипФайлаТабличногоДокумента.XLSX);
    
КонецПроцедуры

&НаКлиенте
Процедура КомандаВывестиВТабличныйДокумент(Команда)
    КомандаВывестиВТабличныйДокументНаСервере();
КонецПроцедуры
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.