Имя: Пароль:
1C
1С v8
Непонятная ситуация с экселем
0 lanc2233
 
30.11.12
16:38
Эксель = Новый ComОбъект("excel.application");
Книга = Эксель.WorkBooks.Open(Файл);
Лист = Книга.WorkSheets(1);
Код = СокрЛП(Лист.Cells(инд,1).value);

Значение Код = Неопределено, по любой из ячеек.
Раньше этот-же код работал. В чем может быть причина?
1 Staffa
 
30.11.12
16:39
может не с той страницы читаешь?
2 mikecool
 
30.11.12
16:39
посмотри text чему равен
3 Eugene_life
 
30.11.12
16:42
(0) А "инд" чему равен?
4 lanc2233
 
30.11.12
16:42
(1) Она там единственная. Но перед ней несколько удалил. Может быть ее номер не равен 1 ?
5 lanc2233
 
30.11.12
16:43
(3) Это цикл, там на любой номер строки и колонки неопределено выдает.
6 mikecool
 
30.11.12
16:44
а как выглядит неопределено в экселе?
7 Reset
 
30.11.12
16:44
Код = СокрЛП(Лист.Cells(инд,1).value);

"Код" никак не может быть неопределено - всегда Строка

Это так, потроллить
8 mikecool
 
30.11.12
16:48
(7) не обманывай, иногда число или дата
9 lanc2233
 
30.11.12
16:49
(7) я имел в виду Лист.Cells(инд,1).value , смотрел в отладчике
10 lanc2233
 
30.11.12
16:53
с номером листа какая-то шляпа была. Обратился по имени стало нормально.

попутно вопрос Эксель.Cells(1,1).SpecialCells(11).Row
количество строк какого листа определяет?
11 mikecool
 
30.11.12
16:54
лови кусок

   Лист = pXLS.Worksheets(НомерЛиста);
   СчетчикКолонок = 0;
   СчетчикСтрок = 1;
   СтрокаСтарта = СписокКординаты.Получить("НомерСтроки");
   КолонкаСтарта = СписокКординаты.Получить("НомерКолонки");
   Значение = Лист.Cells(СтрокаСтарта + СчетчикСтрок, КолонкаСтарта + СчетчикКолонок).Value;
   
   КолонокТЗ = ТЗ.КоличествоКолонок();
   
   Пока ПустаяСтрока(Значение) = 0 Цикл
       
       ТЗ.НоваяСтрока();
       //Пока ПустаяСтрока(Значение) = 0 Цикл
       Для Сч = 1 По КолонокТЗ Цикл
           
           ТипКолонки = ""; Заголовок = "";
           ТЗ.ПолучитьПараметрыКолонки(СчетчикКолонок + 1, ТипКолонки, , , Заголовок);
           
           Если ТипКолонки = "Число" Тогда
               ЗначениеТипа = Число(Значение);
           ИначеЕсли ТипКолонки = "Дата" Тогда
               ЗначениеТипа = Дата(Значение);
           ИначеЕсли Найти(ТипКолонки, "Справочник") > 0 Тогда
               ЗначениеТипа = ПолучитьЗначениеСправочника(ТипКолонки, Значение);
           Иначе
               ЗначениеТипа = Значение
           КонецЕсли;
           ТЗ.УстановитьЗначение(СчетчикСтрок, СчетчикКолонок + 1, ЗначениеТипа);
           
           СчетчикКолонок = СчетчикКолонок + 1;
           Значение = Лист.Cells(СтрокаСтарта + СчетчикСтрок, КолонкаСтарта + СчетчикКолонок).Value;
           
       КонецЦикла;    
       
       СчетчикКолонок = 0;
       СчетчикСтрок = СчетчикСтрок + 1;
       Значение = Лист.Cells(СтрокаСтарта + СчетчикСтрок, КолонкаСтарта + СчетчикКолонок).Value;
       
   КонецЦикла;
12 mikecool
 
30.11.12
16:55
(10) того, что Эксель
13 mikecool
 
30.11.12
16:57
в довесок - проверка на соответствие файла шаблону

Функция НайтиВФайлеНачалоШаблона(pXLS, Секция)
   
   НомерСтрокиДанных = 0;
   
   Т = СоздатьОбъект("Таблица");
   Т.ИсходнаяТаблица("Шаблоны");
   Т.ВывестиСекцию(Секция);
   
   Лист = pXLS.Worksheets(НомерЛиста);
   
   Сч = 1;
   ТекстЯчейки = Т.Область(1, Сч, 1, Сч).Текст;
   СтрокаНачало = -1;
   КолонкаНачало = -1;
   Попытка
       СтрокаНачало = Лист.UsedRange.Find(ТекстЯчейки).Row;
       КолонкаНачало = Лист.UsedRange.Find(ТекстЯчейки).Column;
   Исключение
       Сообщить("Выбранный файл не соответствует шаблону, не найдена колонка " + ТекстЯчейки);
   КонецПопытки;
   
   СписокКоординаты = СоздатьОбъект("СписокЗначений");
   СписокКоординаты.ДобавитьЗначение(СтрокаНачало, "НомерСтроки");
   СписокКоординаты.ДобавитьЗначение(КолонкаНачало, "НомерКолонки");
   
   Если СтрокаНачало = -1 Тогда
       Возврат СписокКоординаты;
   КонецЕсли;
   
   Пока ПустаяСтрока(ТекстЯчейки) = 0 Цикл
       
       КолонкаМакет = СокрЛП(ТекстЯчейки);
       КолонкаФайл = СокрЛП(Лист.Cells(СтрокаНачало, КолонкаНачало + Сч - 1).Text);
       
       Если КолонкаМакет <> КолонкаФайл Тогда
           Сообщить("Ожидается заголовок колонки в файле " + КолонкаМакет + ", считан заголовок " + КолонкаФайл + ", файл некорректен, не загружен...");
           СписокКоординаты.Установить("НомерСтроки", -1);
           Возврат СписокКоординаты;
       КонецЕсли;
       
       Сч = Сч + 1;
       ТекстЯчейки = Т.Область(1, Сч, 1, Сч).Текст;
   КонецЦикла;
   
   Возврат СписокКоординаты;
   
КонецФункции
14 lanc2233
 
30.11.12
16:58
(12) Эксель = Новый ComОбъект("excel.application");
это еще никакой лист.. или я чего-то не понимаю ?
15 Reset
 
30.11.12
17:35
(8) Троллинг, судя по всему, успешный :-)
СокрЛП не может число или дату вернуть, равно как и неопределено
16 mikecool
 
30.11.12
17:39
(15) а, чет сразу не допер )
Закон Брукера: Даже маленькая практика стоит большой теории.