Процедура Выполнить()
Если Курс=0 Тогда
Курс=1;
КонецЕсли;
НачальнаяСтрока = НачСтрока;
КонечнаяСтрока = КонСтрока;
ЗапущенExcel=1;
Попытка
// запускаем Excel-Server
ВходExcel = СоздатьОбъект("Excel.Application");
Исключение
ЗапущенExcel = 0;
Сообщить(ОписаниеОшибки(),"!");
Возврат;
КонецПопытки;
Если ЗапущенExcel=1 Тогда
Попытка
// открываем файл
ВходExcel.Application.Workbooks.Open(НазваниеФайла);
ВходнойФайлОткрыт = 1;
Исключение
ВходExcel.Quit();
Сообщить(ОписаниеОшибки(),"!");
Возврат;
КонецПопытки;
КонецЕсли;
Если ВходнойФайлОткрыт = 1 тогда
Сообщить("Файл открыт");
КонецЕсли;
НСтрока = Макс(НачальнаяСтрока,1);
КСтрока = КонечнаяСтрока;
НачатьТранзакцию();
СпрНом=СоздатьОбъект("Справочник.Номенклатура");
Родит=ПолучитьПустоеЗначение("Справочник.Номенклатура");
мИнд=0;
Для НомерСтроки = НСтрока По КСтрока Цикл // цикл по всем строкам входного файла, кроме шапки
мЦена = ВходExcel.ActiveSheet.Cells(НомерСтроки,КолонкаЦены).Value;
мНаим = ВходExcel.ActiveSheet.Cells(НомерСтроки,КолонкаНаим).Value;
Если СпрНом.НайтиПоНаименованию(мНаим,0,1)=0 Тогда
Если Число(мЦена) <> 0 Тогда
СпрНом.Новый();
СпрНом.Наименование = мНаим;
СпрНом.Цена = мЦена*Курс;
Если ПустоеЗначение(Родит)=0 Тогда
СпрНом.Родитель=Родит;
КонецЕсли;
Иначе
СпрНом.НоваяГруппа();
СпрНом.Наименование = мНаим;
КонецЕсли;
СпрНом.Записать();
Если СпрНом.ЭтоГруппа()=1 Тогда
Родит=СпрНом.ТекущийЭлемент();
КонецЕсли;
Иначе
Если Число(мЦена) <> 0 Тогда
СпрНом.Цена = мЦена*Курс;
Если ПустоеЗначение(Родит)=0 Тогда
СпрНом.Родитель=Родит;
КонецЕсли;
КонецЕсли;
СпрНом.Записать();
Если СпрНом.ЭтоГруппа()=1 Тогда
Родит=СпрНом.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
Сообщить ("Записали - "+СпрНом.Наименование);
КонецЦикла;
ЗафиксироватьТранзакцию();
ВходExcel.ActiveWorkbook.Close();
ВходExcel.Quit();
КонецПроцедуры