|
Помогите с Эксель (данные в ТЗ загрузить) !!! | ☑ | ||
---|---|---|---|---|
0
листопад
08.12.11
✎
15:05
|
БП, редакция 2.0 (платформа 8.2.13)
Есть файл-Excel, считываю его и загружаю в табличную часть документа. Написала обработку, на форме которой разместила Табличное поле, имеющее тип "ТаблицаЗначений". Т.е. данные из Эксель сначала загружаю в эту ТаблицуЗначений, назвала ее ТаблицаДокумента. Файл Эксель имеет вид: http://s017.radikal.ru/i420/1112/cd/7ebf50b0cb55.jpg Подскажите, почему у меня заполняется в ТаблицуЗначений только данные по Приходу: http://s017.radikal.ru/i436/1112/8e/5dca89bfb2ed.jpg Вот код: ТаблицаДокумента.Очистить(); ТаблицаДокумента.Колонки.Очистить(); // Создать колонки табличного документа ТаблицаДокумента.Колонки.Добавить("Номер",ОписаниеТиповС,"Номер",5); ТаблицаДокумента.Колонки.Добавить("Код",ОписаниеТиповС,"Код",11); ТаблицаДокумента.Колонки.Добавить("Наименование",ОписаниеТиповС,"Наименование",45); ТаблицаДокумента.Колонки.Добавить("ПриходЛ",ОписаниеТиповС,"ПриходЛ",10); ТаблицаДокумента.Колонки.Добавить("Расход",ОписаниеТиповС,"Расход",10); НомерКолонкиКод = 2; НомерКолонкиНаименование = 3; нпп=0; Для а = 1 по ФайлСтрок Цикл Для б = 1 по ФайлКолонок Цикл // РАСХОД ******************************************************* Если СокрЛП(ExcelПриложение.Cells(а,б).Text)="Расход за период" Тогда Если СокрЛП(ExcelПриложение.Cells(а+1,б).Value) = "литр" Тогда Для в = а+2 по ФайлСтрок Цикл // ставлю условие, что пока в столбце "Код" не пустое значение, Цикл будет продолжаться Если СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиКод).Value) <> "" Тогда Код = СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиКод).Value); Наименование = СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиНаименование).Value); Расход = СокрЛП(ExcelПриложение.Cells(в,б).Value); // Добавить данные в табличную часть экранной формы Стр=ТаблицаДокумента.Добавить(); нпп = нпп+1; Стр.Номер = нпп; Попытка Стр.Код = Код; Стр.Наименование = Наименование; Стр.Расход = Расход; Исключение // Не редко происходит ошибка конвертации отдельной ячейки документа Сообщить("Ошибка чтения строки файла Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; КонецЕсли; КонецЦикла; Прервать; КонецЕсли; // ПРИХОД (в литрах) ********************************** ИначеЕсли СокрЛП(ExcelПриложение.Cells(а,б).Text)="Поступило за период" Тогда Если СокрЛП(ExcelПриложение.Cells(а+1,б).Value) = "литр" Тогда Для в = а+2 по ФайлСтрок Цикл // ставлю условие, что пока в столбце "Код" не пустое значение, Цикл будет продолжаться Если СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиКод).Value) <> "" Тогда Код = СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиКод).Value); Наименование = СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиНаименование).Value); ПриходЛ = СокрЛП(ExcelПриложение.Cells(в,б).Value); // Добавить данные в табличную часть экранной формы Стр=ТаблицаДокумента.Добавить(); нпп = нпп+1; Стр.Номер = нпп; Попытка Стр.Код = Код; Стр.Наименование = Наименование; Стр.ПриходЛ = ПриходЛ; Исключение // Не редко происходит ошибка конвертации отдельной ячейки документа Сообщить("Ошибка чтения строки файла Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; Состояние("Обработка файла Microsoft Excel."); КонецЕсли; КонецЦикла; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если б<=ФайлКолонок Тогда Прервать; КонецЕсли; КонецЦикла; ExcelПриложение.Quit(); // Отобразить результаты загрузки в форме элемента ЭлементыФормы.ТаблицаДокумента.Значение = ТаблицаДокумента; ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки(); |
|||
1
tdm
08.12.11
✎
15:08
|
возьмите с ИТС обработку ЗагрузкаДанныхИзТабличногоДокумента.epf и не мучайте не нас не себя)
|
|||
2
Галахад
гуру
08.12.11
✎
15:14
|
(0) Зачем так наворочено?
Не проще один цикл по строкам? А колонки явно (числом) указывать? |
|||
3
Vovan1975
08.12.11
✎
15:15
|
а можна еще ексель в табличку на форму скопировать и уже табличку разбирать...
|
|||
4
листопад
08.12.11
✎
15:30
|
Так все же, почему Расход не подгружается???
|
|||
5
листопад
08.12.11
✎
15:33
|
(1) Бухи не осилят работать с ней
|
|||
6
salvator
08.12.11
✎
15:33
|
(4) Отладчик
|
|||
7
листопад
08.12.11
✎
15:34
|
(3) Я так и делаю: в ТЗ на форме загружаю данные из Эксель. Но данные по Расходу не грузятся...
|
|||
8
Галахад
гуру
08.12.11
✎
15:34
|
(4) Ну так условие какое-то не выполняется.
Только отладчик поможет. |
|||
9
листопад
08.12.11
✎
15:38
|
(2) А как сделать один Цикл по строкам (применительно к моему случаю)?
|
|||
10
Галахад
гуру
08.12.11
✎
15:42
|
(9) Типа того:
// РАСХОД ******************************************************* б = 12; Для в = а+2 по ФайлСтрок Цикл // ставлю условие, что пока в столбце "Код" не пустое значение, Цикл будет продолжаться Если СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиКод).Value) <> "" Тогда Код = СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиКод).Value); Наименование = СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиНаименование).Value); Расход = СокрЛП(ExcelПриложение.Cells(в,б).Value); // Добавить данные в табличную часть экранной формы Стр=ТаблицаДокумента.Добавить(); нпп = нпп+1; Стр.Номер = нпп; Попытка Стр.Код = Код; Стр.Наименование = Наименование; Стр.Расход = Расход; Исключение // Не редко происходит ошибка конвертации отдельной ячейки документа Сообщить("Ошибка чтения строки файла Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание); КонецПопытки; КонецЕсли; КонецЦикла; |
|||
11
листопад
08.12.11
✎
15:47
|
(11) А код для Прихода где?
|
|||
12
Shrek_yar
08.12.11
✎
15:48
|
(8) Если СокрЛП(ExcelПриложение.Cells(а,б).Text)="Расход за период" Тогда
Если СокрЛП(ExcelПриложение.Cells(а+1,б).Value) = "литр" Тогда yflj gj jnkflxbre gjcvjnhtnm 'nb ldf eckjdbz? chtt dctuj d yb[ tyt pf[jlbn |
|||
13
Shrek_yar
08.12.11
✎
15:49
|
в общем в них незаходит, оладчик нужен
|
|||
14
Галахад
гуру
08.12.11
✎
15:50
|
(11) А, да.
// приход ******************************************************* б = 6; [...] //Стр.Расход = Расход; Стр.Приход = Расход; |
|||
15
Shrek_yar
08.12.11
✎
15:50
|
или заходит но только один раз, потом б меняется и значение тоже и уже не Расход за период, тогда и выполнется ваше ИНАЧЕ
|
|||
16
листопад
08.12.11
✎
15:57
|
(14) Спасибо! Сейчас буду пробовать...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |