Имя: Пароль:
1C
1C 7.7
v7: Ошибка при записи элемента
0 zladenuw
 
17.10.11
16:59
Вроде и не пятница еще, а уже тупняк.
Читаю файл ехселя, ищу в спр основные средства элементы и пытаюсь обновить их. вылетает с ошибкой не выбран элемент, хотя элемент находит.
Эксель = СоздатьОбъект("Excel.Application");
       
       Попытка
           Книга = Эксель.WorkBooks.Open(мФайл);
           Лист = Книга.WorkSheets(нЛист);
           ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
           ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
       Исключение
           Сообщить(ОписаниеОшибки());
       КонецПопытки;
       
       Сообщить("Формирование  с EXCEL");
       Для лСтрока = 1 По ВсегоСтрок Цикл
           Если лСтрока < 11 Тогда
               Продолжить;
           КонецЕсли;
           
           Если ПустоеЗначение(СокрЛП(Лист.Cells(лСтрока,1).Value))=1 Тогда
               Продолжить;
           КонецЕсли;
           ВремТбЗн.НоваяСтрока();
           ВремТбЗн.Код = СокрЛП(Лист.Cells(лСтрока,3).Value);
           ВремТбЗн.Группа = Прав(СокрЛП(Лист.Cells(лСтрока,2).Value),1);
           ВремТбЗн.БухСчет = СокрЛП(Лист.Cells(лСтрока,1).Value);
           ВремТбЗн.Срок = СокрЛП(Лист.Cells(лСтрока,9).Value);
       КонецЦикла;
       Эксель.Quit();
   
       
       ВремТбЗн.ВыбратьСтроки();
       Пока ВремТбЗн.ПолучитьСтроку() = 1 Цикл            
           лТекОС = ?(лСпрОС.НайтиПоКоду(ВремТбЗн.Код)=1,лСпрОС.ТекущийЭлемент(),"");
           Счет = ?(лСчет.НайтиПоКоду(ВремТбЗн.БухСчет)=1,лСчет.ТекущийСчет(),"");
           Если ПустоеЗначение(лТекОС)=1 Тогда
               Продолжить;
           КонецЕсли;
           
           лТекОС.СрокИспользования = Число(ВремТбЗн.Срок)*12;
           лТекОС.Группа = ВремТбЗн.Группа;
           лТекОС.Счет = Счет;
           Попытка
                лТекОС.Записать();
           Исключение
                Сообщить(ОписаниеОшибки());
           КонецПопытки;
           Сообщить(лТекОС);
       КонецЦикла;
1 filh
 
17.10.11
17:03
А так:
лТекОС = СоздатьОбъект("Справочник.Какой");
Дальше:
Если лТекОС.НайтиПоКоду(ВремТбЗн.Код)=0 Тогда
 Продолжить;
КонецЕсли;
2 Voronve
 
17.10.11
17:03
(0)
лТекОС = ?(лСпрОС.НайтиПоКоду(ВремТбЗн.Код)=1,лСпрОС.ТекущийЭлемент(),"");
Счет = ?(лСчет.НайтиПоКоду(ВремТбЗн.БухСчет)=1,лСчет.ТекущийСчет(),"");

Меняем на
лСпрОС.НайтиПоКоду(ВремТбЗн.Код);
лСчет.НайтиПоКоду(ВремТбЗн.БухСчет);

Если ПустоеЗначение(лТекОС)=1 Тогда Продолжить; КонецЕсли;
3 zladenuw
 
17.10.11
17:07
А чего не канает через переменную ? там же лСпрОС.ТекущийЭлемент()
4 zladenuw
 
17.10.11
17:07
(1,2) спс, помогло
5 Voronve
 
17.10.11
17:09
(3) Ты позиционируешься на конкретныйэлемент справочника по .Текущийэлемент(); ели его нужно менять то или через .НайтиЭлемент() или не изспользовать .ТекущийЭлемент()
6 zladenuw
 
17.10.11
17:13
(5) если ТекущийЭлемент(), то это ссылка. если напрямую то объект... ясно. спс
7 Voronve
 
17.10.11
17:29
(6) Наоборот
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший