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

  • Автор темы vipos
  • Дата начала
V

vipos

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

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

Код:
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;				

КонецЦикла;	  
КонецЦикла;
 

puh14

Well-Known Member
11.07.2008
1 412
0
НеРезиновая
#3
1)Эксель по окончании работы не закрывается, висит в памяти
2) название сотрудники организации как бы намекает что справочник сотрудников подчинен справонику организации
3) ЗначениеЗаполнено() - а что, правда работает?
4) Ссылка.Пустая() - не уверен что пашет, обычно сравнение делают как Спраочники.СотрудникиОрганизаций.ПустаяСсылка()
5)Должностное лицо,Семейное положение скорее всего ссылочные типы данных, подстановка в них строки не поможет, надо искать по соответствующему объекту.
6)А какие еще реквизиты обязательны к заполнению в сотруднике? Физ лицо например?
ссылка= Справочники.СотрудникиОрганизаций.НайтиПоКоду(Значение1);
Если не Ссылка.Пустая() Тогда
Значение1=Лист.Cells(Строка,1).Value;
Эл = Справочники.СотрудникиОрганизаций.СоздатьЭлемент();
Значит если вы нашли такой элемент, то тут же пытаетсь создать такой-же, зачем? О_о
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#4
Мне понравилось, как puh14 бросился отвечать. А вопроса-то не прозвучало.

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

unknown181538

НеГуру
28.12.2008
1 417
0
30
Москва
#5
Забавная тема))
А не может быть, что код в Эксели числовой, и тут его надо в строку преобразовывать?
 
V

vipos

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

unknown181538

НеГуру
28.12.2008
1 417
0
30
Москва
#7
дело в том что скорее всего необходимо преобразовать строку в елемент перечисления...
конечно необходимо)
Можно попробовать тупо
Код:
Если СокрЛП(Лист.Cells(Строка,9). Value)="За счет брони" Тогда
Эл.ПриемВСчетБрони=Перечисления.ВидыПриемов.ЗаСчетБрони;
КонецЕСЛИ;
Или как у вас там)
 

evgenyatam

Well-Known Member
07.09.2007
175
0
43
#8
Пока Страница=1 Цикл
а внутри цикла переменная "Страница" не меняется, соответственно бесконечный цикл.
а в целом все правильно (с учетом того что сказали предыдущие писатели).