Справочник И Excel

Тема в разделе "1C и всё что с ней связано", создана пользователем vipos, 21 сен 2012.

  1. vipos

    vipos Гость

    Всем доброго времени суток! столкнулся со следующей проблемой- нужно дополнить сотрудников реквизитами из exel файла

    Вот код.... помогите плиз доработать

    Код ( (Unknown Language)):
    Excel = Новый COMОбъект("Excel.Application");
    ВыбФайл = Новый Файл("d:\хрень\Только нужное2.xls");
    ФайлОткуда = ВыбФайл.ПолноеИмя;
    РабочаяКнига = Excel.WorkBooks.Open(ФайлОткуда);
    Страница=1;
    Пока Страница=1 Цикл
    Лист = Excel.Sheets(1);
    Строка=2;
    Пока ЗначениеЗаполнено(Лист.Cells(Строка, 1).Value) Цикл
    Значение1=Лист.Cells(Строка,1).Value;
    ссылка= Справочники.СотрудникиОрганизаций.НайтиПоКоду(Значение1);
    Если не Ссылка.Пустая() Тогда
    Значение1=Лист.Cells(Строка,1).Value;
    Эл = Справочники.СотрудникиОрганизаций.СоздатьЭлемент();
    Значение1=Лист.Cells(Строка,1).Value;
    эл.Код=Значение1;
    Эл.Бронь=Лист.Cells(Строка,3). Value;
    Эл.ВременныйПеревод= Лист.Cells(Строка,4). Value;;
    Эл.ДатаУхода= Лист.Cells(Строка,5). Value;
    Эл.ДолжностноеЛицо=Лист.Cells(Строка,6). Value;
    Эл.МОЛ=Лист.Cells(Строка,7). Value;
    Эл.Пенсионер=Лист.Cells(Строка,8). Value;
    Эл.ПриемВСчетБрони=Лист.Cells(Строка,9). Value;
    Эл.ПризнакПенсионера=Лист.Cells(Строка,10). Value;
    Эл.СемейноеПоложение=Лист.Cells(Строка,11). Value;
    Эл.СовместительВнешний=Лист.Cells(Строка,12). Value;
    Эл.Совмещение=Лист.Cells(Строка,13). Value;
    Эл.Записать();
    иначе
    Сообщить("Не найден сотрудник"+ Значение1);

    Конецесли;
    строка = строка + 1;               

    КонецЦикла;    
    КонецЦикла;
     
  2. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    А в чем проблема?
     
  3. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    1)Эксель по окончании работы не закрывается, висит в памяти
    2) название сотрудники организации как бы намекает что справочник сотрудников подчинен справонику организации
    3) ЗначениеЗаполнено() - а что, правда работает?
    4) Ссылка.Пустая() - не уверен что пашет, обычно сравнение делают как Спраочники.СотрудникиОрганизаций.ПустаяСсылка()
    5)Должностное лицо,Семейное положение скорее всего ссылочные типы данных, подстановка в них строки не поможет, надо искать по соответствующему объекту.
    6)А какие еще реквизиты обязательны к заполнению в сотруднике? Физ лицо например?
    Значит если вы нашли такой элемент, то тут же пытаетсь создать такой-же, зачем? О_о
     
  4. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Мне понравилось, как puh14 бросился отвечать. А вопроса-то не прозвучало.

    Ссылка.Пустая() - очень даже что пашет. И так мне кажется более красивым в условии. Ибо только проверяется свойство ссылки. А метод ПустаяСсылка() , думаю, приводит к созданию в памяти некого объекта и затем уже сравнения с ним. Такой метод годится, например, для того, чтобы присвоить ссылочной переменной начальное значение.
     
  5. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Забавная тема))
    А не может быть, что код в Эксели числовой, и тут его надо в строку преобразовывать?
     
  6. vipos

    vipos Гость

    Прошу прощения за некоректно заднанный вопрос... дело в том что реквизиты не хотят переноситься... не знаю в чем дело... дело в том что скорее всего необходимо преобразовать строку в елемент перечисления...
     
  7. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    конечно необходимо)
    Можно попробовать тупо
    Код ( (Unknown Language)):
    Если СокрЛП(Лист.Cells(Строка,9). Value)="За счет брони" Тогда
    Эл.ПриемВСчетБрони=Перечисления.ВидыПриемов.ЗаСчетБрони;
    КонецЕСЛИ;
    Или как у вас там)
     
  8. evgenyatam

    evgenyatam Well-Known Member

    Регистрация:
    7 сен 2007
    Сообщения:
    175
    Симпатии:
    0
    Пока Страница=1 Цикл
    а внутри цикла переменная "Страница" не меняется, соответственно бесконечный цикл.
    а в целом все правильно (с учетом того что сказали предыдущие писатели).
     
  9. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    хаха)
     
Загрузка...

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