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