Имя: Пароль:
1C
1C 7.7
v7: Поиск по справочнику
,
0 ВежливаяТварь
 
30.09.11
11:56
Добрый день уважаемые форумчане. Появилась некоторая проблема. Передо мной поставили задачу считать с екселевсого файла информацию и занести её в документы. Однако при считывании фамилии и попытке поиска по наименованию в справочнике возвращается ноль. С справочнике такая фамилия есть. Код:


Процедура Сформировать()  
   Попытка
       Эксель= СоздатьОбъект("Excel.Application");
   Исключение
       Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
       Возврат;  
   КонецПопытки;
   
   СпрСотрудники=СоздатьОбъект ("Справочник.Сотрудники");
   Книга=Эксель.WorkBooks.Open(Путь);
   Лист=Книга.WorkSheets("Ведомость-филиалы");
   СтрокаЕкселя=6;
   ИндикаторСуществованияДокумента=0;
   НовыйДокумент=СоздатьОбъект ("Документ.НашеНачислениеЗП");
   Пока ПустоеЗначение(Лист.Cells(СтрокаЕкселя, 2).Value)=0 Цикл
       Если ПустоеЗначение(Лист.Cells(СтрокаЕкселя, 1).Value)=0 Тогда
           Если ИндикаторСуществованияДокумента=1 Тогда
               НовыйДокумент.Записать();
               ОткрытьФорму(НовыйДокумент.ТекущийДокумент());  
               НовыйДокумент=СоздатьОбъект ("Документ.НашеНачислениеЗП");
           КонецЕсли;
           //Заполняем шапку документа
           ИндикаторСуществованияДокумента=1;
           НовыйДокумент.Новый();
           НовыйДокумент.ВидВыплаты=Перечисление.ВидыВыплат.ОсновнаяЗП;
           НовыйДокумент.ДатаДок=ТекущаяДата();    
           НовыйДокумент.Дней=глКолРабочихДней(НачМесяца(НовыйДокумент.ДатаДок),КонМесяца(НовыйДокумент.ДатаДок));    
             НовыйДокумент.Примечание=Лист.Cells(СтрокаЕкселя, 1).Value;  
             НовыйДокумент.НоваяСтрока();
           Сотрудник=Лист.Cells(СтрокаЕкселя, 2).Value;
           СпрСотрудники.НайтиПоНаименованию(Сотрудник);
           НовыйДокумент.Сотрудник=СпрСотрудники.ТекущийЭлемент();
           СтрокаЕкселя=СтрокаЕкселя+1;
       Иначе
           НовыйДокумент.НоваяСтрока();
           Сотрудник=Лист.Cells(СтрокаЕкселя, 2).Value;
           СпрСотрудники.НайтиПоНаименованию(Сотрудник);
           НовыйДокумент.Сотрудник=СпрСотрудники.ТекущийЭлемент();
           СтрокаЕкселя=СтрокаЕкселя+1;
       КонецЕсли;    
   КонецЦикла;
   НовыйДокумент.Записать();
   ОткрытьФорму(НовыйДокумент.ТекущийДокумент());          

   
   Эксель.Quit();
   
КонецПроцедуры
1 План счетов
 
30.09.11
12:02
в программе
Петров Александр Александрович
в эксель фале - Петров А.А. ???

До создания нового документа надо пройтись поиском по сотрудникам, если не найден то не загружать (искать ошибку почему не находит) или предложить выбрать ручками.
2 ВежливаяТварь
 
30.09.11
12:03
Нет проверял, точь в точь такой же, каждую букву сверил.
3 ВежливаяТварь
 
30.09.11
12:05
Даже если я копирую наименование из справочника, вставляю в код всё равно не находит...
4 Darych
 
30.09.11
12:05
сокрлп().... а ваще-то иди в отладчик
5 ВежливаяТварь
 
30.09.11
12:08
сокрлп()? Сходил считывает фамилию нормально, а при поиске выдаёт ноль.
6 chief accountant
 
30.09.11
12:10
НайтиПоНаименованию(ФИО,0,1)
7 catena
 
30.09.11
12:10
А если скопировать наименование и контрл+Ф по екселю - находит?
8 Darych
 
30.09.11
12:10
СпрСотрудники.НайтиПоНаименованию(Сотрудник,0)
9 graf123
 
30.09.11
12:12
СпрСотрудники.НайтиПоНаименованию(Сотрудник);
попробуй так:
СпрСотрудники.НайтиПоНаименованию(СокрЛП(Сотрудник));
а ещё может быть, что между словами лишние пробелы стоят.
10 ВежливаяТварь
 
30.09.11
12:12
(6) Заработало, огромное спасибо.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший