|
v8: Помощь в загрузке из Excel в ТЗ | ☑ | ||
---|---|---|---|---|
0
Popkorm
27.02.12
✎
14:43
|
Знаю, заезжаная тема но все же
нужна помощь,ошибка такая: {Форма.ФормаОтчета.Форма(1939)}: Ошибка при вызове метода контекста (Cells) Если ЗначениеЗаполнено(СокрЛП(Excel.Cells(ТекСтрока,ЕксНаименование).Value)) Тогда //Номенклатура по причине: Произошла исключительная ситуация (0x800a03ec) ВыбФайл = Новый Файл(ИмяФайла); Если НЕ ВыбФайл.Существует() Тогда Сообщить("Файл не существует!"); Возврат Ложь; КонецЕсли; Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ИмяФайла); Состояние("Обработка файла Microsoft Excel..."); ExcelЛист = Excel.Sheets(НомерЛистаExcel); Исключение Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel."); Возврат ложь; КонецПопытки; ЕксНаименование = 0; ЕксКод = 0; ЕксТОРпродаж = 0; ЕксОстаток = 0; ЕксISBN = 0; ЕксЦена = 0; ЕксEAN = 0; Для ТекКолонка = 1 по 30 Цикл ТекЯчейка = Нрег(СокрЛП(Excel.Cells(1,ТекКолонка).Value)); Если ТекЯчейка="Наименование" Тогда ЕксНаименование = ТекКолонка; ИначеЕсли ТекЯчейка="Код" Тогда ЕксКод = ТекКолонка; ИначеЕсли ТекЯчейка="ТОР продаж" Тогда ЕксОстаток = ТекКолонка; ИначеЕсли ТекЯчейка="ISBN / ISMN" Тогда ЕксISBN = ТекКолонка; ИначеЕсли ТекЯчейка="Цена" Тогда ЕксЦена = ТекКолонка; ИначеЕсли ТекЯчейка="EAN" Тогда ЕксEAN = ТекКолонка; КонецЕсли; КонецЦикла; КолСтрокЕкс = Excel.ActiveSheet.UsedRange.Rows.Count; Для ТекСтрока = 1 по КолСтрокЕкс Цикл Состояние("Обработка файла XLS: " + ТекСтрока + " из " + КолСтрокЕкс); Если ЗначениеЗаполнено(СокрЛП(ExcelЛист.Cells(ТекСтрока,ЕксНаименование).Value)) Тогда //Номенклатура Если ЗначениеЗаполнено(СокрЛП(ExcelЛист.Cells(ТекСтрока,ЕксКод).Value)) Тогда //Код ОфигКод = СокрЛП(ExcelЛист.Cells(ТекСтрока,ЕксНаименование).Value); НайдНом = Справочники.Номенклатура.НайтиПоКоду("TD_"+ОфигКод); |
|||
1
Popkorm
27.02.12
✎
14:45
|
если в заместо .Value поставить .Text такая же ошибка
|
|||
2
mehfk
27.02.12
✎
14:51
|
ТекЯчейка = Нрег(СокрЛП(Excel.Cells(1,ТекКолонка).Value));
ниже ведь правильно пишешь |
|||
3
Popkorm
27.02.12
✎
14:55
|
(2)что нет так??!!
|
|||
4
155153144627
27.02.12
✎
14:59
|
Бл. пизнец :-)
ТекЯчейка = Нрег(СокрЛП(Excel.Cells(1,ТекКолонка).Value)); Если ТекЯчейка="Наименование" Тогда Переведено в нижний регистр, а сравнивается с верхним :-) |
|||
5
Alex S D
27.02.12
✎
14:59
|
что у тебя в переменной ЕксНаименование?
|
|||
6
155153144627
27.02.12
✎
15:01
|
(5) null :-)
Или Неопределено? |
|||
7
Alex S D
27.02.12
✎
15:01
|
(4) + , поэтому там красуется 0.. и ошибка..
|
|||
8
155153144627
27.02.12
✎
15:02
|
(7) А да 0, выше присвоено.
|
|||
9
Popkorm
27.02.12
✎
15:10
|
вот так в 7.7 у меня работает:
Екс = СоздатьОбъект("Excel.Application"); Екс.workbooks.Open(ВыбФайлКлиент); // анализ заголовка ЕксИД = 0; ЕксИСБН = 0; ЕксЕАН = 0; ЕксКоличество = 0; ЕксПродажи = 0; Для ТекКолонка = 1 по 10 Цикл ТекЯчейка = Нрег(СокрЛП(Екс.Cells(1,ТекКолонка).Value)); Если ТекЯчейка="isbn" Тогда ЕксИСБН = ТекКолонка; ИначеЕсли ТекЯчейка="id" Тогда ЕксИД = ТекКолонка; ИначеЕсли ТекЯчейка="ean" Тогда ЕксЕАН = ТекКолонка; ИначеЕсли ТекЯчейка="quantity" Тогда ЕксКоличество = ТекКолонка; ИначеЕсли ТекЯчейка="sale" Тогда ЕксПродажи = ТекКолонка; КонецЕсли; КонецЦикла; ТабКолКлиент = СоздатьОбъект("ТаблицаЗначений"); ТабКолКлиент.НоваяКолонка("ИД","Строка",8); ТабКолКлиент.НоваяКолонка("ИСБН","Строка",17); ТабКолКлиент.НоваяКолонка("ЕАН","Строка",13); ТабКолКлиент.НоваяКолонка("Количество","Число",15,0); ТабКолКлиент.НоваяКолонка("Продажи","Число",15,0); КолСтрокЕкс = Екс.ActiveSheet.UsedRange.Rows.Count; Для ТекСтрока = 2 по КолСтрокЕкс Цикл Состояние("Обработка файла XLS: " + ТекСтрока + " из " + КолСтрокЕкс); Если ЕксКоличество <> 0 Тогда ТекКоличество = Число(Екс.Cells(ТекСтрока,ЕксКоличество).Value); Иначе ТекКоличество = 0; КонецЕсли; Если ЕксПродажи <> 0 Тогда ТекПродажи = Число(Екс.Cells(ТекСтрока,ЕксПродажи).Value); Иначе ТекПродажи = 0; КонецЕсли; Если ТекКоличество + ТекПродажи = 0 Тогда Продолжить; КонецЕсли; ТабКолКлиент.НоваяСтрока(); Если ЕксИД <> 0 Тогда ТабКолКлиент.Ид = СокрЛП(Строка(Екс.Cells(ТекСтрока,ЕксИД).Value)); КонецЕсли; Если ЕксИСБН <> 0 Тогда ТабКолКлиент.ИСБН = СокрЛП(Строка(Екс.Cells(ТекСтрока,ЕксИСБН).Value)); КонецЕсли; Если ЕксЕАН <> 0 Тогда ТабКолКлиент.ЕАН = СокрЛП(Строка(Екс.Cells(ТекСтрока,ЕксЕАН).Value)); КонецЕсли; ТабКолКлиент.Количество = ТекКоличество; ТабКолКлиент.Продажи = ТекПродажи; КонецЦикла; Екс.ActiveWindow.Close(); |
|||
10
155153144627
27.02.12
✎
15:14
|
Так у тебя в 7.7, ТекЯчейка погляди с какими значениями сравнивается.
И с какими ты сравниваешь в восьмерке. Если еще не понял, то пиши так: Для ТекКолонка = 1 по 30 Цикл ТекЯчейка = Нрег(СокрЛП(Excel.Cells(1,ТекКолонка).Value)); Если ТекЯчейка="наименование" Тогда ЕксНаименование = ТекКолонка; ИначеЕсли ТекЯчейка="код" Тогда ЕксКод = ТекКолонка; ИначеЕсли ТекЯчейка="ТОР продаж" Тогда ЕксОстаток = ТекКолонка; ИначеЕсли ТекЯчейка="isbn / ismn" Тогда ЕксISBN = ТекКолонка; ИначеЕсли ТекЯчейка="цена" Тогда ЕксЦена = ТекКолонка; ИначеЕсли ТекЯчейка="ean" Тогда ЕксEAN = ТекКолонка; КонецЕсли; КонецЦикла; |
|||
11
Alex S D
27.02.12
✎
15:15
|
+ в семерке идет еще проверка на 0, а где она у тебя?
|
|||
12
Popkorm
27.02.12
✎
15:18
|
(11)не усмотрел чета,щас попробую
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |