Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка из файла .xls в 1С.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
MH.z
Добрый день!
Конфигурация УТ 11.
Ситуация следующая. Надо в базу 1С загрузить файл экселя, но на сервере на котором находится база, нет экселя. Как это можно сделать? С загрузкой документов еще не разу не работал, поэтому надеюсь на Вашу помощь!
logist
Цитата(MH.z @ 25.05.12, 14:06) необходимо зарегистрироваться для просмотра ссылки
Как это можно сделать?

Поставить эксель.
MH.z
А если нет возможности его туда установить?
Acid
Эксель должен стоять на клиентской машине. дальше есть стандартная обработка по загрузке этих файлов.
Vofka
Цитата(MH.z @ 25.05.12, 14:14) необходимо зарегистрироваться для просмотра ссылки
А если нет возможности его туда установить?

Сказать, что нет возможности загружать на сервере из эксэля.
Ardi
Можно без экселя грузить. Гуглите 1с Excel ADO
MH.z
Подскажите пожалуйста как можно из внешней обработки загрузить эксель? Чтобы он загрузился в форму.
MH.z
Попробую описать более подробнее. и все же надеюсь на Вашу помощь!!!
Есть внешняя обработка в которой присутствует Табличный документ и на форме расположена кнопка. Так вот, как сделать чтобы при нажатии на кнопку загружался файл экселя в табличную часть формы???
Спасибо!
Acid
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
    ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xls)|*.xls|";
    Если ДиалогВыбораФайла.Выбрать() Тогда
        ТабличныйДокумент = ЭлементыФормы.ТЗ;
        ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла);
        Если нРег(ФайлНаДиске.Расширение) = ".xls" Тогда
            мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла);
        КонецЕсли;
    КонецЕсли;
MH.z
Не пойму, что мне эта процедура или функция даст? Можно объяснить пожалуйста?
Acid
загрузит в табличное поле данные из файла.
MH.z
Сделал следующее :
&НаКлиенте
Процедура Загрузить(Команда)
     ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
    ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xlsx)|*.xlsx|";
    Если ДиалогВыбораФайла.Выбрать() Тогда
        ТабличныйДокумент = ЭлементыФормы.ТЗ;
        ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла);
        Если нРег(ФайлНаДиске.Расширение) = ".xlsx" Тогда
            мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Это сама кнопка.
И добавил функцию в модуль объекта
Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт
    
    xlLastCell = 11;
    
    ВыбФайл = Новый Файл(ИмяФайла);
    Если НЕ ВыбФайл.Существует() Тогда
        Сообщить("Файл не существует!");
        Возврат Ложь;
    КонецЕсли;
    
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ИмяФайла);
        Состояние("Обработка файла Microsoft Excel...");
        ExcelЛист = Excel.Sheets(НомерЛистаExcel);
    Исключение
        Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
        Возврат ложь;
        
    КонецПопытки;
    
    ТабличныйДокумент.Очистить();
    
    ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
    RowCount = ActiveCell.Row;
    ColumnCount = ActiveCell.Column;
    Для Column = 1 По ColumnCount Цикл
        ТабличныйДокумент.Область("C" + Формат(Column, "ЧГ=")).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth;
    КонецЦикла;
    Для Row = 1 По RowCount Цикл
        
        Для Column = 1 По ColumnCount Цикл
            ТабличныйДокумент.Область("R" + Формат(Row, "ЧГ=") +"C" + Формат(Column, "ЧГ=")).Текст = ExcelЛист.Cells(Row,Column).Text;
        КонецЦикла;
        
    КонецЦикла;
    
    Excel.WorkBooks.Close();
    Excel = 0;
    
    Возврат Истина;
    
КонецФункции // ()


Выдает ошибку :

{Форма.Форма.Форма(8,29)}: Переменная не определена (ЭлементыФормы)
        ТабличныйДокумент = <<?>>ЭлементыФормы.ТЗ; (Проверка: Тонкий клиент)
{Форма.Форма.Форма(11,13)}: Процедура или функция с указанным именем не определена (мПрочитатьТабличныйДокументИзExcel)
            <<?>>мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла); (Проверка: Тонкий клиент)


И такую ошибку:
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(15,3)}: Процедура или функция с указанным именем не определена (Состояние)
        <<?>>Состояние("Обработка файла Microsoft Excel..."); (Проверка: Сервер)
Acid
На Клиенте вызываете Процедуру или Функцию, которая будет вызывать серверные функции/процедуры.
MH.z
Все равно эта ошибка остается:
{Форма.Форма.Форма(8,29)}: Переменная не определена (ЭтотОбъект)
        ТабличныйДокумент = <<?>>ЭтотОбъект.ТЗ; (Проверка: Тонкий клиент)
{Форма.Форма.Форма(11,13)}: Процедура или функция с указанным именем не определена (мПрочитатьТабличныйДокументИзExcel)
            <<?>>мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент,ДиалогВыбораФайла.ПолноеИмяФайла); (Проверка: Тонкий клиент)


в функцию мПрочитатьТабличныйДокументИзExcel добавил "#Если Клиент Тогда" "#КонецЕсли"

Acid
Цитата(MH.z @ 28.05.12, 15:12) необходимо зарегистрироваться для просмотра ссылки
в функцию мПрочитатьТабличныйДокументИзExcel добавил "#Если Клиент Тогда" "#КонецЕсли"

Неправильно.
И вместо ЭтотОбъект надо использовать или ЭтаФорма или ТекущиеДанные. посмотрите в синтакс-помошнике.
Vofka
Невозможное возможно? smile.gif Excel все же установлен?
MH.z
Пропустил один момент smile.gif Эксель то на сервере не установлен. Надо через макет делать. Спасибо всем smile.gif
Acid
ну... раз не получилось намеком
убираете из модуля формы вызов общего модуля. Вместо него ставите эту функцию (которая находится в обработке, и вызывается этой общей функцией)
Функция мПрочитатьТабличныйДокументИзExcel(ТабличныйДокумент, ИмяФайла, НомерЛистаExcel = 1) Экспорт
    
    xlLastCell = 11;
    
    ВыбФайл = Новый Файл(ИмяФайла);
    Если НЕ ВыбФайл.Существует() Тогда
        Сообщить("Файл не существует!");
        Возврат Ложь;
    КонецЕсли;
    
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ИмяФайла);
        Состояние("Обработка файла Microsoft Excel...");
        ExcelЛист = Excel.Sheets(НомерЛистаExcel);
    Исключение
        Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
        Возврат ложь;
        
    КонецПопытки;
    
    ТабличныйДокумент.Очистить();
    
    ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
    RowCount = ActiveCell.Row;
    ColumnCount = ActiveCell.Column;
    Для Column = 1 По ColumnCount Цикл
        ТабличныйДокумент.Область("C" + Формат(Column, "ЧГ=")).ШиринаКолонки = ExcelЛист.Columns(Column).ColumnWidth;
    КонецЦикла;
    Для Row = 1 По RowCount Цикл
        
        Для Column = 1 По ColumnCount Цикл
            ТабличныйДокумент.Область("R" + Формат(Row, "ЧГ=") +"C" + Формат(Column, "ЧГ=")).Текст = ExcelЛист.Cells(Row,Column).Value;
        КонецЦикла;
        
    КонецЦикла;
    
    Excel.WorkBooks.Close();
    Excel = 0;
    
    Возврат Истина;
    
КонецФункции // ()
Vofka
Acid, эксэля нету! smile.gif
Acid
на сервере нету, а на клиенте есть.
MH.z
Все равно все переигралось sad.gif
Клиент подумал и передумал. Теперь ему нужно, что бы при открытии Внешней обработки при нажатии кнопки, открывался пустой макет в котором будет кнопка Заполнить из эксель, ну и там уже выбирать файл sad.gif
Еще раз спасибо всем!
MH.z
Уважаемые помогите пожалуйста! Не могу разобраться в чем проблема!
Все в той же внешней обработке с той же табличной частью. В пользовательском режиме,пользователь в ручную копирует данные из экселя и вставляет в табличную часть формы. Но выводится следующее сообщение : "Строка №Х количество имеет не числовой формат!" И так по всем строкам в колонке КоличествоВУпаковкеПоУмолчанию. Сначала думал, что из-за того, что там нет чисел, т.е. колонка полностью пустая, но проставил там числа и то же сообщение выводится! Вот код :
&НаСервере
Процедура ПолучитьТаблицуДанных(ТабличныйДокумент)
    
    Объект.ЕстьОшибки = Ложь;
    Для ТекущаяСтрока = 2 По ТабличныйДокумент.ВысотаТаблицы Цикл
        Группа                = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C1").Текст);
        Код                   = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C2").Текст);
        Артикул               = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C3").Текст);
        РабочееНаименование   = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C4").Текст);
        НаименованиеДляПечати = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C5").Текст);
        Новинка               = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C6").Текст);
        СтавкаНДС             = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C7").Текст);
        ВидНоменклатуры       = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C8").Текст);
        ТипНоменклатуры       = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C9").Текст);
        ЕдиницаХранения       = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C10").Текст);
        ВестиУчетПоГТД        = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C11").Текст);
        Поставщик             = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C12").Текст);
        Бренд                 = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C13").Текст);
        
    
        Попытка
            
            КоличествоВУпаковкеПоУмолчанию = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"С14").Текст));
        Исключение
            КоличествоВУпаковкеПоУмолчанию = 0;
            Объект.ЕстьОшибки = Истина;
            Сообщить("Строка №"+ТекущаяСтрока+". Количество имеет не числовой формат!");
            ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C14").Примечание.Текст = "Количество имеет не числовой формат!";
        
               КонецПопытки;
        
    
    
    
    
    
           МинимальныйЗаказ = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C15").Текст);
           Попытка
             ЦенаПоступления = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C16").Текст));
        Исключение
            ЦенаПоступления = 0;
            Объект.ЕстьОшибки = Истина;
            Сообщить("Строка №"+ТекущаяСтрока+". Цена имеет не числовой формат!");
            ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C16").Примечание.Текст = "Цена имеет не числовой формат!";
        КонецПопытки;
           Попытка
            ЦенаБазовая = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C17").Текст));
        Исключение
            ЦенаБазовая = 0;
            Объект.ЕстьОшибки = Истина;
            Сообщить("Строка №"+ТекущаяСтрока+". Цена имеет не числовой формат!");
            ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C17").Примечание.Текст = "Цена имеет не числовой формат!";
        КонецПопытки;
        ШтрихКод               = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C18").Текст);
        Склад                  = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C19").Текст);
        СпособПополненияЗапаса = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C20").Текст);
        ВремяТранспортировки   = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C21").Текст);
        Календарь              = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C22").Текст);
        ПорядокПрименения      = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C23").Текст);
        АртикулА               = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C24").Текст);
        Наименование           = СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C25").Текст);
        Попытка
            Цена = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C26").Текст));
        Исключение
            Цена = 0;
            Объект.ЕстьОшибки = Истина;
            Сообщить("Строка№"+ТекущаяСтрока+". Цена имеет не числовой формат!");
            ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"C26").Примечание.Текст = "Цена имеет не числовой формат!";
        КонецПопытки;
        
                        
        НоваяСтрока = Объект.Таблица.Добавить();
        НоваяСтрока.Группа                         = Группа;
        НоваяСтрока.Код                            = Код;
        НоваяСтрока.Артикул                        = Артикул;
        НоваяСтрока.РабочееНаименование            = РабочееНаименование;
        НоваяСтрока.НаименованиеДляПечати          = НаименованиеДляПечати;
        НоваяСтрока.Новинка                        = Новинка;
        НоваяСтрока.СтавкаНДС                      = СтавкаНДС;
        НоваяСтрока.ВидНоменклатуры                = ВидНоменклатуры;
        НоваяСтрока.ТипНоменклатуры                = ТипНоменклатуры;
        НоваяСтрока.ЕдиницаХранения                = ЕдиницаХранения;
        НоваяСтрока.ВестиУчетПоГТД                 = ВестиУчетПоГТД;
        НоваяСтрока.Поставщик                      = Поставщик;
        НоваяСтрока.Бренд                          = Бренд;
        НоваяСтрока.КоличествоВУпаковкеПоУмолчанию = КоличествоВУпаковкеПоУмолчанию;
        НоваяСтрока.МинимальныйЗаказ               = МинимальныйЗаказ;
        НоваяСтрока.ЦенаПоступления                = ЦенаПоступления;
        НоваяСтрока.ЦенаБазовая                    = ЦенаБазовая;
        НоваяСтрока.Штрихкод                       = Штрихкод;
        НоваяСтрока.Склад                          = Склад;
        НоваяСтрока.СпособПополненияЗапаса         = СпособПополненияЗапаса;
        НоваяСтрока.ВремяТранспортировки           = ВремяТранспортировки;
        НоваяСтрока.Календарь                      = Календарь;
        НоваяСтрока.ПорядокПрименения              = ПорядокПрименения;
        НоваяСтрока.АртикулА                       = АртикулА;
        НоваяСтрока.Наименование                   = Наименование;
        НоваяСтрока.Цена                           = Цена;
    
    
    КонецЦикла;
    
КонецПроцедуры

Спасибо!
logist
Цитата(MH.z @ 31.05.12, 11:29) необходимо зарегистрироваться для просмотра ссылки
пользователь в ручную копирует данные из экселя и вставляет в табличную часть формы

Есть подозрение что при ручном копировании формат ячеек не переносится, и воспринимается как текст. Попробуйте до преобразования в число удалить из строки пробелы.
MH.z
Спасибо! Уже все исправил, нашел ошибку. как всегда паникую раньше времени sad.gif
Vofka
Цитата(MH.z @ 31.05.12, 13:01) необходимо зарегистрироваться для просмотра ссылки
как всегда паникую раньше времени

И как всегда решение никто не узнает 05040.gif
MH.z
Пардон!
Переписал строку
 КоличествоВУпаковкеПоУмолчанию = Число(СокрЛП(ТабличныйДокумент.Область("R"+Формат(ТекущаяСтрока,"ЧГ=")+"С14").Текст));


И все стало на свои места. Так же в случае если из экселя при копировании будут пустые колонки закоментировал строки:
 Сообщить("Строка№"+ТекущаяСтрока+". Цена имеет не числовой формат!");
Vofka
Цитата(MH.z @ 31.05.12, 13:13) необходимо зарегистрироваться для просмотра ссылки
И все стало на свои места. Так же в случае если из экселя при копировании будут пустые колонки закоментировал строки:

Я бы не комментировал. Вдруг каким-то образом в эксэле в какой-то числовой колонке кто-то букву вставит 05034.gif
MH.z
Вот вернулся снова к этой обработке. Только она уже не внешняя. Ситуация следующая. При копировании из экселя в табчасть формы данных при нажатии на кнопку Загрузить, данные записываются в справочник Номенклатура. Вот код :
&НаСервере
Процедура М_Присвоение()
    
    Для каждого ТЧ из Объект.Таблица Цикл
        Спр = Справочники.Номенклатура.СоздатьЭлемент();
        Спр.Артикул = ТЧ.Артикул;
        Спр.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Новинки Весна 2012");
        Спр.Наименование = ТЧ.РабочееНаименование;      
        Спр.НаименованиеПолное = ТЧ.НаименованиеДляПечати;
        
        Если ТЧ.СтавкаНДС = "СтавкаНДС" Тогда
            Спр.СтавкаНДС = Перечисления.СтавкаНДС.НДС18;
        КонецЕсли;
        
        Спр.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("ТЧ.ВидНоменклатуры");
        
        Если  ТЧ.ТипНоменклатуры = "Товар" Тогда
            Спр.ТипНоменклатуры = Истина;
        ИначеЕсли ТЧ.ТипНоменклатуры = "Услуга" Тогда
            Спр.ТипНоменклатуры = Ложь;
            
        КонецЕсли;
        
        Спр.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ТЧ.ЕдиницаХранения");
        
        Если ТЧ.ВестиУчетПоГТД = "Да" Тогда
            Спр.ВестиУчетПоГТД = Истина;
        ИначеЕсли ТЧ.ВестиУчетПоГТД = "Нет" Тогда
            Спр.ВестиУчетПоГТД = Ложь;
        КонецЕсли;
        Спр.Записать();
        
        
        Для каждого Стр ИЗ Спр.ДополнительныеРеквизиты Цикл
            Если Стр.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Бренд") Тогда
                Стр.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("ТЧ.Бренд");
                Если ТЧ.Новинка = "Да" Тогда
                    Спр.Новинка = Истина;
                ИначеЕсли ТЧ.Новинка ="нет" тогда
                    Спр.Новинка = Ложь;
                КонецЕсли;
                
            КонецЕсли;
            Спр.МинимальныйЗаказ = ТЧ.МинимальныйЗаказ;
            Спр.Записать();
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Не записывает дополнительные реквизиты , Бренд, новинка и минимальный заказ. Не могу понять почему, и ошибки нет и записи тоже. Помогите пожалуйста! Спасибо!
MATEVI
А шо это такое?
Спр.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("ТЧ.ВидНоменклатуры");
//и это
Спр.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("ТЧ.ЕдиницаХранения");
MH.z
Цитата(MATEVI @ 08.06.12, 15:20) необходимо зарегистрироваться для просмотра ссылки
А шо это такое?


Эти строки их там нет) Не правильно скопировал.
Подскажите пожалуйста. Такая ситуация, при загрузке в справочник номенклатура задваиваются строки. Вообще расчитано единоразово загружать из документа новый товар. Но мне надо проверять же при загрузке. Как сделать, что бы каждый раз когда я открываю справочник до того как в него загружаю данные, он был пуст? А то как-то не весело смотреть на один и тот же товар в 20 строках...


 i 

Правила п.13
 
MATEVI
Что то последний пост вообще не понятен. Что значит пуст? Зачем в него загружать? Вы же создаете новые элементы справочников и записываете их как он может быть пуст? Или Вам нужен дополнительный поиск по кодам, артикулам (наименованиям) для того что бы не было 20 одинаковых справочников?
MH.z
Цитата(MATEVI @ 11.06.12, 14:42) необходимо зарегистрироваться для просмотра ссылки
Или Вам нужен дополнительный поиск по кодам, артикулам (наименованиям) для того что бы не было 20 одинаковых справочников?


Да именно так и нужно. По наименованиям!
MATEVI
Цитата(MH.z @ 11.06.12, 14:48) необходимо зарегистрироваться для просмотра ссылки
Да именно так и нужно. По наименованиям!

Ну приблизительно вот так
// вместо Спр = Справочники.Номенклатура.СоздатьЭлемент();
ТекНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию("Мое наименование");
Если ТекНоменклатура.ПустаяСсылка() Тогда        
        Сообщить("Не найдена номенклатура! Создаем новый элемент");
        Спр = Справочники.Номенклатура.СоздатьЭлемент();
Иначе
        Спр = ТекНоменклатура.ПолучитьОбъект();//дальше пишем в него
КонецЕсли;

ЗЫ По наименованиям искать плохо.... А если кто то изменит название в экселе или справочнике?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.