Имя: Пароль:
1C
1С v8
Помогите с Эксель (данные в ТЗ загрузить) !!!
,
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) Спасибо! Сейчас буду пробовать...