Имя: Пароль:
   
1C
1С v8
ДинамическийСписок и СписокЗначений.
0 LexXx_Lion
 
22.09.11
13:36
Как сделать чтобы проверялся весь список значений,а не только первое значение?
В управляемой форме есть основной реквизит Список, у списка произвольный запрос

ВЫБРАТЬ
СправочникДорнвалы.Наименование,
ДорнвалыНаСкладахОстатки.НомерПП,
ДорнвалыНаСкладахОстатки.Заказ
ИЗ
РегистрНакопления.ДорнвалыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ДорнвалыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Дорнвалы КАК СправочникДорнвалы
ПО ДорнвалыНаСкладахОстатки.Дорнвал = СправочникДорнвалы.Ссылка
ГДЕ
(НЕ ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал))

&СписокДорнвал - Это список значений
Проблема в том что условие "ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал)" берет из этого списка значения только первое значение и сравнивает с ним. Я проверял запрос в консоле он работает правильно.
Если данное условие "(НЕ ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал))" заменить
на "(НЕ ДорнвалыНаСкладахОстатки.Дорнвал = &СписокДорнвал)" то роботает идентично, результат тот же, берется только первое значение из списказначений, а остальные не используются

Как сделать так чтобы в произвольном запросе проверять находится для данный элемент в СпискеЗначений или нет?
1 LexXx_Lion
 
22.09.11
13:38
платформа 8.2
2 H A D G E H O G s
 
22.09.11
13:40
Пилят, когда же вы научитесь создавать прямые темы.
Так, чтобы их понимали не только вы сами.
3 H A D G E H O G s
 
22.09.11
13:41
Вот, учись как надо
v8: Сериализация СпискаЗначений В XDTO. Где я не прав?

Тема должна быть оформлена четко, по пунктам.
В примере - идеальная тема - там автор САМ ответил на свой вопрос.
4 SviFt
 
22.09.11
13:44
(0) что такое Дорнвал?
5 guitar_player
 
22.09.11
13:45
(3) патсталом
6 Darky
 
22.09.11
13:46
(1) Покажи как &СписокДорнвал получаешь
И это...если это весь текст запроса, а не выдранный кусок, то соединение со справочником тут вообще не нужно
7 LexXx_Lion
 
22.09.11
13:54
(6)В документе ПеремещениеДорнвалов процедура открывает ФормуВыбора справочника Дорнвалов

&НаКлиенте
Процедура ДорнвалыДорнвалНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;

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

Затем в ФормеВыбора справочника дорнвалов заполняются параметры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Список.Параметры.УстановитьЗначениеПараметра("Период", Параметры.Период);
   Список.Параметры.УстановитьЗначениеПараметра("Склад", Параметры.Склад);    
   Список.Параметры.УстановитьЗначениеПараметра("СписокДорнвал", Параметры.СписокДорнвал);
КонецПроцедуры
8 Darky
 
22.09.11
14:08
Т.е. если ты передашь пустой СписокДорнвал, то отобразятся все элементы, которые есть на остатке?
Количество элементов в списке точно не 1?
9 LexXx_Lion
 
22.09.11
14:14
Спискок значений формируется корректно. Но в самом запросе работает не правильно, не знаю почему. Берется только первый элемент и с ним сравнивается.
можно написать запрос немного по другому но эффект один и тот же.

ВЫБРАТЬ
   СправочникДорнвалы.Наименование,
   ДорнвалыНаСкладахОстатки.НомерПП,
   ДорнвалыНаСкладахОстатки.Заказ
ИЗ
   РегистрНакопления.ДорнвалыНаСкладах.Остатки(
           &Период,
           Склад = &Склад
               И (НЕ Дорнвал В (&СписокДорнвал))) КАК ДорнвалыНаСкладахОстатки
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Дорнвалы КАК СправочникДорнвалы
       ПО ДорнвалыНаСкладахОстатки.Дорнвал = СправочникДорнвалы.Ссылка
10 LexXx_Lion
 
22.09.11
14:18
(8)Да. Если передать пустой СписокЗначений то отобразятся все элементы которые в остатке. В списке точно не 1 элемент, проверял по точке останова. Могу выложить скрин.
11 LexXx_Lion
 
22.09.11
14:52
12 Darky
 
22.09.11
14:57
Попробуй передавать массив вместо списка значений
13 LexXx_Lion
 
22.09.11
15:02
Хорошо. Попробую. Завтра отпишусь, что получилось.
14 LexXx_Lion
 
23.09.11
08:19
Передал массив, эффект как будто массив пустой, вообще не воспринимает, по точке останова смотрел массив не пустой с нормальными значениями. может я не правильно заполнил массив?

   ДорнвалыСЗ = Новый Массив;
   //ДорнвалыСЗ = Новый СписокЗначений;
   //Обходим все позиции табличной части Дорнвалы
   Для Каждого СтрТЧДорнвалы Из ЭтаФорма.Объект.Дорнвалы Цикл        
       //Проверяем, чтобы в список значений не попала пустая строка
       Если Не СтрТЧДорнвалы.Дорнвал.Пустая() Тогда                                                
           ДорнвалыСЗ.Добавить(СтрТЧДорнвалы.Дорнвал);            
       КонецЕсли;                                            
   КонецЦикла;
15 LexXx_Lion
 
23.09.11
09:08
Извиняюсь. Все нормально заработало. Всем спасибо.