Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: добавить фильтр в многострочную часть
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
4andriy
Есть многострочная часть
Там размещенны реквизиты справочника

хотелось бы в многострочной части из справочника показывать только те строки где соблюдены условия
например:

Если Колличество>1
andrew76
4andriy @ Вчера, 21:41 необходимо зарегистрироваться для просмотра ссылки ,

ИспользоватьСписокЭлементов(<СписокЗначений>)
Назначение:
Реализует фильтрацию элементов справочника, используя нединамический фильтр.
Параметры:
<СписокЗначений> - необязательный параметр. Значение типа - ''СписокЗначений'' - должен представлять собой список элементов справочника, выбранных для просмотра. Если это значение пустое, то фильтр отключается.
Замечание:
Метод доступен только в контексте Модуля формы списка справочника и относится ко всему текущему справочнику.
4andriy
andrew76 @ 14.12.19, 7:27 необходимо зарегистрироваться для просмотра ссылки ,

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


У контрагента ИНН=0, но при нажатии на кнопку список полностью очищается и стает пустой


 ! 

необходимо зарегистрироваться для просмотра ссылки: 9
 
andrew76
4andriy @ Сегодня, 18:00 необходимо зарегистрироваться для просмотра ссылки ,

Вообще-то этот код лучше записать в процедуру ПриОткрытии() формы,
где расположена табличная часть справочника.
Реквизит ИНН какого типа ? Числовой или строковый ?
Количество элементов в списке проверяли? Может список значений пуст ?
Сколько уровней в справочнике ?

Примерно такой код:

Процедура Показать()
СписокЭлементов = создатьОбъект("СписокЗначений");
Контрагенты=СоздатьОбъект("Справочники.Контрагенты");
Контрагенты.ВыбратьЭлементы();

Пока Контрагенты.ПолучитьЭлемент()=1 Цикл
   Если Контрагенты.ИНН=0 Тогда
          СписокЭлементов.ДобавитьЗначение(Контрагенты.ТекущийЭлемент());
   КонецЕсли;
КонецЦикла;

ИспользоватьСписокЭлементов(СписокЭлементов);
КонецПроцедуры



У меня вышеуказанный код отработал правильно.Справочник в моем случае был одноуровневый.
4andriy
andrew76 @ Сегодня, 17:24 необходимо зарегистрироваться для просмотра ссылки ,

сделал так:

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


ИНН - строка
в списке елементы есть. при открытии список контрагентов у которых 0 в инн, после нажатия показать они пропадают все
1 уровень

тоесть открываю список в котором контрагенты с 0 и другое значение
после нажатия кнопки почему-то пропадает все
volodya1122
4andriy @ Сегодня, 18:28 необходимо зарегистрироваться для просмотра ссылки ,
Так если у Вас ИНН точно строка то там скорее пусто а не ноль?
Если Контрагенты.ИНН="" Тогда
4andriy
volodya1122 @ Сегодня, 21:15 необходимо зарегистрироваться для просмотра ссылки ,
я специально прописывал 0
если делаю "" то все-равно пропадают все значения из таблицы
andrew76
Странно как-то фильтр работает.А если ИНН временно в числовой формат перевести (ради эксперимента)?
4andriy
andrew76 @ Сегодня, 3:35 необходимо зарегистрироваться для просмотра ссылки ,
в числовом работает, строковую не находит

но, почему-то появились какие-то значки каталога со знаком вопроса в начале выборки




 ! 

необходимо зарегистрироваться для просмотра ссылки: 8
 
volodya1122
4andriy @ Сегодня, 12:14 необходимо зарегистрироваться для просмотра ссылки ,
Попробуйте такое условие
Если ПустаяСтрока(Контрагенты.ИНН)=1 Тогда

Кажется для строковой переменной значение заполняется прбелами до полной длинны. Поэтому у вас в ИНН не "" или "0" а всегда заполнено так " " или "0 " (в смысле - например 12 пробелов).
4andriy
volodya1122 @ Сегодня, 13:33 необходимо зарегистрироваться для просмотра ссылки ,
тоже об этом думал

а кто знает что за значения с знаками вопроса?
volodya1122
Цитата(4andriy @ 17.12.19, 13:49) необходимо зарегистрироваться для просмотра ссылки
а кто знает что за значения с знаками вопроса?

Перед ИспользоватьСписокЕлементов напишите
ИерархическийСписок(0,1);
4andriy
volodya1122 @ Вчера, 15:08 необходимо зарегистрироваться для просмотра ссылки ,
все работает, только пропадает сортировка, если перейти в действие - сортировка то тоже не активно.
пробовал:
Сортировка(Контрагенты.ИНН);


В ошибке пишет что "Неверное имя реквизита!"
volodya1122
Цитата(4andriy @ 18.12.19, 20:31) необходимо зарегистрироваться для просмотра ссылки
В ошибке пишет что "Неверное имя реквизита!"

1, Нужно писать так: Сортировка("ИНН");
2. Для реквизита ИНН в свойствах нужно поставить отметку "Сортировка"
3. Когда пишите ИспользоватьСписокЭлементов то сортировка работать небудет.
4. Попробуйте создать список в нужной последовательности. Используйте метод ПорядокРеквизита (до ВыбратьЭлементы)
4andriy
volodya1122 @ Сегодня, 10:54 необходимо зарегистрироваться для просмотра ссылки ,
1. не пошло
2. включил
3. понятно
4. порядокреквизита("ИНН") поставил до выбрать елемент и результат 0.

может програмно сделать сорировку?
4andriy
4andriy @ Сегодня, 15:24 необходимо зарегистрироваться для просмотра ссылки ,
Сортировка("ИНН");

онибок не дает, но и не сортирует... странно

4andriy @ Сегодня, 17:07 необходимо зарегистрироваться для просмотра ссылки ,
ПорядокРеквизита("ИНН");
Контрагенты.ВыбратьЭлементы();
volodya1122
Цитата(4andriy @ 19.12.19, 16:16) необходимо зарегистрироваться для просмотра ссылки
ПорядокРеквизита("ИНН");
Контрагенты.ВыбратьЭлементы();

Думал что догадаетесь сами. Нужно писать так:
Контрагенты.ПорядокРеквизита("ИНН");
Контрагенты.ВыбратьЭлементы();


И еще я же написал. 1 в связке с 3 работать небудет
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.