Имя: Пароль:
1C
1С v8
Добавление в РС
0 Kurbash
 
29.09.14
10:07
Всем привет. делаю загрузку данных из файла эксель:


    
    Ексель     = Новый  COMОбъект("Excel.Application") ;
    ФайлЕксель = Ексель.Workbooks.Open(ПутьКФайлу);
    //нб.Отбор.Цех.Установить(Цех);
    
    Для н = НомерСтрокиНачало По НомерСтрокиКонец Цикл
        
        Цех=Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(сокрлп(строка(Ексель.Sheets(Лист).Cells(н,1).Value)));
        Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(сокрлп(строка(Ексель.Sheets(Лист).Cells(н,2).Value)));
        НомерОперации=сокрлп(строка(Ексель.Sheets(Лист).Cells(н,3).Value));
        НаименованиеОперации=сокрлп(строка(Ексель.Sheets(Лист).Cells(н,4).Value));
        Норма=сокрлп(строка(Ексель.Sheets(Лист).Cells(н,5).Value));
        //добавление в ТЧ
        ст=Объект.ИзФайла.Добавить();
        ст.Цех=Цех;
        ст.Номенклатура=Номенклатура;
        ст.НомерОперации=НомерОперации;
        ст.НаименованиеОперации=НаименованиеОперации;
        //закончили добавлять
        
        нб=регистрысведений.НормыИзБазыНарядов.СоздатьНаборЗаписей();
        
        н=нб.Добавить();
        
        н.Цех=Цех;
        н.Номенклатура=Номенклатура;
        н.НомерОперации=НомерОперации ;
        н.НаименованиеОперации=НаименованиеОперации;
        н.Норма= число(Норма);
        нб.Записать();
        
    конеццикла;
    Ексель.Application.Quit();


все бы хорошо, но при попытке добавить запись в регистр выдается ошибка что преобразование к числу не может быть выполнено. отладчиком проверял, всем реквизитам регистра присваиваются значения, но когда доходит до конеццикла вываливается ошибка. в чем может быть дело?
1 Cube
 
29.09.14
10:10
Ну так вставь попытку-исключение...
2 YFedor
 
29.09.14
10:10
Так пишет же что "преобразование к числу не может быть выполнено" нужно посмотреть на какой строке и отладчиком проверить что там
3 Kurbash
 
29.09.14
10:11
я же пишу-он стопорится на строке конеццикла, всем реквизитам регистра значения присваюваются. я отладчиком проверял уже
4 Defender aka LINN
 
29.09.14
10:11
Число("Абырвалг") чему должно равняться, 42?
5 13_Mult
 
29.09.14
10:13
НомерОперации к числу приведи.
6 Kurbash
 
29.09.14
10:13
(4)на это грешил с самого начала, убирал эту строку-все равно
7 lavalit
 
29.09.14
10:13
СокрЛП() автоматом все переводит в "строку"
Обратите внимание на
НомерОперации=сокрлп(строка(Ексель.Sheets(Лист).Cells(н,3).Value));
Где НомерОперации есть "Число" Вот здесь и живет "суслик"
Сделайте
НомерОперации=сокрлп(Число(Ексель.Sheets(Лист).Cells(н,3).Value));
И да будет Вам счастье
8 Kurbash
 
29.09.14
10:13
(5) у меня в рс текстовое поле
9 13_Mult
 
29.09.14
10:13
(5) сори Норму
10 lavalit
 
29.09.14
10:14
ТО есть НомерОперации=Число(Ексель.Sheets(Лист).Cells(н,3).Value));
11 Kurbash
 
29.09.14
10:15
стнанно, но если убрать кусок кода добавление в РС то все работает нормально, никаких ошибок
12 ale-sarin
 
29.09.14
10:15
н - сначал число, а потом
н=нб.Добавить();
и следующее "Для н = НомерСтрокиНачало По НомерСтрокиКонец Цикл" уже не справляется
13 lavalit
 
29.09.14
10:16
Короче все "числа" должны быть приведены к "Числам" с ёкселя все поля получаем как "текст"
14 Kurbash
 
29.09.14
10:16
(12) блин точно:) спс
15 Cube
 
29.09.14
10:20
(12) Ахахаха)))
Эти СИшники уже порядком надоели))))
в 1С принято называть ПеременныеСвоимиИменами =))
16 Kurbash
 
29.09.14
10:24
и на старуху бывает порнуха...тьфу, проруха:)