• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Загрузка из Excel

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

serduk

здрасте!
Сейчас будет всем надоевшая фраза, а шо делать;). Итак!
Я новичок( вот она фраза):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

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

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


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

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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!