Есть таблица значений. Нужно ее быстро сохранить в Excel программно.
Как это сделать? Подскажите плиз.
Знаю есть метод Записать ТабличногоДокумента. Но как из ТаблицыЗначений сделать ТабличныйДокумент?
Чую что тупой вопрос, ну вот и программист я такой же :)
//Это код для 7.7
//легко переводится для 8.x
//макет на картинке
//======================================================================
Процедура ВывестиТЗвТаблицу(ТЗ, Заголовок = "")
ТЕхел = СоздатьОбъект("Таблица");
ТЕхел.ИсходнаяТаблица("Ехел");
ТЗ.ВыбратьСтроки();
Параметр = "";
Для ин=1 По ТЗ.КоличествоКолонок() Цикл
ТЗ.ПолучитьПараметрыКолонки(ин,,,,Параметр,,,);
Если ин=1 Тогда
ТЕхел.ВывестиСекцию("Секция_1|Секция_2");
Иначе
ТЕхел.ПрисоединитьСекцию("Секция_1|Секция_2");
КонецЕсли;
КонецЦикла;
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Для ин=1 По ТЗ.КоличествоКолонок() Цикл
параметр = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, ин);
Если ин=1 Тогда
ТЕхел.ВывестиСекцию("Секция_1|Секция_2");
Иначе
ТЕхел.ПрисоединитьСекцию("Секция_1|Секция_2");
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТЕхел.Показать(Заголовок);
КонецПроцедуры // ВывестиТЗвТаблицу
Копируете данные из таблицы значений в табличный документ, потом сохраняете...
сразу видно что имеем дело с очень начитанным человеком.
жаль только мозгов нет чтобы умело обрабатывать те знания что напихал в голову.
сложно написать пример команды?
Описание:
Используется для доступа к свойствам и методам табличного документа в целом. При помощи этого объекта возможно управление общими характеристиками табличного документа, получение его областей, а также присоединение к табличному документу других табличных документов, группировка строк и колонок табличного документа.
Для табличного документа системой устанавливается язык по умолчанию.
Сериализуется.
Показать
а толку?
нашел метод Записать. он то мне и нужен.
у меня уже есть ТаблицаЗначений. создать ТабличныйДокумент смогу по аналогии с тем кодом что есть в программе.
Но как ТЗ запихнуть в ТД я ХЗ. И в помощнике найти метод не смог. и в Яндексе нашел только ссылку на мисту, где десяток батанов всю страницу усерались над этим вопросом и не один не ответил.
Если вопросы есть, а ответов нет, то есть смысл этот ответ сделать. Даже если он есть в книжках. Любой ответ всегда можно найти. Просто вопрос времени.
Я не программист 1С. просто понимаю как эта штука устроена и иногда под свои задачки дописываю ее. Но вот уперся тут и все. Не могу пройти. Понятно что рано или поздно найду ответ. Или программиста который напишет. Но вот помощь знатоков очень бы сэкономило время. Для того и есть форумы.
Но вместо молчания (если нет времени) или ответа (если время есть) получаешь какие то ссылки и высказывания о том "как это все просто" и "какой глупый вопрос, мне аж на атвечать в падлу".
А потом удивляемся почему обычные люди программистов с трудом переваривают.
>А потом удивляемся почему обычные люди программистов с трудом переваривают.
Я еще отвечаю - а поиском воспользоваться религия не позволяет?..
искал. Яндексом. тут искал примеры разработок где сохранение в Excel есть. В XML нашел. В Excel нет. Поиском пользоваться более или менее умею. Просто он не всегда выдает то что нужно тогда когда нужно.
Что сложного дать ссылку на то место где есть пример или просто дать пример кода?
А вот это просто в яблочко!
Ну и где скажи мне пожалуйста в ЖКК такая красота написана?
Кстати за отсутствие реакции на мой выпад отдельный респект. Показатель силы и уверенности! Обычный чудик сорвался бы в перепалку ))
P.S. меня тоже раздражают тупые новички, в моей области, но без них никуда, и я либо просто не обращаю внимание, либо молча помогаю если есть время и возможность. но вот издеваться это низко ) все люди.
а я вот поддержу Душелова. Получается, чукча не писатель, чукча читатель? давайте все мы на форуме будем задавать такие вопросы... у меня, к примеру, есть много не решенных технических вопросов... зачем учиться, читать книжки, буду их задавать на форумах, с требованием предоставления исходного кода :D
(15) Иногда можно 20 раз прочитать книжку и ничего не понять, но достаточно, чтобы кто-то объяснил это же, но другим языком и всё сразу становится понятно
/////8.* прмерно так можно (набивал прям от сюда, возможны ошибки)
//// ТЗ - это таблица значений
тд = новый табличныйДокумент;
//// дапустим в макете есть область "область" с параметрами пар1 и пар2 (если что его можно создать)
макет = получитьМакет("<егоИмя>");
область = макет.получитьОбласть("область");
для каждого элемент из ТЗ цикл
область.параметры.пар1 = элемент.знач1; ////думаю ясно что есть занч1
область.пара...
конеццикла;
Тд.показать(); //его увидешь, ну а дальше там смотри как
//Это код для 7.7
//легко переводится для 8.x
//макет на картинке
//======================================================================
Процедура ВывестиТЗвТаблицу(ТЗ, Заголовок = "")
ТЕхел = СоздатьОбъект("Таблица");
ТЕхел.ИсходнаяТаблица("Ехел");
ТЗ.ВыбратьСтроки();
Параметр = "";
Для ин=1 По ТЗ.КоличествоКолонок() Цикл
ТЗ.ПолучитьПараметрыКолонки(ин,,,,Параметр,,,);
Если ин=1 Тогда
ТЕхел.ВывестиСекцию("Секция_1|Секция_2");
Иначе
ТЕхел.ПрисоединитьСекцию("Секция_1|Секция_2");
КонецЕсли;
КонецЦикла;
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Для ин=1 По ТЗ.КоличествоКолонок() Цикл
параметр = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, ин);
Если ин=1 Тогда
ТЕхел.ВывестиСекцию("Секция_1|Секция_2");
Иначе
ТЕхел.ПрисоединитьСекцию("Секция_1|Секция_2");
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТЕхел.Показать(Заголовок);
КонецПроцедуры // ВывестиТЗвТаблицу
//======================================================================
Процедура ВывестиТЗвТаблицу(ТЗ, Заголовок = "")
ТЕхел = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Ехел");
Область = Макет.ПолучитьОбласть("Секция_1|Секция_2");
Для ин=0 По ТЗ.Колонки.Количество()-1 Цикл
Область.Параметры.Параметр = ТЗ.Колонки[ин].Имя;
Если ин=1 Тогда
ТЕхел.Вывести(Область);
Иначе
ТЕхел.Присоединить(Область);
КонецЕсли;
КонецЦикла;
Для каждого Стр Из ТЗ Цикл
Для ин=0 По ТЗ.Колонки.Количество()-1 Цикл
Область.Параметры.Параметр = Стр[ин];
Если ин=1 Тогда
ТЕхел.Вывести(Область);
Иначе
ТЕхел.Присоединить(Область);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТЕхел.Показать(Заголовок);
имяФайла = ?(ПустаяСтрока(Заголовок), ПолучитьИмяВременногоФайла(), КаталогВременныхФайлов()+"\"+Заголовок+".xls");
ТЕхел.Записать(имяФайла, ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры // ВывестиТЗвТаблицу
Процедура ЗаписатьТаблицуЗначенийВcsv(тз, ИмяФайла, Разделитель=";")
ФайлCSV = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
Для Каждого Колонка Из тз.Колонки Цикл
Текст = "" + Текст + Колонка.Имя + Разделитель;
КонецЦикла;
ФайлCSV.ЗаписатьСтроку(Текст);
Для Каждого Стр Из тз Цикл
Текст = "";
Для Каждого Колонка Из тз.Колонки Цикл
Значение = Стр[Колонка.Имя];
Если ТипЗнч(Значение) = Тип("Число") Тогда
Значение = Формат(Значение,"ЧГ=0");
КонецЕсли;
Текст = Текст + Значение + Разделитель;
КонецЦикла;
ФайлCSV.ЗаписатьСтроку(Текст);
КонецЦикла;
ФайлCSV.Закрыть();
КонецПроцедуры