Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как выгрузить таблицу значений (далее ТЗ) в excel ?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
cobra77777
Я только учусь. Есть код. Один вопрос: Как можно выгрузить ТЗ в excel след. структуры:

Страховой номер Фамилия Имя Отчество

Спасибо.



&НаКлиенте
Процедура ТаблицаЗначений(Команда)
    ТЗ ()
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ТЗ ()
    

                                                          
Чтение = Новый ЧтениеXML;


ТЗ = Новый ТаблицаЗначений;


ТЗ.Колонки.Добавить ("СтраховойНомер");
ТЗ.Колонки.Добавить ("Фамилия");
ТЗ.Колонки.Добавить ("Имя");
ТЗ.Колонки.Добавить ("Отчество");


ТЗ.Очистить();

Файл = Новый ЧтениеXML;
Файл.ОткрытьФайл("c:\1.xml");
ИмяУзла = "";

Пока Файл.Прочитать() Цикл

Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяУзла = Файл.Имя;
КонецЕсли;

Если Файл.ТипУзла = ТипУзлаXML.Текст и ИмяУзла = "СтраховойНомер" Тогда
НовСтр = ТЗ.Добавить();
НовСтр.СтраховойНомер = Файл.Значение;
КонецЕсли;

Если Файл.ТипУзла = ТипУзлаXML.Текст и ИмяУзла = "Фамилия" Тогда
НовСтр = ТЗ.Добавить();
НовСтр.Фамилия = Файл.Значение;
КонецЕсли;
                                                        
Если Файл.ТипУзла = ТипУзлаXML.Текст и ИмяУзла = "Имя" Тогда
НовСтр = ТЗ.Добавить();
НовСтр.Имя = Файл.Значение;
КонецЕсли;

Если Файл.ТипУзла = ТипУзлаXML.Текст и ИмяУзла = "Отчество" Тогда
НовСтр = ТЗ.Добавить();
НовСтр.Отчество = Файл.Значение;
КонецЕсли;

КонецЦикла;

Файл.Закрыть();

  
КонецПроцедуры



 ! 

Выделяйте код!
 
zetovich
Формируем макет, а макет сохранить в *.xls.
Petre
Цитата(zetovich @ 25.06.14, 17:44) необходимо зарегистрироваться для просмотра ссылки
Формируем макет, а макет сохранить в *.xls

Правильнее не макет, а табличный документ.
cobra77777
Цитата(Petre @ 25.06.14, 18:11) необходимо зарегистрироваться для просмотра ссылки


если не сложно можете привезти пример как это сделать ?
Домовик
вот в семерке была возможность в самой пользовательской системе платформы при выводе отчета, "сохранить как" в формате mxl, потом ее открывать в Экселе, при большом желании уже там сохранить в нужном формате.


Уу Восьмерке вообще ж дожно все быть как в космосе. так?
Vofka
необходимо зарегистрироваться для просмотра ссылки
zetovich
Цитата(Petre @ 25.06.14, 18:11) необходимо зарегистрироваться для просмотра ссылки
Правильнее не макет, а табличный документ.

Как бы макет вернее, а вот тип макета, да, - ТабличныйДокумент.
Petre
Цитата(zetovich @ 25.06.14, 21:11) необходимо зарегистрироваться для просмотра ссылки
Как бы макет вернее...

Офф.
В контексте "... макет сохранить в *.xls" как раз не правильно. Не каждый "макет" можно сохранить в ексель. Тем более что "макет" в 1с это только объект метаданных, его нельзя создать программно, он доступен только для чтения.
Цитата(cobra77777 @ 25.06.14, 18:31) необходимо зарегистрироваться для просмотра ссылки
если не сложно можете привезти пример как это сделать ?

Самая примитивная процедурка примерно такая:
Процедура ТЗвТДивЕксель(ТаблицаЗначений, ИмяФайла)
    ТД = Новый ТабличныйДокумент;
    КолонокВсего = ТаблицаЗначений.Колонки.Количество();
    Для Колонка = 1 По КолонокВсего Цикл
        ТД.Область(1, Колонка).Текст = ТаблицаЗначений.Колонки[Колонка - 1].Заголовок;
    КонецЦикла;
    Строка = 1;
    Для Каждого ТаблицаСтрока Из ТаблицаЗначений Цикл
        Строка = Строка + 1;
        Для Колонка = 1 По КолонокВсего Цикл
            ТД.Область(Строка, Колонка).Текст = ТаблицаСтрока.Получить(Колонка - 1);
        КонецЦикла;
    КонецЦикла;
    ТД.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры
cobra77777
На форме создал кнопку ВыгрузитьВXLS при проверки модуля выдаёт ошибку :

{Обработка.ТаблицаЗначений.Форма.Форма.Форма(68,36)}: Переменная не определена (ИмяФайла)
ТЗвТДивЕксель (ТаблицаЗначений, <<?>>ИмяФайла) (Проверка: Тонкий клиент)

Что неправильно ?

&НаКлиенте
Процедура ВыгрузитьВXLS(Команда)
    
     ТЗвТДивЕксель (ТаблицаЗначений, ИмяФайла)
    
КонецПроцедуры


  &НаСервере
Процедура ТЗвТДивЕксель (ТаблицаЗначений, ИмяФайла)
    
    
    
    ТД = Новый ТабличныйДокумент;

    КолонокВсего = ТаблицаЗначений.Количество();
    Для Колонка = 1 По КолонокВсего Цикл
        ТД.Область(1, Колонка).Текст = ТаблицаЗначений.Колонки[Колонка - 1].Заголовок;
    КонецЦикла;
    Строка = 1;
    Для Каждого ТаблицаСтрока Из ТаблицаЗначений Цикл
        Строка = Строка + 1;
        Для Колонка = 1 По КолонокВсего Цикл
            ТД.Область(Строка, Колонка).Текст = ТаблицаСтрока.Получить(Колонка - 1);
        КонецЦикла;
    КонецЦикла;
    ТД.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);    
    
    
    
КонецПроцедуры



 ! 

Выделяйте код!
 
Vofka
cobra77777, последнее предупреждение: выделяйте код!
sava1
Ну и что передаете в процедуру на сервер?
ИмяФайла надо хотя-бы объявить.
А дальше начнет ругаться на передачу мутабельных значений...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.