Имя: Пароль:
1C
1С v8
выгрузка в ексель дает ошибку Произошла исключительная ситуация (0x800a03ec)
0 koketka
 
21.01.13
13:47
Произошла исключительная ситуация (0x800a03ec)
1 koketka
 
21.01.13
13:47
Процедура Отчет(ТабДок, ДатаВыгрузки, СчетВыгрузки) Экспорт

//  Попытка
   Попытка
     // Загрузка объекта Microsoft Excel
     Состояние("Выгрузка данных из 1С в Microsoft Excel...");
     ExcelПриложение =  Новый COMОбъект("Excel.Application");

   Исключение
     Сообщить("Ошибка при запуске Microsoft Excel."
       + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
     Возврат;
   КонецПопытки;

   // Создадим книгу, по умолчанию в ней уже есть листы
   Книга = ExcelПриложение.WorkBooks.Add();


   // Используем первый лист книги Excel
   ТекЛист = Книга.WorkSheets(1);

  Макет = ВнешняяОбработкаОбъект.ПолучитьМакет("Отчет");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ХозрасчетныйОстатки.Счет,
   |    ХозрасчетныйОстатки.Организация,
   |    ХозрасчетныйОстатки.Валюта,
   |    ХозрасчетныйОстатки.Подразделение,
   |    ХозрасчетныйОстатки.Номенклатура,
   |    ХозрасчетныйОстатки.Склад,
   |    ХозрасчетныйОстатки.СуммаОстатокДт,
   |    ХозрасчетныйОстатки.СуммаОстатокКт,
   |    ХозрасчетныйОстатки.ВалютнаяСуммаОстатокДт,
   |    ХозрасчетныйОстатки.ВалютнаяСуммаОстатокКт,
   |    ХозрасчетныйОстатки.КоличествоОстатокДт,
   |    ХозрасчетныйОстатки.КоличествоОстатокКт,
   |    ХозрасчетныйОстатки.Субконто1.Ссылка КАК Субконто1,
   |    ХозрасчетныйОстатки.Субконто2.Ссылка КАК Субконто2,
   |    ХозрасчетныйОстатки.Субконто3.Ссылка КАК Субконто3,
   |    ХозрасчетныйОстатки.Субконто4.Ссылка КАК Субконто4
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаВыгрузки, Счет = &СчетВыгрузки, , ) КАК ХозрасчетныйОстатки
   |ГДЕ
   |    ХозрасчетныйОстатки.Организация = &Организация";

   Запрос.УстановитьПараметр("ДатаВыгрузки", КонецДня(ДатаВыгрузки));
   Запрос.УстановитьПараметр("СчетВыгрузки", СчетВыгрузки);
   Запрос.УстановитьПараметр("Организация", Справочники.Организации.НайтиПоКоду("00001"));
   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);

   ВыборкаДетали = Результат.Выбрать();
   а  = 0;

   Пока ВыборкаДетали.Следующий() Цикл
       а = а+1;
       ТекЛист.Cells(а, 2).Value = ВыборкаДетали.Счет;
       ТекЛист.Cells(а, 7).Value = ВыборкаДетали.Организация;
       ТекЛист.Cells(а, 8).Value = ВыборкаДетали.Валюта;
       ТекЛист.Cells(а, 9).Value = ВыборкаДетали.Подразделение;
       ТекЛист.Cells(а, 10).Value = ВыборкаДетали.СуммаОстатокДт;
       ТекЛист.Cells(а, 11).Value = ВыборкаДетали.СуммаОстатокКт;
       ТекЛист.Cells(а, 12).Value = ВыборкаДетали.ВалютнаяСуммаОстатокДт;
       ТекЛист.Cells(а, 13).Value = ВыборкаДетали.ВалютнаяСуммаОстатокКт;
       ТекЛист.Cells(а, 14).Value = ВыборкаДетали.КоличествоОстатокДт;
       ТекЛист.Cells(а, 15).Value = ВыборкаДетали.КоличествоОстатокКт;

       ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
       Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто1)) = Истина Тогда
           ОбластьДетальныхЗаписей.Параметры.Субконто_1 = ВыборкаДетали.Субконто1.Код;
           ТекЛист.Cells(а, 3).Value = ВыборкаДетали.Субконто1.Код;

       ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто1)) = Истина  Тогда
           ОбластьДетальныхЗаписей.Параметры.Субконто_1 = ВыборкаДетали.Субконто1;
           ТекЛист.Cells(а, 3).Value = ВыборкаДетали.Субконто1;

       КонецЕсли;
       Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто2)) = Истина Тогда
            ОбластьДетальныхЗаписей.Параметры.Субконто_2 = ВыборкаДетали.Субконто2.Код;
            ТекЛист.Cells(а, 4).Value = ВыборкаДетали.Субконто2.Код;

        ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто2)) = Истина  Тогда
             ОбластьДетальныхЗаписей.Параметры.Субконто_2 = ВыборкаДетали.Субконто2;
             ТекЛист.Cells(а, 4).Value = ВыборкаДетали.Субконто2;

       КонецЕсли;

       Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто3)) = Истина Тогда
           ОбластьДетальныхЗаписей.Параметры.Субконто_3 = ВыборкаДетали.Субконто3.Код;
           ТекЛист.Cells(а, 5).Value = ВыборкаДетали.Субконто3.Код;

       ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто3)) = Истина Тогда
            ОбластьДетальныхЗаписей.Параметры.Субконто_3 = ВыборкаДетали.Субконто3;
            ТекЛист.Cells(а, 5).Value = ВыборкаДетали.Субконто3;

       КонецЕсли;

       Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто4)) = Истина Тогда
           ОбластьДетальныхЗаписей.Параметры.Субконто_4 = ВыборкаДетали.Субконто4.Код;
           ТекЛист.Cells(а, 6).Value = ВыборкаДетали.Субконто4.Код;

       ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто4)) = Истина Тогда
            ОбластьДетальныхЗаписей.Параметры.Субконто_4 = ВыборкаДетали.Субконто4 ;
            ТекЛист.Cells(а, 6).Value = ВыборкаДетали.Субконто4;

       КонецЕсли;
               
               ТабДок.Вывести(ОбластьДетальныхЗаписей);
   КонецЦикла;

   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);

   Попытка
       Книга.SaveAs("d:\vo.xls");
       Сообщить("d:\vo.xls Файл сохранен!");
   Исключение
       Сообщить("d:\vo.xls Файл не сохранен!");
   КонецПопытки;
   ExcelПриложение.Application.Quit();
   КомандаСистемы("taskkill /F /IM excel.exe");
   //КонецПопытки;
//  КонецПопытки;
КонецПроцедуры
2 koketka
 
21.01.13
14:44
неужели не у кого не было?
3 koketka
 
21.01.13
15:19
все дошло!
ТекЛист.Cells(а, 2).Value = Строка(ВыборкаДетали.Счет);
и заработало
4 vmv
 
21.01.13
15:33
только хотел написать

ТекЛист.Cells(а, 2).Value = ВыборкаДетали.Счет;

и что ексель уже такой умный, что на лету конвертирует чужеродные типы данных?)
Ошибка? Это не ошибка, это системная функция.