Доработать выгрузку в excel
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Показано с 1 по 3 из 3
  1. #1
    Гость форума

    Регистрация
    26.07.2012
    Сообщений
    2
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Доработать выгрузку в excel

    Приветствую.
    Помогите доработать выгрузку справочника в 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();
    		Исключение
    		КонецПопытки;
    	КонецПопытки;
    Что бы выгружались не только реквизиты справочника, но и данные из его Формы Элемента:
    Последний раз редактировалось Stormday; 30.07.2012 в 18:07.

  2. #2
    Гость форума

    Регистрация
    26.07.2012
    Сообщений
    2
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию

    Задача сводится к тому, как ПРАВИЛЬНО обратиться к реквизитам Элемента Формы.

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

  3. #3
    Гость форума

    Регистрация
    07.06.2012
    Сообщений
    5
    Сказал(а) спасибо
    0
    Поблагодарили 4 раз(а) в 3 сообщениях

    По умолчанию

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

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

  4. 2 пользователя(ей) сказали cпасибо:

    Balu203 (15.08.2012), Stormday (31.07.2012)

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •