Имя: Пароль:
1C
1C 7.7
v7: Выборка из ДБФ
, ,
0 work92
 
05.01.13
09:41
Включаю и Зависает выборка что изменить в коде
Процедура Выполнить()
      Таб=СоздатьОбъект("Таблица") ;
     Таб.ИсходнаяТаблица("Таблица");
     ДБФ= создатьОбъект("XBASE");

     ДБФ.ОткрытьФайл("D:\Проверка ДБФ\Магазин.dbf");
      Сумма=0;
      ДБФ.Первая();
   
   Пока ДБФ.ВКонце()=0 Цикл  
       
   
       Если ДБФ.NAme_=852 Тогда
       Сумм=Сумма+ДБФ.SUM_;    
 Имя=ДБФ.Name_;

      Таб.Вывестисекцию("Строка");
     ДБФ.Следующая();  
КонецЕсли;

КонецЦикла;
 

   
  Таб.Показать();
КонецПроцедуры
1 work92
 
05.01.13
09:42
проблема в этой части



Пока ДБФ.ВКонце()=0 Цикл

       
   
       Если ДБФ.NAme_=852 Тогда
       Сумм=Сумма+ДБФ.SUM_;    
 Имя=ДБФ.Name_;

      Таб.Вывестисекцию("Строка");
     ДБФ.Следующая();  
КонецЕсли;

КонецЦикла;
2 vinogradъ
 
05.01.13
09:54
ДБФ.Следующая(); вынеси из условия
3 snegovik
 
05.01.13
09:56
У тебя ДБФ.Следующая() стоит в условии, которое наверняка не выполняется в первой строке ДБФ. Поэтому и цикл крутится на первой строке.
4 work92
 
05.01.13
10:17
Не выводит данные а открывает пустую таблицу
5 work92
 
05.01.13
10:17
Процедура Выполнить()
      Таб=СоздатьОбъект("Таблица") ;
     Таб.ИсходнаяТаблица("Таблица");
     ДБФ= создатьОбъект("XBASE");

     ДБФ.ОткрытьФайл("D:\Проверка ДБФ\Магазин.dbf");
      Сумма=0;
      ДБФ.Первая();
   
   Пока ДБФ.ВКонце()=0 Цикл  
       
   
       Если ДБФ.NAme_=852 Тогда
   //    Сумм=Сумма+ДБФ.SUM_;    
 Имя=ДБФ.Name_;

     
       
КонецЕсли;
     ДБФ.Следующая();
     
      Таб.Вывестисекцию("Строка");
КонецЦикла;
 

   
  Таб.Показать();
КонецПроцедуры
6 Mikeware
 
05.01.13
10:19
(5) открой для себя отладчик...
7 snegovik
 
05.01.13
10:20
Если ДБФ.NAme_=852 Тогда
   //    Сумм=Сумма+ДБФ.SUM_;    

 Имя=ДБФ.Name_;
//Добавь эту строку:
Сообщить(Имя);
//Запусти процедуру, что выдаст в сообщениях?
8 snegovik
 
05.01.13
10:20
(6) Рано ему ещё отладчик открывать.
9 work92
 
05.01.13
10:23
не сообщает
10 work92
 
05.01.13
10:23
что делать
11 work92
 
05.01.13
10:24
Процедура Выполнить()
      Таб=СоздатьОбъект("Таблица") ;
     Таб.ИсходнаяТаблица("Таблица");
     ДБФ= создатьОбъект("XBASE");

     ДБФ.ОткрытьФайл("D:\Проверка ДБФ\Магазин.dbf");
      Сумма=0;
      ДБФ.Первая();
   
   Пока ДБФ.ВКонце()=0 Цикл  
       
   
       Если СОкрЛП(ДБФ.NAme_)=852 Тогда
   //    Сумм=Сумма+ДБФ.SUM_;    
 Имя=ДБФ.Name_;

     
       
КонецЕсли;
     ДБФ.Следующая();
     
      Таб.Вывестисекцию("Строка");
КонецЦикла;
 

     Сообщить(Имя);
  Таб.Показать();
КонецПроцедуры
12 Mikeware
 
05.01.13
10:24
(10) возьми лист бумаги формата А4, и напиши заявление об увольнении в связи с профнепригодностью...
13 snegovik
 
05.01.13
10:31
(11) Ты тролль, что ли? Я же написал, куда поставить Сообщить(Имя); - сразу после Имя=ДБФ.Name_.
14 vinogradъ
 
05.01.13
10:31
(11) Мне было бы стыдно с таким обращаться на форум. Такие косяки нужно самому решать, иначе дальше заниматься "программированием" в 1С не стоит.
15 Chai Nic
 
05.01.13
10:52
(14) У всех было такое время, когда код на незнакомом языке программирования представляется набором заклинаний, никак между собой не связанных.. это проходит.
16 snegovik
 
05.01.13
10:54
(15) Он на мисте уже полгода, я в свое время при полугодовом стаже уже успел две базы порушить))
17 vinogradъ
 
05.01.13
11:01
(11) Если СокрЛП(ДБФ.NAme_) = "852" Тогда
и Таб.Вывестисекцию("Строка"); внутрь условия поставь
18 PALESIA
 
05.01.13
19:21
(6) когда-то я открыл для себя отладчик ... потом открыл Сообщить() и забыл про отладчик)