PDA

Просмотр полной версии : Доработать выгрузку в excel



Stormday
30.07.2012, 18:03
Приветствую.
Помогите доработать выгрузку справочника в Excel



Попытка
Попытка
// Загрузка Microsoft Excel
Состояние("Выгрузка данных из 1С в Microsoft Excel...");
ExcelПриложение = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Ошибка при загрузке Microsoft Excel."
+ Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

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

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

// Сформировать шапку документа в первой строке листа
Колонка = 1;
Для каждого стр из ТП цикл
Если стр.Выгружать Тогда
Лист.Cells(1, Колонка).Value = стр.НазваниеРеквизита;
Колонка = Колонка + 1;
КонецЕсли;
КонецЦикла;

// Выгрузить данные справочника
выборка = Справочники[ИмяСправочника].Выбрать();
СтрокаЛиста = 2;
Пока выборка.Следующий() Цикл
Колонка = 1;
Для каждого стр из ТП цикл
Если стр.Выгружать Тогда
Попытка
// Установим значение в строке и колонке
Если ТипЗнч(выборка[стр.НазваниеРеквизита])=Тип("Число") Тогда
// Установним формат для типа Число
Лист.Cells(СтрокаЛиста, Колонка).NumberFormat = "0,00";
Лист.Cells(СтрокаЛиста, Колонка).Value =
Формат(выборка[стр.НазваниеРеквизита],"ЧГ=0");
иначе
// Для всех других типов установим формат "Текстовый"
Лист.Cells(СтрокаЛиста, Колонка).NumberFormat = "@";
Лист.Cells(СтрокаЛиста, Колонка).Value =
Строка(выборка[стр.НазваниеРеквизита]);
КонецЕсли;
исключение
// Если значение реквизита справочника постое
Сообщить("Ошибка установки значения для: " +
выборка[стр.НазваниеРеквизита]);
Сообщить("Стр: " +СтрокаЛиста+ " Кол: " +
Колонка+ " Рек: " + стр.НазваниеРеквизита);
КонецПопытки;
Колонка = Колонка + 1;
КонецЕсли;
Колонка = Колонка + 1;
КонецЦикла;
СтрокаЛиста = СтрокаЛиста + 1;
Состояние("Экспорт из 1С в Excel " + СтрокаЛиста);
КонецЦикла;

// Сохраним созданныую книгу в файл xls
Книга.SaveAs(имяФайла);

ExcelПриложение.Quit();

// Записать xls файл
Сообщить("Файл выгружен успешно: " + имяФайла );
Исключение
// Обработка ошибок экспорта данных из 1С в Excel
Сообщить("Ошибка записи данных файла :" + имяФайла);
Сообщить(ОписаниеОшибки());
Попытка
ExcelПриложение.Quit();
Исключение
КонецПопытки;
КонецПопытки;

Что бы выгружались не только реквизиты справочника, но и данные из его Формы Элемента:
http://s1.ipicture.ru/uploads/20120730/wVXF8Wop.png (http://s1.ipicture.ru/Gallery/Viewfull/12136324.html)

Stormday
30.07.2012, 20:19
Задача сводится к тому, как ПРАВИЛЬНО обратиться к реквизитам Элемента Формы.
http://s1.ipicture.ru/uploads/20120730/6IUaF3BL.png (http://s1.ipicture.ru/)
Найдите, пожалуйста, ошибку в коде:


Для каждого стр из Справочники.Контрагенты.Фо рмы.ФормаЭлемента.НаборКон тактнойИнформации цикл
Попытка
Если ТипЗнч(выборка[стр.НазваниеРеквизита])=Тип("Число") Тогда
Лист.Cells(СтрокаЛиста, Колонка).NumberFormat = "0,00";
Лист.Cells(СтрокаЛиста, Колонка).Value =
Формат(выборка[стр.НазваниеРеквизита],"ЧГ=0");
иначе
Лист.Cells(СтрокаЛиста, Колонка).NumberFormat = "@";
Лист.Cells(СтрокаЛиста, Колонка).Value =
Строка(выборка[стр.НазваниеРеквизита]);
КонецЕсли;
исключение
Сообщить("Ошибка установки значения для: " +
выборка[стр.НазваниеРеквизита]);
Сообщить("Стр: " +СтрокаЛиста+ " Кол: " +
Колонка+ " Рек: " + стр.НазваниеРеквизита);
КонецПопытки;
Колонка = Колонка + 1;
КонецЦикла;

AlexeyKh
31.07.2012, 10:45
Да какая ошибка? У вас вообще нет ни какого представления об 1С. То что вы видите на форме элемента справочника, это куча дополнительной информации из других объектов 1С, информация может быть из других справочников, регистров сведений, регистров накоплений, документов и т.д.
1.вам сначала надо решить какие поля(данные) справочника вы будете выгружать.
2.постороить запрос ко всем нужным объектам что бы получить эти данные.
Затем, уже результат запроса записывать куда вам необходимо.

//ваш код
Для каждого стр из Справочники.Контрагенты.Фо рмы.ФормаЭлемента.НаборКон тактнойИнформации цикл
Полный бред! такого свойства .Формы. нет. Есть метод ПолучитьФорму(...) который вернет вам пустую форму.