8.х Ошибка исключение (0x800a03ec)

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем SpiritAT, 8 окт 2013.

  1. TopicStarter Overlay
    SpiritAT
    Offline

    SpiritAT Опытный в 1С

    Регистрация:
    8 авг 2013
    Сообщения:
    157
    Симпатии:
    0
    Баллы:
    26
    Платформа 8,2 УПП. Задача загрузить из Excel файла данные в Справочники.бюджет. При загрузке файла такое ощущения что он зацикливается. и выкидывает ошибку {Форма.Форма.Форма(29)}: Ошибка при вызове метода контекста (Cells)
    БюдОбъект.Комментарий = СокрЛП(Ex.Cells(НС,2).Value);
    по причине:
    Произошла исключительная ситуация (0x800a03ec)
    Подскажите что не так я выполняю. сам код
    Код:
    Запрос = Новый Запрос("ВЫБРАТЬ
    | Бюджеты.Наименование КАК Наименование ,
    | Бюджеты.НаименованиеПолное КАК НаимПолное ,
    | Бюджеты.Комментарий КАК  Комментарий
    |ИЗ
    | Справочник.Бюджеты КАК Бюджеты");
    Выборка=Запрос.Выполнить().Выбрать();
    
    //проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    
    Ex = ПолучитьТаблицуExcel(Файл);
    БюдОбъект=Справочники.Бюджеты.СоздатьЭлемент();
    
    СтруктураДанных = Новый Структура("Комментарий");
    
    НС = 1;
    Пока Истина Цикл 
    СтруктураДанных.Комментарий = СокрЛП(Ex.Cells(НС,2).Value); 
    Если СтруктураДанных.Комментарий = "" Тогда
    Прервать;
    КонецЕсли;
    БюдОбъект.Комментарий= СтруктураДанных.Комментарий;
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + НС);
    #КонецЕсли
    
    
    БюдОбъект.Записать();
    НС = НС + 1;
    КонецЦикла;
    
    
    Ex.Quit();
    
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    1. вы в один и тот же элемент комментарии сыплете и перезаписываете в коде.
    2. скорее всего зацикливает
  3. TopicStarter Overlay
    SpiritAT
    Offline

    SpiritAT Опытный в 1С

    Регистрация:
    8 авг 2013
    Сообщения:
    157
    Симпатии:
    0
    Баллы:
    26
    Спасибо Вы правы
  4. TopicStarter Overlay
    SpiritAT
    Offline

    SpiritAT Опытный в 1С

    Регистрация:
    8 авг 2013
    Сообщения:
    157
    Симпатии:
    0
    Баллы:
    26
    Народ подскажите почему он сохраняет и заносит последнию строку из цикла а не весь список
    Код:
    Запрос = Новый Запрос("ВЫБРАТЬ
    | Бюджеты.Наименование КАК Наименование ,
    | Бюджеты.НаименованиеПолное КАК НаимПолное ,
    | Бюджеты.Комментарий КАК  Комментарий
    |ИЗ
    | Справочник.Бюджеты КАК Бюджеты");
    Выборка=Запрос.Выполнить().Выбрать();
    
    //проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    
    Ex = ПолучитьТаблицуExcel(Файл);
    БюдОбъект=Справочники.Бюджеты.СоздатьЭлемент();
    
    НС = 1;
    Пока Истина Цикл
    
    ПодСтрока=СокрЛП(Ex.Cells(НС,2).Value);
    ПодСтрока1=Сред(ПодСтрока,Найти(ПодСтрока,"инв.№"));
    БюдОбъект.Наименование=Прав(ПодСтрока1,8);
    БюдОбъект.НаименованиеПолное ="Ебись оно все конем по цене="+ СокрЛП(Ex.Cells(НС,4).Value);
    БюдОбъект.Комментарий = СокрЛП(Ex.Cells(НС,2).Value);
    БюдОбъект.Записать();
    
    Если БюдОбъект.Комментарий = "" Тогда
    Прервать;
    КонецЕсли;
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + НС);
    #КонецЕсли
    
    
    
    НС = НС + 1;
    
    КонецЦикла;
    
    
    Ex.Quit();
    
    КонецПроцедуры
    
  5. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Потому, что получение объекта, у вас вне цикла, где вы его заполняете. По коду получается, что вы многократно перезаполняете и записываете один и тот-же объект

    И еще
    Код:
    Пока Выборка.Следующий() Цикл 
  6. TopicStarter Overlay
    SpiritAT
    Offline

    SpiritAT Опытный в 1С

    Регистрация:
    8 авг 2013
    Сообщения:
    157
    Симпатии:
    0
    Баллы:
    26
    Спасибо попробую
  7. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Код:
    Процедура ИмяПроцедуры(Файл)
    //Вначале проверим что файл существует
    ФайлНаДиске = Новый Файл(Файл);
    Если Не ФайлНаДиске.Существует() Тогда
    Предупреждение("Файл не найден!");
    Возврат;
    КонецЕсли;
    Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |  Бюджеты.Ссылка			 КАК Ссылка,
    |  Бюджеты.Наименование	   КАК Наименование,
    |  Бюджеты.НаименованиеПолное КАК НаимПолное,
    |  Бюджеты.Комментарий	    КАК Комментарий
    |ИЗ
    |  Справочник.Бюджеты КАК Бюджеты
    |");
    Выборка = Запрос.Выполнить().Выбрать();
    // Чтение файла
    Exel = ПолучитьТаблицуExcel(Файл);
    Индекс = 1;
    Пока Выборка.Следующий() Цикл
    ПодСтрока  = СокрЛП(Exel.Cells(Индекс,2).Value);
    ПодСтрока1 = Сред(ПодСтрока,Найти(ПодСтрока,"инв.№"));
    Если СокрЛП(Exel.Cells(Индекс,2).Value) = "" Тогда Продолжить; КонецЕсли; // Если комментарий не получен, переходим к следующему элементу
    БюдОбъект = Выборка.Ссылка.ПолучитьОбъект(); // Получим объект для заполнения
    // заполняем объект
    БюдОбъект.Наименование	   = Прав(ПодСтрока1,8);
    БюдОбъект.НаименованиеПолное = "<Ненормативная лексика> по цене=" + СокрЛП(Exel.Cells(Индекс,4).Value);
    БюдОбъект.Комментарий	    = СокрЛП(Exel.Cells(Индекс,2).Value);
    // Запись заполненного объекта
    Попытка
    БюдОбъект.Записать();
    #Если Клиент Тогда
    Состояние("Номер обработанной строки: " + Индекс);
    #КонецЕсли
    Исключение
    #Если Клиент Тогда
    Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
    #КонецЕсли
    КонецПопытки;
    // увеличиваем индекс на 1
    Индекс = Индекс + 1;
    
    КонецЦикла;
    // Закрытие файла
    Exel.Quit();
    КонецПроцедуры
  8. TopicStarter Overlay
    SpiritAT
    Offline

    SpiritAT Опытный в 1С

    Регистрация:
    8 авг 2013
    Сообщения:
    157
    Симпатии:
    0
    Баллы:
    26
    Спасибо за корректировку кода
  9. TopicStarter Overlay
    SpiritAT
    Offline

    SpiritAT Опытный в 1С

    Регистрация:
    8 авг 2013
    Сообщения:
    157
    Симпатии:
    0
    Баллы:
    26
    Народ подскажите пожалуйста как создать группу в справочнике 1с когда мы экспортируем из excel. Я хочу что бы те строки которые выделены жирным стали группами в справочнике 1с

Поделиться этой страницей