Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ДинамическийСписок и СписокЗначений.

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

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

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

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.