Имя: Пароль:
1C
1С v8
Загрузка из Excel
,
0 Amfiaray
 
22.11.16
09:15
Добрый день.
Делаю обработку для загрузки данных в 1с из Excel. Из первых 2 колонок все грузится, а вот в остальных Лист.Cells(i,n).Value = Неопределено выходит. Формул нет, все значения там числовые. Excel 2010. Подскажите что может быть?
1 torgm
 
22.11.16
09:22
(0) не заполнено

Лист.Cells(i,n).text что говорит?
2 Невский
 
22.11.16
09:32
(0) Колонки скрыты?
3 elCust
 
22.11.16
09:34
(0) Автор, тут нет экстрасенсов, пришли код цикла поглядим, может там у тебя косяк на косяке.
4 Chameleon1980
 
22.11.16
09:38
Подозреваю, что как в (2)

перед заполненными колонками есть скрытые незаполненные
5 Звездец
 
22.11.16
09:43
(4) или есть объединение ячеек. В этом случае значение в первой
6 Amfiaray
 
22.11.16
11:02
(1) Лист.Cells(i,n).text = "",
(2)Нет не скрыты
(5)Нет не объединены
7 torgm
 
22.11.16
11:03
(6) значит незаполнено.
8 Amfiaray
 
22.11.16
11:06
ну я открываю файл и эта ячейка заполнена
9 bolobol
 
22.11.16
11:07
(8) это другой файл
10 Amfiaray
 
22.11.16
11:07
нет
11 Fish
 
22.11.16
11:09
(10) Показывай код.
12 Amfiaray
 
22.11.16
11:10
Процедура ОсновныеДействияФормыЗагрузить(Кнопка)
    Если СокрЛП(ПутьКФайлу) = "" Тогда
        Предупреждение("Не выбран файл для загрузки.");
        Возврат;
    КонецЕсли;    
    Попытка    
        Excel = Новый COMObject("Excel.Application");
        Excel.visible = 0;
        Книга = Excel.WorkBooks.Open(ПутьКФайлу);
        Лист = Книга.WorkSheets(1);
    Исключение
        Сообщить("Не установлен Excel");
    КонецПопытки;
    ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
    ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
    ТекСтрокаДДС = Неопределено;
    Для i = ПерваяСтрока По ВсегоСтрок Цикл
        НайденнаяСтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка();
        НайденныйДоговор   = Справочники.ТипДоговора.ПустаяСсылка();
        Если Лист.Cells(i,2).Value = Неопределено Тогда
            Продолжить;
        КонецЕсли;
        НайденнаяСтатьяДДС = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию(СокрЛП(Лист.Cells(i,2).Value));
        Если НайденнаяСтатьяДДС.Пустая() Тогда
            НайденныйДоговор = Справочники.ТипДоговора.НайтиПоНаименованию(СокрЛП(Лист.Cells(i,2).Value));
        КонецЕсли;
        Если НайденнаяСтатьяДДС.Пустая() И НайденныйДоговор.Пустая() Тогда
            Сообщить("Не нашли значение из строки "+Строка(i));
            Продолжить;
        КонецЕсли;    
        Если НайденнаяСтатьяДДС.Пустая() Тогда
            Если ТекСтрокаДДС = Неопределено Тогда
                Сообщить("Не указана статья ДДС для типов договоров в строке "+Строка(i));
                Продолжить;
            КонецЕсли;
            НовСтр = Источник.НовыйСостав.Добавить();
            НовСтр.СтатьяДДС = ТекСтрокаДДС;
            НовСтр.ТипДоговора = НайденныйДоговор;
            ЗаполнитьЧисловыеЗнаения(НовСтр, Лист, i);
        Иначе
            НовСтр = Источник.НовыйСостав.Добавить();
            НовСтр.СтатьяДДС = НайденнаяСтатьяДДС;
            НовСтр.ТипДоговора = НайденныйДоговор;
            ЗаполнитьЧисловыеЗнаения(НовСтр, Лист, i);
            ТекСтрокаДДС = НайденнаяСтатьяДДС;
        КонецЕсли;    
    КонецЦикла;
    Закрыть();
КонецПроцедуры

Процедура ЗаполнитьЧисловыеЗнаения(СтрокаТабЧасти, МассивДанных, НомерСтроки)
    СтрокаТабЧасти.Январь         = ?(МассивДанных.Cells(НомерСтроки, Январь).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Январь).Value));
    СтрокаТабЧасти.Февраль         = ?(МассивДанных.Cells(НомерСтроки, Февраль).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Февраль).Value));
    СтрокаТабЧасти.Март             = ?(МассивДанных.Cells(НомерСтроки, Март).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Март).Value));
    СтрокаТабЧасти.Апрель         = ?(МассивДанных.Cells(НомерСтроки, Апрель).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Апрель).Value));
    СтрокаТабЧасти.Май              = ?(МассивДанных.Cells(НомерСтроки, Май).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Май).Value));
    СтрокаТабЧасти.Июнь             = ?(МассивДанных.Cells(НомерСтроки, Июнь).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Июнь).Value));
    СтрокаТабЧасти.Июль             = ?(МассивДанных.Cells(НомерСтроки, Июль).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Июль).Value));
    СтрокаТабЧасти.Август         = ?(МассивДанных.Cells(НомерСтроки, Август).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Август).Value));
    СтрокаТабЧасти.Сентябрь         = ?(МассивДанных.Cells(НомерСтроки, Сентябрь).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Сентябрь).Value));
    СтрокаТабЧасти.Октябрь         = ?(МассивДанных.Cells(НомерСтроки, Октябрь).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Октябрь).Value));
    СтрокаТабЧасти.Ноябрь         = ?(МассивДанных.Cells(НомерСтроки, Ноябрь).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Ноябрь).Value));
    СтрокаТабЧасти.Декабрь          = ?(МассивДанных.Cells(НомерСтроки, Декабрь).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Декабрь).Value));
    СтрокаТабЧасти.Квартал1         = ?(МассивДанных.Cells(НомерСтроки, Квартал_1).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Квартал_1).Value));
    СтрокаТабЧасти.Квартал2         = ?(МассивДанных.Cells(НомерСтроки, Квартал_2).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Квартал_2).Value));
    СтрокаТабЧасти.Квартал3         = ?(МассивДанных.Cells(НомерСтроки, Квартал_3).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Квартал_3).Value));
    СтрокаТабЧасти.Квартал4         = ?(МассивДанных.Cells(НомерСтроки, Квартал_4).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Квартал_4).Value));
    СтрокаТабЧасти.Год           = ?(МассивДанных.Cells(НомерСтроки, Год).Value = Неопределено, 0, Число(МассивДанных.Cells(НомерСтроки, Год).Value));
КонецПроцедуры
13 bolobol
 
22.11.16
11:11
(11) бог с ним, с кодом...

Записывай, вместо чтения, значение в эту ячейку - смотри, куда записалось
14 ЕШе_н
 
22.11.16
11:30
А переменные Январь, Февраль и т.д определены?
15 aka AMIGO
 
22.11.16
11:31
Лист.Cells(i,n).String

ЗЫ. а вдруг!! :)
16 Amfiaray
 
22.11.16
11:46
(14) Да