Имя: Пароль:
1C
1С v8
Алгоритм обхода файла эксель. Нид доработка.
0 Solitar
 
16.03.12
12:52
Суть вот в чем, есть файл эксель и я заполняю определенные поля в нем на основании запроса к документу. Если в документе есть номенклатура, которой нет в эксель файле, нужно вывести сообщение.
Пока Выборка.Следующий() Цикл //Выборка - результат запроса к доку
   Для Лист = 1 по КоличествоЛистов Цикл
       Excel.Sheets(Лист).select();
       ВсегоКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
       ВсегоСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
       Для Строка = 1 по ВсегоСтрок цикл
                                            Если  СОкрЛП(Excel.Cells(строка, Объект.Наименование).Value) =  СОкрЛП(Выборка.Номенклатура)
Тогда
                               Excel.Cells(строка, Объект.КолонкаСЗаказом).Value = Выборка.Количество;
                                       КонецЕсли;        
               КонецЦикла;
       КонецЦикла;
       
   КонецЦикла;

Поидее, когда нашлась позиция, то нужно переходить в выборке на след. элемент, но не нашел метода который мог бы это сделать. Мб еще есть какие нить варианты?
1 Solitar
 
16.03.12
12:53
возможно не так написал цикл, поправьте плиз.
2 Wobland
 
16.03.12
12:53
>нужно переходить в выборке на след. элемент
Продолжить
3 Solitar
 
16.03.12
13:01
Продолжить кидает меня на "Для Строка = 1 по ВсегоСтрок цикл".
Это не подходит, т.к. Выборка не изменяется.
4 Ненавижу 1С
 
гуру
16.03.12
13:03
Прервать
5 Tatitutu
 
16.03.12
13:04
(0)
1.Если в документе есть номенклатура, которой нет в эксель файле, нужно вывести сообщение.
- ты его (сообщение) нигде не выводишь
установи флаг при выборке в 0, нашла 1
в конце цикла если 0, то сообщить Выборка.Наименование
6 Wobland
 
16.03.12
13:05
(5) а тупо сообщать пустую строку можно ж? вроде даже окно не открывается...
7 Tatitutu
 
16.03.12
13:07
(6)Поидее, когда нашлась позиция, то нужно переходить в выборке на след. элемент, но не нашел метода который мог бы это сделать

- все у тебя там переходит

ты сейчас перебираешь все строки документа
и каждый раз при получении строки
лопатишь файл екселя - трудоемко и затратно
зачем тебе всего колонок ?

создай таблицу получи все поля из файла добавь адреса
перебери документ в таблицу
сверни таблицу, проанализируй - в разы быстрее будет
8 Solitar
 
16.03.12
13:19
Огромное спасибо Tatitutu.
Все получилось.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.