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

Отбор на ТабличноеПоле (Обычная форма)

Отбор на ТабличноеПоле (Обычная форма)
Я
   Lin
 
25.05.20 - 21:19
Добрый вечер! Подскажите пожалуйста, как установить отбор на табличное поле с типом РегистрСведенийСписок в обычной форме??
Есть список регистра сведений с полями "Аналог" и "Номенклатура",  добавлено еще две колонки "Артикул" и "Остаток".
И мне надо ограничить показ строк, убрать строки с номенклатурой у которой нет остатков.
Добавленные колонки заполняются по результатам запроса.
   RomanYS
 
1 - 25.05.20 - 22:03
(0) В ОФ нельзя фильтровать по колонке без данных. Самый простой вариант - УФ и динсписок
   Lin
 
2 - 25.05.20 - 22:23
(1) А можно поставить отбор на результат запроса, который равен 0?
у меня есть еще на форме табличное поле списка номенклатуры, и при выборе строки, в табличном поле с аналогами должна меняться информация.
Я так попробовала, но при выборе другой номенклатуры табличное поле пустое.

        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        Пока РезультатЗапроса.Следующий() Цикл
            ДанныеАналог = Соответствие.Получить(РезультатЗапроса.Аналог);
            Если ДанныеАналог <> Неопределено Тогда
                ДанныеАналог.Ячейки.Артикул.Значение = РезультатЗапроса.Артикул;
                ДанныеАналог.Ячейки.Остаток.Значение = РезультатЗапроса.КоличествоОстаток;    
            КонецЕсли;
                  ОтборОстатка = ЭлементыФормы.ТабличноеПолеАналоги.Значение;
            ОтборОстатка.Отбор.Аналог.Установить(РезультатЗапроса.Аналог);
        КонецЦикла;
   RomanYS
 
3 - 25.05.20 - 22:32
(2) Можно сделать отбор на вхождение в список. Но это в любом случае костыль
   Lin
 
4 - 25.05.20 - 23:11
(3) Подскажите как? мне пока и костыль сойдет, может позже что лучше придумаю...
   Ёпрст
 
5 - 25.05.20 - 23:17
(4) получаешь значения измерений, по ним устанавливаешь отбор.. усё
   Lin
 
6 - 26.05.20 - 23:34
(5) (4) немного не понимаю как ставить отбор по результатам из списка значений.... подскажите как это сделать?
И будет ли это работать если нужно вывести больше одного значения?

Процедура ТабличноеПолеАналогиПриПолученииДанных(Элемент, ОформленияСтрок)
        Соответствие = Новый Соответствие;
        АналогМассив = Новый Массив;
        Для каждого Стр Из ОформленияСтрок Цикл
        
            АналогМассив.Добавить(Стр.ДанныеСтроки.Аналог);
            Соответствие.Вставить(Стр.ДанныеСтроки.Аналог, Стр);
                    
        КонецЦикла;
        
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    спрНоменклатура.Ссылка,
                       |    Аналоги.Аналог,
                       |    Аналоги.Аналог.Артикул КАК Артикул,
                       |    Остатки.КоличествоОстаток
                       |ИЗ
                       |    РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК Остатки
                       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Аналоги КАК Аналоги
                       |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК спрНоменклатура
                       |            ПО Аналоги.Номенклатура = спрНоменклатура.Ссылка
                       |        ПО Аналоги.Аналог = Остатки.Номенклатура
                       |ГДЕ
                       |    спрНоменклатура.Ссылка = &Ссылка" ;
        
        
        Запрос.УстановитьПараметр("Ссылка", ЭлементыФормы.СправочникСписок.ТекущаяСтрока.Ссылка);
        
          РезультатЗапроса = Запрос.Выполнить();
        
        МассивЗнач = Новый Массив;
        Список = Новый СписокЗначений;
        ТЗО = РезультатЗапроса.Выгрузить();
        
        МассивЗнач = ТЗО.ВыгрузитьКолонку("КоличествоОстаток");
        Список.ЗагрузитьЗначения(МассивЗнач);
                        
        //ОтборОстатка = ЭлементыФормы.ТабличноеПолеАналоги.Значение;

        //ОтборОстатка.Отбор.Аналог.Установить(МассивЗнач);

                    
    РезультатЗапроса = Запрос.Выполнить().Выбрать();    
        Пока РезультатЗапроса.Следующий() Цикл         
             
            ДанныеАналог = Соответствие.Получить(РезультатЗапроса.Аналог);
            Если ДанныеАналог <> Неопределено Тогда
                ДанныеАналог.Ячейки.Артикул.Значение = РезультатЗапроса.Артикул;
                ДанныеАналог.Ячейки.Остаток.Значение = РезультатЗапроса.КоличествоОстаток;
            КонецЕсли;
        КонецЦикла;
    КонецПроцедуры
   Lin
 
7 - 26.05.20 - 23:52
(6) немного не так...
Добавила таблицу значений, и в нее передаю ссылку номенклатуры из запроса...
Подскажите как правильно установить отбор полученной ссылки из массива на колонку "Номенклатура" в списке регистра??
      МассивЗнач = Новый Массив;
      Список = Новый СписокЗначений;
      ТЗО = РезультатЗапроса.Выгрузить();
         
                        РезультатЗапроса = Запрос.Выполнить().Выбрать();   
         Пока РезультатЗапроса.Следующий() Цикл
         
      МассивЗнач = ТЗО.ВыгрузитьКолонку("Ссылка");
      Список.ЗагрузитьЗначения(МассивЗнач);
      
     и Дальше это передать на обработку результата запроса
   Lin
 
8 - 27.05.20 - 01:03
(5) спасибо, сделала

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