Имя: Пароль:
1C
1С v8
Убрать из списка справочника элементы с нулевым остатком.
,
0 prilforreal
 
17.08.18
14:29
Доброго дня! Необходимо на форме справочника Товары добавить галочку "Скрыть отсутствующие", при изменении которой из списка будут пропадать элементы с нулевым остатком на указанном складе.
Запрос составил, поместил его в процедуру СкрытьОтсутствующие, которую вызываю из Флаг1ПриИзменении, но как этими данными заполнить табличное поле не пойму, подскажите методы решения
1 prilforreal
 
17.08.18
14:30
Текст запроса:

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТоварыОстатки.Товар,
        |    ТоварыОстатки.ОстатокОстаток
        |ИЗ
        |    РегистрНакопления.Товары.Остатки КАК ТоварыОстатки
        |ГДЕ
        |    ТоварыОстатки.Склад = &ВыбСклад
        |    И ТоварыОстатки.ОстатокОстаток > 0";
    
    Запрос.УстановитьПараметр("ВыбСклад", ВыбСклад);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
2 Buster007
 
17.08.18
14:31
с нулевым остатком и так не будет в таблице остатков
3 prilforreal
 
17.08.18
14:34
(2) Хорошо, это условие можно и убрать, но как этими данными список заполнить?
4 s03
 
17.08.18
14:37
(2) а если кроме "Остатка" есть ещё и другие ресурсы, например "Сумма", то может и будет
5 Buster007
 
17.08.18
14:39
(4) если их не выбирать, то не будет
6 Buster007
 
17.08.18
14:39
(3) динамический список?
7 prilforreal
 
17.08.18
14:43
(6) Я думал о таблице значений
8 Мимохожий Однако
 
17.08.18
14:47
Мало информации для ответа
9 s03
 
17.08.18
14:48
(7) то, что думал - уже хорошо, в (6) был вопрос про твою форму списка справочника
10 Вафель
 
17.08.18
14:48
показывай 2 разных списка
11 Вафель
 
17.08.18
14:48
иначе группы пустых не скроешь
12 prilforreal
 
17.08.18
14:48
Но делаю так:
Процедура СкрытьНеиспользуемые()

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

Получаю ошибку:
{Справочник.Товары.Форма.ФормаСписка.Форма(228)}: Ошибка при установке значения атрибута контекста (Данные)
    ЭлементыФормы.ТабличноеПоле1.Данные=ТЗ;
по причине:
Неправильный путь к данным
13 Мимохожий Однако
 
17.08.18
14:50
Прикольно. Ответь на (6) , если понимаешь о чём разговор. ))
14 prilforreal
 
17.08.18
14:54
(13) Нет, форма обычная.
15 s03
 
17.08.18
14:57
(14) Тогда см. (10). Нарисуй на форме пару закладок, на одной обычный список справочника, а на второй таблицу значений, которую будешь заполнять твоим запросом. А по твоей галке переключаться между страницами, а отображение заголовков страниц скрыть, чтобы их типа и нету
16 s03
 
17.08.18
14:58
или устанавливать  отбор для списка справочника по ссылка в (РезультатТвоегоЗапроса)
17 prilforreal
 
17.08.18
15:03
(16) Второй вариант интереснее выглядит)) Не приходилось еще программно отборы писать)
18 s03
 
17.08.18
15:08
(17) Только тут некоторые накладки могут быть, так как например группы отобразить не получится, может ещё что-то неподходящее под ваши условие будет. А так, на обычных формах, с отбором нет ничего сложного, поставь точку останова например "ПриОткрытии" и посмотри в отладчике "СправовчникСписок" (или как у тебя реквизит формы называется). Только без "ЭлементыФормы", а просто имяТвоегоРеквизита
19 prilforreal
 
17.08.18
15:17
(18) ТабличноеПоле1 называется табличная часть, то что не будут отображаться группы не есть хорошо...
Думаю может стоит завести для элементов реквизит остаток и его каждый раз при открытии справочника из данных регистра обновлять, видно его никому не будет, зато отбор будет простой и понятный...
20 Chameleon1980
 
17.08.18
15:26
...ТабличноеПоле1 называется табличная часть, то что не будут отображаться группы не есть хорошо...

Возьми еще родителя в запрос, если тебе хватит одного уровня.
Или возьми так-же всех родителей в запрос
21 echo77
 
17.08.18
16:14
Посмотрите как в УПП, УТ10 сделана обработка ПодборНоменклатуры.

Там как раз для режима остатков "скрываются" позиции без остатков
2 + 2 = 3.9999999999999999999999999999999...