Имя: Пароль:
1C
 
Выгрузка из 1С в Excel
, ,
0 Олеся999
 
12.03.15
07:27
Код:
&НаСервере
Процедура ВыгрузитьНаСервере()
  
    ТзПодразделенийОрганизации = Объект.ТаблицаSMD;
    
    Попытка
        Эксель = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    Книга = Эксель.WorkBooks.Add();
        
    Лист = Книга.WorkSheets(1);
    Лист = Книга.Sheets.Add();
    
    НомерСтроки = 1;
    Для Каждого Строка ИЗ Объект.ТаблицаSMD Цикл
        Лист.Cells(НомерСтроки, 1).Value = Строка.Designator;
        Лист.Cells(НомерСтроки, 2).Value = Строка.MyData;
        Лист.Cells(НомерСтроки, 3).Value = Строка.Номенклатура;
        Лист.Cells(НомерСтроки, 4).Value = Строка.Quantity;
        НомерСтроки = НомерСтроки + 1;
    КонецЦикла;
    
    Попытка
        Книга.SaveAs("C:\1c");
    Исключение
        Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
    КонецПопытки;
    
    Эксель.Application.Quit();
    
КонецПроцедуры

Почемуто выдает ошибку : {Справочник.СпецификацияТК.Форма.ФормаЭлемента.Форма(194)}: Ошибка при установке значения атрибута контекста (Value)
        Лист.Cells(НомерСтроки, 3).Value = Строка.Номенклатура;
по причине:
Произошла исключительная ситуация (0x800a03ec)
Произошла исключительная ситуация (0x800a03ec)
Кто знает в чем дело?
1 Лодырь
 
12.03.15
07:29
подозреваю что эксель не очень хочет кушать в качестве значения ссылку на номенклатуру.
2 ShoGUN
 
12.03.15
07:32
(0) А нафига так делать-то? Сделай обычный отчёт, сохрани в формате Excel.
3 bolobol
 
12.03.15
07:34
(0) Подозреваю, что знает в чём дело только отладчик, но он не "кто", а "что", но - помогает.
Какое значение передаётся в ячейку в момент возникновения ошибки?
4 Олеся999
 
12.03.15
07:35
(2) Мне нужно чтобы выгрузка была  по Событию нажатия кнопки
5 ShoGUN
 
12.03.15
07:36
(4) И что? Сформируй обычный отчёт в ТабличныйДокумент, сохрани его в Excel программно.
6 su_mai
 
12.03.15
07:40
7 Олеся999
 
12.03.15
07:43
Тормозится на Лист.Cells(НомерСтроки, 3).Value = Строка.Номенклатура;

Коментирую  эту строку ://Лист.Cells(НомерСтроки, 3).Value = Строка.Номенклатура; выгружает всё отлично:)
http://lvkr.ru/f/UgkGRF/1280.jpg
8 ДенисЧ
 
12.03.15
07:44
Тормозится на Лист.Cells(НомерСтроки, 3).Value = Строка.Номенклатура.Наименование;
попробуй
9 Олеся999
 
12.03.15
07:48
(8) Круто помогло ! :) спасибо :)))
10 bolobol
 
12.03.15
07:51
У... всего с третьего раза))
11 ShoGUN
 
12.03.15
07:56
Извращенцы. Есть готовый инструмент, нет, надо всё руками в Excel фигачить...
12 Лодырь
 
12.03.15
07:59
(11) ну кстати, руками в эксель можно такого понапихать, чего "готовыми инструментами" не сделать.
13 ShoGUN
 
12.03.15
08:10
(12) Можно, но в (0) я такого не наблюдаю.
14 yavasya
 
12.03.15
08:29
Лист.Cells(НомерСтроки, 3).Value = Строка.Номенклатура.наименование;
15 yavasya
 
12.03.15
08:29
Лист.Cells(НомерСтроки, 3).Value =""+ Строка.Номенклатура.наименование;
16 yavasya
 
12.03.15
08:29
Лист.Cells(НомерСтроки, 3).Value =""+ Строка.Номенклатура;
17 yavasya
 
12.03.15
08:30
(8) не прочитал