|
v7: Загрузка из файла xls |
☑ |
0
san4ez1008
31.01.18
✎
09:51
|
Доброго времени суток! Чет сижу уже часа 3,понять не могу ничего, загружаю файлик в ТЗ, если пустая строка-продолжаем цикл, если 2 подряд-прерываем обработку. Спотыкается на пустой строке, говорит номер за пределами значения.. строки не соответствуют или что?
[code]
Лист=1;
E = СоздатьОбъект("Excel.Application");
E.WorkBooks.Open(ФайлСоотв);
Строк=E.Sheets(Лист).Cells.SpecialCells(11).Row; // строка последней ячейки
//ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("ШтрихКод");
ТЗ.НоваяКолонка("ЦЗак");
ТЗ.НоваяКолонка("ЦОпт");
Запомнить=0;
Для Стр=1 По Строк Цикл
Если ПустоеЗначение(E.Sheets(Лист).Cells(Стр+10,10).Value)=1 тогда
Запомнить=Запомнить+1;
Если Запомнить>1 тогда
Прервать;
иначе
продолжить;
КОнецЕсли;
иначе
ТЗ.НоваяСтрока(Стр);
ТЗ.УстановитьЗначение(Стр,"ШтрихКод",СокрЛП(E.Sheets(Лист).Cells(Стр+10,10).Value));
ТЗ.УстановитьЗначение(Стр,"ЦЗак" ,СокрЛП(E.Sheets(Лист).Cells(Стр+10,12).Value));
ТЗ.УстановитьЗначение(Стр,"ЦОпт" ,СокрЛП(E.Sheets(Лист).Cells(Стр+10,14).Value));
КонецЕсли;
КонецЦикла;
[/code]
|
|
1
PiterPrg
31.01.18
✎
10:02
|
Что за "ТЗ.НоваяСтрока(Стр)" ?
ТЗ.НоваяСтрока();
ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,"ШтрихКод",СокрЛП(E.Sheets(Лист).Cells(Стр+10,10).Value));
|
|
2
PiterPrg
31.01.18
✎
10:06
|
(1) Пардон, есть. забыл уже клюшки :-)
Но суть та-же. В ТЗ нет строк с количеством Стр
Либо сразу задавай количество строк ТЗ равное "Строк"
А потом просто ПолучитьСтрокуПоНомеру,
Либо как в (1)
|
|
3
Builder
31.01.18
✎
10:08
|
(0) Сдается мне, цикл прервется на второй пустой строке, даже не подряд.
Ну и где конкретно ошибка то?
|
|
4
Builder
31.01.18
✎
10:09
|
А так что, не модно уже писать?
ТЗ.НоваяСтрока();
ТЗ.ШтрихКод = СокрЛП(ЧтоТоТам);
|
|
5
Builder
31.01.18
✎
10:15
|
(0) В условии Иначе добавь
Запомнить=0;
Надо сбросить счетчик.
|
|
6
san4ez1008
31.01.18
✎
10:15
|
(1) во,так сработало..
(3) вы правы,это я не обдумал,надо проверить тогда на пустые строки подряд..как так замоделить?
(4) не пробовал еще)
|
|
7
PiterPrg
31.01.18
✎
10:17
|
(3) Ошибка здесь:
ТЗ.УстановитьЗначение(Стр,"ШтрихКод",СокрЛП(E.Sheets(Лист).Cells(Стр+10,10).Value));
Предположим мы одну строку пропустили, например 3-ю
И на след. шаге
//Стр = 4
ТЗ.НоваяСтрока(Стр); //Стр игнорируется, вставленная строка третья (проверил :-))
В ТЗ 3 строки, Стр = 4, Установить значение вылетает
|
|
8
Builder
31.01.18
✎
10:26
|
(7) Делай как в (4)
|
|
9
san4ez1008
31.01.18
✎
10:29
|
(8) все получилось,спасибо!
|
|
10
vladko
31.01.18
✎
10:37
|
а вообще говоря, в 7.7 тоже есть отладчик. И когда им пользуешься, тогда не возникает таких вопросов.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший