Имя: Пароль:
1C
 
Динамическое формирование строк в Excel макете
0 Andrey07070707
 
31.05.10
13:21
Добрый день, знаю что уже много ссылок, и тема в принципе разжевана, но тем не менее не нашел, или просто не смог применить все что прочитал. В общем ситуация стандартная. есть макет(нарисованный в excel-e лист). необходимо заполнить данными.
Сначала Шапка тут все понятно сделал через
Страница.Cells(1,12).Value = Строка(Шапка.ProductLine);
...
...
Но далее необходимо в цикле формировать и заполнять данные по товарам.
по идее необходимо копировать и вставлять строку, после чего ее заполнять, но я не нашел как это делается... может кто подскажет?
Нашел такой текст:
КомОбъект.Tables(1).Rows.Add();
Но это все для word-a как я понимаю...
1 mikecool
 
31.05.10
13:24
запускаешь запись макроса
выполняешь эти действия в экселе
пишешь на языке 1с полученный код вба
2 Andrey07070707
 
31.05.10
13:26
Спасибо, направление понял. А есть пример?
3 Andrey07070707
 
31.05.10
16:00
В общем Макрос получился примерно такой:  
Rows("10:10").Select
Selection.Copy
Rows("11:11").Select
ActiveSheet.Paste
Только В 1С -е такого создать не могу. select как метод не отрабатывает... подскажите плиз...
4 Andrey07070707
 
01.06.10
11:49
Еще раз добрый день, так и не получилось выделить и вставить строку. Ощущаю себя дауном и ничтожным человеком... помогите Пожалуйста.
5 Andrey07070707
 
03.06.10
11:23
Опять подниму с вопросом. Сейчас EXCEL выкидывакт в ошибку "Ошибка при вызове метода контекста (Select). Произошла исключительная ситуащия...Метод Select из класса Range завершен неверно"

Код:
Перем КомОбъект Экспорт;

Функция ПечатьМак(Тип)
   АктивныйДокумент = ПолучитьМакет("Макет");
   КомОбъект = АктивныйДокумент.Получить();
...
   Страница=КомОбъект.Worksheets(1);
   Страница.Cells(1,12).Value = Строка(Шапка.ProductLine);
   Страница.Cells(4,7).Value = Строка(Шапка.Supplier);
   Страница.Cells(5,7).Value = Строка(ПредставлениеПоставщика.ЮридическийАдрес);
   Страница.Cells(1,21).Value = Строка(Шапка.QuotationNumber);
   Страница.Cells(4,18).Value = Строка(Шапка.Номер);
...
Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
       
           
       Страница.Range("10:10").Select();
   Страница.Selection.Сopy();
       Страница.Range("11:11").Select();
       Страница.ActiveSheet.Paste();
...

Расскажите пожалуйста почему Select() не работает?
6 Всеяд
 
03.06.10
11:26
А зачем вообще тебе копипаст тут?
7 Andrey07070707
 
03.06.10
11:32
У меня макет с таким форматированием что проще скопировать строку где должна быть табличная часть с номенклатурой.Ну и чтобы не затирался конец файла.
8 Andrey07070707
 
03.06.10
11:36
пПо другому не соображу как сделать... да уж если скопировать не могу это как-то удручает. (
9 Всеяд
 
03.06.10
11:59
Эксель = Новый ComОбъект("Excel.Application");
Эксель.Visible = Истина;
ДокументЭксель = Эксель.Workbooks.Open("D:\TestBook.xls");
ЛистЭксель = ДокументЭксель.ActiveSheet;

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура");
ТЗ.Колонки.Добавить("Количество");
ТЗ.Колонки.Добавить("Цена");
ТЗ.Колонки.Добавить("Сумма");

СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Номенклатура = "Товар А";
СтрокаТЗ.Количество = 10;
СтрокаТЗ.Цена = 2;
СтрокаТЗ.Сумма = 20;

СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Номенклатура = "Товар Б";
СтрокаТЗ.Количество = 5;
СтрокаТЗ.Цена = 10;
СтрокаТЗ.Сумма = 50;

// в строке 2 - шаблон оформления (его тоже заполняем данными)
ОбластьШаблона = ЛистЭксель.Range(ЛистЭксель.Cells(2, 2), ЛистЭксель.Cells(2, 5));
ТекСтрока = 2;

Для Каждого СтрокаТЗ Из ТЗ Цикл
   ОбластьШаблона.Copy(ЛистЭксель.Range(ЛистЭксель.Cells(ТекСтрока, 2), ЛистЭксель.Cells(ТекСтрока, 5)));
   ЛистЭксель.Cells(ТекСтрока, 2).Value = СтрокаТЗ.Номенклатура;
   ЛистЭксель.Cells(ТекСтрока, 3).Value = СтрокаТЗ.Количество;
   ЛистЭксель.Cells(ТекСтрока, 4).Value = СтрокаТЗ.Цена;
   ЛистЭксель.Cells(ТекСтрока, 5).Value = СтрокаТЗ.Сумма;
   
   ТекСтрока = ТекСтрока + 1;
КонецЦикла;
10 Andrey07070707
 
03.06.10
12:11
Большое Спасибо!!! Сейчас буду пробывать...)))
11 irq15
 
09.06.10
13:16
в чем косяк, выпадает ошибка: Ошибка при установке значения атрибута контекста (Value): Произошла исключительная ситуация (0x800a03ec)
               Страница.Cells.Item(7, 2).Value  = тек.Товар;

ОбластьШаблона = Страница.Range(Страница.Cells(7, 1), Страница.Cells(7, 9));
ТекСтрока = 7;

НомерПП = 1;
Для каждого тек из Таблица Цикл
   ОбластьШаблона.Copy(Страница.Range(Страница.Cells(ТекСтрока, 1), Страница.Cells(ТекСтрока, 9)));
   Страница.Cells.Item(7, 1).Value = НомерПП;
   НомерПП = НомерПП + 1;
   Страница.Cells.Item(7, 2).Value  = тек.Товар;
   Страница.Cells.Item(7, 3).Value  = тек.ЕдИзм;
   Страница.Cells.Item(7, 4).Value  = тек.Количество;
   Страница.Cells.Item(7, 5).Value  = тек.Цена;
   Страница.Cells.Item(7, 6).Value  = тек.СуммаБН;
   Страница.Cells.Item(7, 7).Value  = тек.СтНДС;
   Страница.Cells.Item(7, 8).Value  = тек.НДС;
   Страница.Cells.Item(7, 9).Value  = тек.Сумма;
   ТекСтрока = ТекСтрока + 1;
           
КонецЦикла;
12 irq15
 
09.06.10
13:17
Страница.Cells.Item(7, 2).Value  = тек.Товар; - это к тексту ошибки
13 irq15
 
09.06.10
13:28
нашел косяк,надо тек.Товар.наименование