Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как выгрузить таблицу значений (далее ТЗ) в excel ?          
cobra77777 Подменю пользователя
сообщение 25.06.14, 16:10
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 25
Спасибо сказали: 0 раз
Рейтинг: 0

Я только учусь. Есть код. Один вопрос: Как можно выгрузить ТЗ в excel след. структуры:

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

Спасибо.



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

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

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


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


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


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

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

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

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

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

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

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

КонецЦикла;

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

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



 ! 

Выделяйте код!
 


Сообщение отредактировал Vofka - 25.06.14, 16:39

zetovich Подменю пользователя
сообщение 25.06.14, 16:44
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 718
Из: Северодонецк
Спасибо сказали: 121 раз
Рейтинг: 0

Формируем макет, а макет сохранить в *.xls.

Petre Подменю пользователя
сообщение 25.06.14, 17:11
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(zetovich @ 25.06.14, 17:44) *
Формируем макет, а макет сохранить в *.xls

Правильнее не макет, а табличный документ.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

cobra77777 Подменю пользователя
сообщение 25.06.14, 17:31
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 25
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Petre @ 25.06.14, 18:11) *


если не сложно можете привезти пример как это сделать ?

Домовик Подменю пользователя
сообщение 25.06.14, 17:37
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

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


Уу Восьмерке вообще ж дожно все быть как в космосе. так?

Сообщение отредактировал Домовик - 25.06.14, 17:37

Vofka Подменю пользователя
сообщение 25.06.14, 18:24
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

http://pro1c.org.ua/index.php?showtopic=10482

zetovich Подменю пользователя
сообщение 25.06.14, 20:11
Сообщение #7

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 718
Из: Северодонецк
Спасибо сказали: 121 раз
Рейтинг: 0

Цитата(Petre @ 25.06.14, 18:11) *
Правильнее не макет, а табличный документ.

Как бы макет вернее, а вот тип макета, да, - ТабличныйДокумент.

Petre Подменю пользователя
сообщение 26.06.14, 8:48
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(zetovich @ 25.06.14, 21:11) *
Как бы макет вернее...

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

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


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

cobra77777 Подменю пользователя
сообщение 26.06.14, 13:24
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 25
Спасибо сказали: 0 раз
Рейтинг: 0

На форме создал кнопку ВыгрузитьВXLS при проверки модуля выдаёт ошибку :

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

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

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


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

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



 ! 

Выделяйте код!
 


Сообщение отредактировал Vofka - 26.06.14, 13:51

Vofka Подменю пользователя
сообщение 26.06.14, 13:51
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

cobra77777, последнее предупреждение: выделяйте код!

sava1 Подменю пользователя
сообщение 26.06.14, 14:33
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Ну и что передаете в процедуру на сервер?
ИмяФайла надо хотя-бы объявить.
А дальше начнет ругаться на передачу мутабельных значений...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 10:51
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!