Версия для печати темы (https://pro1c.org.ua/index.php?s=dbd4e7f85a53f5373dc17e8c96b53b37&showtopic=37539)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Структура. Отбор по заполненному значению - реально?

Автор: Inkognito 30.05.17, 8:23

Управляемые формы. БП 2.0
Необходимо из табличной части, не обращаясь на сервер (фильтр на клиенте), выполнить поиск строк, в которых заполнено поле "Документ"
Но как сделать проверку на заполненное поле в структуре?

Структура = Новый Структура; 
//вариант1: Структура.Вставить("Документ", ЗначениеЗаполнено(Документ));
//вариант2: Структура.Вставить("Документ", Документ <> Документы.РегистрацияВходящегоНалоговогоДокумента.Пустая());

Не работает. Можно конечно вызывать серверную процедуру/функцию поиска Запросом на сервере, но это на крайний случай...

Автор: TipsyKID 30.05.17, 8:35

Варианты:

1. Добавить вспомогательное поле "ДокументЗаполнен", тип булево, предусмотреть его заполнение (предполагаю на сервере).
2. В обычном цикле пройтись по табличной части и насобирать строки у которых заполнен документ.

Желательно б уточнить, для чего собираются строки (если для визуального отбора на форме, то лучше такое делать через "Условное оформление"

Автор: Inkognito 30.05.17, 8:47

TipsyKID @ Сегодня, 9:35 * ,
Делается для вывода в подвале количества существующих документов:
Всего: Х
Существуют: У
Вот переменную У и ищем. Условное оформление для этой цели и не подумал. Спасибо, попробую (хотя первый вариант мне кажется более простым в реализации).

Автор: Bernet 30.05.17, 9:12

Inkognito @ Сегодня, 9:23 * ,
если не ошибаюсь когда-то делал так:

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

Автор: logist 30.05.17, 10:26

Цитата(Bernet @ 30.05.17, 10:12) *
если не ошибаюсь когда-то делал так:

Это отбор строк для отображения, а нужен подсчет.

Как вариант это так:
СтрокиГдеДокументНеЗаполнен = Объект.ТабличнаяЧасть.НайтиСтроки(Новый Структура("Документ", ПредопределенноеЗначение("Документ.АвансовыйОтчет.ПустаяСсылка")));
КоличествоГдеУказаноДокументы = Объект.ТабличнаяЧасть.Количество() - СтрокиГдеДокументНеЗаполнен.Количество();

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua