• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

vipos

Всем доброго времени суток! столкнулся со следующей проблемой- нужно дополнить сотрудников реквизитами из 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;				

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

puh14

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

Дайнеко

Мне понравилось, как puh14 бросился отвечать. А вопроса-то не прозвучало.

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

unknown181538

Забавная тема))
А не может быть, что код в Эксели числовой, и тут его надо в строку преобразовывать?
 
V

vipos

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

unknown181538

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

evgenyatam

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

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