Имя: Пароль:
1C
1C 7.7
v7: ДБФ
,
0 work92
 
18.04.13
11:56
У меня есть 1 файл ДБФ мне нужно выбрать всех тех кто есть в справочнике Уволеные и файле ДБФ .А моя процедура выбирает выбирает и встовляет всех из справочника уволенные.
Процедурв ДБФ()
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");



   СпрСотр.НайтиПоНаименованию("Уволенные",0,0);
   Уволенные=СпрСотр.ТекущийЭлемент();
   СпрСотр.ИспользоватьРодителя(Уволенные);
   СпрСотр.ВыбратьЭлементы();    
   
           Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
           
    ДБФ1=СоздатьОбъект("XBase");
    ДБФ1.ОткрытьФайл("d:\Зик.DBF");
    ДБФ1.Первая();
           Нашли=0;
           Пока ДБФ1.ВКонце()=0 Цикл  
               Если СокрЛП(ДБФ1.Name)=СокрЛП(СпрСотр.Наименование) Тогда  
               Сообщить(СпрСотр.Наименование);        
           Нашли=1;
                    Прервать;
       Иначе ДБФ1.Следующая();
                 
           КонецЕсли;
           
                 КонецЦикла;        
                 Если Нашли =1 Тогда    
               ДБФСУММА=Число(ДБФ1.Sum);
                     КонецЕсли;
                         НоваяСтрока();
               Сотрудник=СпрСотр.ТекущийЭлемент();
               
                   Сумма = ДБФСУММА;
                   
                   КонецЦикла;
Конецпроцедуры
1 work92
 
18.04.13
11:57
подскажите что исправить в коде

подозрение на  Иначе ДБФ1.Следующая();
2 Kreont
 
18.04.13
11:59
Лучше закинь всю ДБФ в ВТ и там соедини уже как надо в запросе, а так по коду то я понял для каждого делаешь перебор по файлу некрасиво :)
3 work92
 
18.04.13
12:01
Kreont
а может есть решение этому коду
4 Kreont
 
18.04.13
12:02
(3) ну если очень надо, то тогда уж лучше перебирать ДБФ и искать по справочнику уволенных
5 work92
 
18.04.13
12:03
а как в примере
6 Kreont
 
18.04.13
12:04
(5) :)
Если Нашли =1 Тогда
Нашли =0
7 Kreont
 
18.04.13
12:05
(6) а нет, там смотри ниже вовсе не так написано при нахождении:
Если Нашли =1 Тогда    

  ДБФСУММА=Число(ДБФ1.Sum);

НоваяСтрока();
Сотрудник=СпрСотр.ТекущийЭлемент();
               
Сумма = ДБФСУММА;

КонецЕсли;
8 work92
 
18.04.13
12:08
кидае всех
9 Kreont
 
18.04.13
12:10
(8) да ну, а в сообщить что тоже все попадают?
10 work92
 
18.04.13
12:11
да
11 work92
 
18.04.13
12:12
и в док.табличную часть занение не вносит
12 work92
 
18.04.13
12:12
перестало вносить
13 Kreont
 
18.04.13
12:12
(10) ну тогда все норм. значит все из ДБф есть с спр.уволенные
14 work92
 
18.04.13
12:15
Kreont
у меня задача
1 файл дбф в нем 140 записей
справочник уволенные 50 записей


Мне нужно сравнить кто в дбф совподает с справочником уволленые и в нести в табличную часть документа
15 Kreont
 
18.04.13
12:17
(14) код исходя из того что написано выше с поправками (при условии что все из ДБФ есть в справочнике) должен сделать "сообщить" ровно 50 раз, или меньше если не все есть.
16 work92
 
18.04.13
12:22
Kreont!!!!!!!!! СП!!!!!!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший