Здравствуйте, возникла проблема при выгрузке документа "РасходнаяНакладная" в файл.
При выгрузке табличной части в 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 @ Сегодня, 12:47
,
Возникла ошибка
{Обработка.ВыгрузкаВExcel.Форма.Форма.Форма(57)}: Ошибка при установке значения атрибута контекста (Value)
ExcelЛист.Cells(ТекущаяСтрока,1).Value = Выборка.Товар;
по причине:
Произошла исключительная ситуация (0x800a03ec)
DenitScout @ Сегодня, 11:31
,
Попробуйте перед записью в первую ячейки преобразовать товар принудительно в строку СокрЛП(Выборка.Товар)
Но алиасы тоже лучше задать для каждого реквизита
cwant @ Сегодня, 13:07
, Теперь проходит без ошибок, но документ Excel пустой, проверял должно быть 2 строки
DenitScout @ Сегодня, 13:17
,
Из кода непонятно как с экселем взаимодействие идет..
Надо что-то типа так если ком-соединением
Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks().Add();
Лист = Книга.Sheets(1);
Лист.Cells(1,1).Value = "Тест";
Книга.SaveAS("E:\test.xls");
Книга.Close();
Эксель.Quit();
ТекущаяСтрока где определяется?
Перед циклом:
ТекущаяСтрока = 1;
Не совсем по теме скажу, т.к. возможно Вам надо дополнить конкретный эксель или конкретный лист, но если это создания нового Exel файла с нуля, то лучше вообще сделать это штатными механизмами 1с:
Запрос вставить в скд, программно сформировать его выполнение в табличный документ а табличный документ сохранить через метод
Записать(ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLSX);
МойТабДок.Записать(ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLSX);
Vidocq05 @ Сегодня, 13:25
,
Как то так, разници между обработкой и просто куском кода нет, лишь то откуда брать макет из обработки, из общего макета или макета документа:
&НаСервере
Процедура ВывестиСКДВТабличныйДокумент(МакетСКД, ТабличныйДокумент, КомпоновщикНастроек = Неопределено)
Если КомпоновщикНастроек = Неопределено Тогда
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.ЗагрузитьНастройки(МакетСКД.НастройкиПоУмолчанию);
КонецЕсли;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(МакетСКД, Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
&НаСервере
Процедура КомандаВывестиВТабличныйДокументНаСервере()
Обработка = РеквизитФормыВЗначение("Объект");
Макет = Обработка.ПолучитьМакет("Макет");
ТабличныйДокумент = Новый ТабличныйДокумент;
ВывестиСКДВТабличныйДокумент(Макет,ТабличныйДокумент);
ТабличныйДокумент.Записать(<ПолныйПутьКФайлу>,ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
&НаКлиенте
Процедура КомандаВывестиВТабличныйДокумент(Команда)
КомандаВывестиВТабличныйДокументНаСервере();
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua