Имя: Пароль:
1C
 
Отбор по СпискуЗначений в ТаблицуЗначений документов.
0 Генс
 
14.10.04
11:59
Добрый день.У меня такая вот проблемка. Я сделал Табл-ТаблицаЗначений куда должны отбиратся документы по СписокЗн-СписокЗначений, отбор по клиенту.На выходе у меня получается, что сравнение только с последним клиентом в СписокЗн. Подскажите пожалуйста, что не так.

Процедура Выполнить()
   Док = СоздатьОбъект("Документ.СчетВходящий");
   Табл.УдалитьСтроки();
   Док.ВыбратьДокументы();                                                
   Пока Док.ПолучитьДокумент()=1 Цикл
       Для ин=1 по СписокЗн.РазмерСписка() цикл
           Тек=СписокЗн.ПолучитьЗначение(Ин,СписокЗн);
           Сообщить(Тек);
       КонецЦикла;
       Если Тек=Док.Клиент Тогда
           Продолжить;
       КонецЕсли;
   Табл.НоваяСтрока();    
............
.......
КонецЦикла
КонецПроцедуры
1 Crew
 
14.10.04
12:14
Конец ...перенеси... Цикла
за
Табл.НоваяСтрока();
2 Шапокляк
 
14.10.04
12:16
Для ин=1 по СписокЗн.РазмерСписка() цикл
          Тек=СписокЗн.ПолучитьЗначение(Ин,СписокЗн);
          Сообщить(Тек);
      КонецЦикла;
Так всегда ж на последний элемент списка становишься!
3 Генс
 
14.10.04
13:19
(1) Перенес стало еще хуже.
4 Diter
 
14.10.04
13:22
Если Тек=Док.Клиент Тогда
          Продолжить;
      КонецЕсли;
Т.е. ты найдя нужного клиента передаёшь управление в начало цикла Зачем???
5 Crew
 
14.10.04
13:25
(3)
что стало хуже?
6 Шапокляк
 
14.10.04
13:25
Тек=СписокЗн.ПолучитьЗначение(Ин,СписокЗн); Это как понимать?

Должны в Табл попадать документы, в которых клиент входит в список?
Тогда
Процедура Выполнить()
  Док = СоздатьОбъект("Документ.СчетВходящий");
  Табл.УдалитьСтроки();
  Док.ВыбратьДокументы();                                                
  Пока Док.ПолучитьДокумент()=1 Цикл
       Если Док.Клиент В СписокЗн Тогда
  Табл.НоваяСтрока();    
............
.......

     КонецЕсли;

КонецЦикла
КонецПроцедуры
7 Генс
 
14.10.04
13:27
(4)Мне надо отобрать Документы по списку СписокЗначений в таблицуЗначений.
А как надо если не так:
Если Тек=Док.Клиент Тогда
         Продолжить;
     КонецЕсли;
8 NS
 
14.10.04
13:27
Если спис.НайтиЗначение(Док.Клиент)>0 тогда
9 Diter
 
14.10.04
13:30
Принадлежит()
10 NS
 
14.10.04
13:31
(9) Метод принадлежит - колбасит на группах...
И работает он медленней вроде (не гарантирую)
11 Diter
 
14.10.04
13:32
(7) Ты понимаешь схему работы Продолжить? Ты в этом месте обрываешь дальнейшее выполнение цикла и переходишь (как по метке)в начало цикла. Т.е. ты фактически найдя клиента, просто пропускаешь все дальнейшие дествия с ним.
12 Diter
 
14.10.04
13:33
(10) Чего он "колбасит на группах"? Ты в списке имеешь элементы а не группы. Даже если юзер по недопониманию выбрал в список группу, что мешает развернуть её поэлементно в этом списке?
13 NS
 
14.10.04
13:35
(12) Ты о чем?
14 Diter
 
14.10.04
13:39
(13) О том что ты сказал. Ято ты имеешь в виду "Колбасит на группах"?
15 NS
 
14.10.04
13:43
(14) Метод принадлежит - рассматривает входимость в группу, а найтиЗначение - нет... Я имел в виду только это...
А вообще - насчет скорости нужно тестировать - в описании по поводу Принадлежит()- что-то невнятное про поиск при неизменном списке.
16 Diter
 
14.10.04
13:55
(15) Не понял. При чём здесь группа? Я про :
Принадлежит(<Значение>)
Назначение:
Проверяет вхождение в список значений указанного значения, т.е. , является ли значение подмножеством списка значений
Возвращает число: 1 - если проверяемое значение входит в список значений; 0 - если не входит.
17 Diter
 
14.10.04
13:55
А ты про :
ПринадлежитГруппе(<?>)
Синтаксис:
ПринадлежитГруппе(<Группа>)
Назначение:
Метод проверяет, принадлежит ли указанной группе текущий элемент справочника (независимо от того, на каком нижележащем уровне он находится).
Возвращает: 1 - если элемент принадлежит указанной группе , 0 - если нет.
18 Генс
 
14.10.04
14:15
Большое Спасибо всем с методом Принадлежит(<Значение>) всё заработало.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.