Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:20

Из Excel в 1с 8.2.

Автор beztrud, 02 дек 2011, 11:21

0 Пользователей и 1 гость просматривают эту тему.

Klyacksa

Табличная часть (Tabular section)
Вставить (Insert)
Синтаксис:

Вставить(<Индекс>)
Параметры:

<Индекс> (обязательный)

Тип: Число.
Индекс позиции в табличной части, в которую необходимо вставить строку.


Еще бы оно не ругалось на параметр...

Если хотите добавить строку с указанными полями, то это будет как-то так:

    СтрокаТабличнойЧасти=Объект.Пленка.Добавить();
   СтрокаТабличнойЧасти.Высота=ЗначениеВысоты;
   СтрокаТабличнойЧасти.Ширина=ЗначениеШирины;
   и т.д.


Только по Вашему коду не понятно, что Вы куда хотели вставить.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Klyacksa

А, разглядела цикл. Ну тогда так:
Для Строка = 1 По ВсегоСтрок Цикл  
   СтрокаТабличнойЧасти=Объект.Пленка.Добавить();
      Для Колонка = 1 По ВсегоКолонок Цикл
          Значение = Лист.Cells(Строка,Колонка).Value;
          СтрокаТабличнойЧасти[ИмяКолонки]=Значение;
      КонецЦикла;
КонецЦикла;


где ИмяКолонки - имя нужной колонки. Например, "Высота". Соответственно, для каждой колонки нужно подставлять туда свое.
то есть, например, изначально делаем массив, в него забиваем по идущему у Вас порядку в файле колонки:
"Высота", "Ширина", и т.д.

А потом, когда уже обходим файл, в зависимости от номера колонки, выбираем значение из массива.
например, так:
СтрокаТабличнойЧасти[МассивИменКолонок[Колонка-1]]=Значение;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

beztrud

Вот при таких записях в строке Excel  715 297 2 глухие при нижеприведенном коде получаю следующую картину


Книга = Эксель.WorkBooks.Open(НайтиФайл);
Лист = Книга.WorkSheets(1);
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;     
   Для Строка = 1 По ВсегоСтрок Цикл   
   Для Колонка = 1 По ВсегоКолонок Цикл
   Значение = Лист.Cells(Строка,Колонка).Value;
   СтрокаТабличнойЧасти=Объект.Пленка.Добавить();
   СтрокаТабличнойЧасти.Высота=Значение;
КонецЦикла;
    КонецЦикла;

   Эксель.Application.Quit();

beztrud

Ругается
СтрокаТабличнойЧасти[<<?>>МассивИменКолонок[Колонка-1]]=Значение; (Проверка: Тонкий клиент)
Что я должен поставить в моем случае?

beztrud

Ругается
СтрокаТабличнойЧасти[МассивИменКолонок[Колонка-1]]=Значение;
[/quote]
Что я должен записать вместо [МассивИменКолонок[Колонка-1]]

Klyacksa

Ладно, напишите тогда "в лоб", без массивов:
Книга = Эксель.WorkBooks.Open(НайтиФайл);
Лист = Книга.WorkSheets(1);
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;    
  Для Строка = 1 По ВсегоСтрок Цикл  

  СтрокаТабличнойЧасти=Объект.Пленка.Добавить();
  СтрокаТабличнойЧасти.Высота=Лист.Cells(Строка,1).Value;
  СтрокаТабличнойЧасти.Ширина=Лист.Cells(Строка,2).Value;
  СтрокаТабличнойЧасти.Количество=Лист.Cells(Строка,3).Value;
  СтрокаТабличнойЧасти.Примечание=Лист.Cells(Строка,4).Value;

   КонецЦикла;

  Эксель.Application.Quit();
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

beztrud

Урааааааааа!!!!!!!!!! Заработало!!! :zebzdr: Только вот при такой вставке перестала работать процедура


&НаКлиенте
Процедура ПленкаКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.Пленка.ТекущиеДанные;
СтрокаТабличнойЧасти.Квадратура=СтрокаТабличнойЧасти.Высота*СтрокаТабличнойЧасти.Ширина*СтрокаТабличнойЧасти.Количество;
КонецПроцедуры

Соответственно и в подвале не считается общая сумма.
Не подскажете в чем дело?

Klyacksa

Ну, видимо, дело в том, что Ширину, Высоту и Количество с типом Строка могут быть...
Возможно, нужно явно преобразовывать эти типы.

з.ы. Когда пишете "перестало работать", потрудитесь описать, что именно не работает, элементарно поставить точку останова в процедуре и посмотреть, какие где значения. Ну и если есть ошибки - нужно приводить их текст.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

beztrud

Не работает у меня процедура ПриИзменении, которую я описал выше, выход хоть и "кривой" нашел: в экселе добавил 4 колонку с подсчитанной квадратурой - при этом в автомате заполняется подвал. А Вам Klyacksa огромнейшее человеческое СПАСИБО.

Klyacksa

Пожалуйста)))

Что значит "не работает"? ошибка? или просто значение не считает? отладчиком посмотрели, какие типы значений в колонках?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск