Загрузка из Excel

  • Автор темы serduk
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

serduk

#1
здрасте!
Сейчас будет всем надоевшая фраза, а шо делать;). Итак!
Я новичок( вот она фраза):lol:.
Решаю( уже 4 дня) задачу загрузки из Excel в базу новых товаров и обновления цен. Основная сложность: Иерархические справочники(вложеность до 3-х уровней)

Excel-файл имеет формат

!!названиеВидаТовара!!
названиеПроизводителя!!
назание товара
названиеПроизводителя
.....

Код

функция Загрузка()

ВыбратьФайл();
Если ПустаяСтрока(ИмяФайла)=1
Тогда Сообщить(" файл не выбран. Конец загрузки"); возврат 1;
КонецЕсли;
СпрТовара=СоздатьОбъект("Справочник.Товары");
Эксель=СоздатьОбъект("Excel.Application");
РабочаяКнига=Эксель.Workbooks;
РабочаяКнига.Open(ИмяФайла,0,1);

к=1;



Пока ПустаяСтрока(Буфер)=0
Цикл
Буфер=ПолучитьЗначение(Эксель,к,1);
//Буфер=AnsiToOem(Буфер);
повтор=СтрЧислоВхождений(Буфер,"!!");
Если повтор=1
Тогда ОпределитьГрпТовара(Буфер);
Иначе
Если повтор=2
Тогда ОпределитьГрпФирмы(Буфер); // процедура ищет группу, если таковой нет добавляет
Иначе
//строка содержит наименование товара
СпрТовара.ИспользоватьРодителя(грпФирмы);

Если СпрТовара.НайтиПоНаименованию(Буфер)=0
Тогда
СпрТовара.ИспользоватьДату(ДатаДок);
СпрТовара.Новый();
СпрТовара.Наименование=Строка(ПолучитьЗначение(Эксель,к,1));
СпрТовара.Остаток=СпрТовара.Остаток+Число(ПолучитьЗначение(Эксель,к,2));
СпрТовара.Прих_Цена=Число(ПолучитьЗначение(Эксель,к,3));

СпрТовара.Розн_Цена=Число(ПолучитьЗначение(Эксель,к,4));
СпрТовара.Записать();
Сообщить("Добавлен Товар");
Иначе
Если СпрТовара.ЭтоГруппа()=0
Тогда СпрТовара.Прих_Цена=Число(ПолучитьЗначение(Эксель,к,3));
СпрТовара.Розн_Цена=Число(ПолучитьЗначение(Эксель,к,4));
СпрТовара.Записать();
Иначе Сообщить("неправильно организована таблица.Работай внимательней:)")
КонецЕсли;
КонецЕсли;

КонецЕсли;

КонецЕсли;

к=к+1;
КонецЦикла;

Проблема : при запуске Документа из 1С, нажимаю загрузить , указываю файл.... и все больше ничего не происходит(ни сообщений о выполнении, ни ошибок).
В отладчике не запускал: потому что не знаю как с ним работать:)

В общем буду очень благодарен за любые советы. Заранее спасибо!

Кто действительно захочет помочь маякните. расскажу подробнее.ICQ 332834572
 
S

serduk

#2
да уж! не много ответов.

Нашел глюк. Глуппая ошибка:(.


//здесь не хватало инициализации Буфер

Буфер=ПолучитьЗначение(Эксель,1,1); // вот эта строка.забыл что Буфер только объявлен

Пока ПустаяСтрока(Буфер)=0
Цикл
Буфер=ПолучитьЗначение(Эксель,к,1);
......

Код работает!!!!! Ура!!
 
Статус
Закрыто для дальнейших ответов.