Имя: Пароль:
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 сделана обработка ПодборНоменклатуры.

Там как раз для режима остатков "скрываются" позиции без остатков
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший