Имя: Пароль:
1C
1С v8
Отбор в списке документов
0 sol
 
11.07.12
13:22
Платформа 8.2.14.540.
База УПП рел. 1.3.24.2, SQL-серверная, нетиповая.

Уважаемые форумчане!

Можно ли делать отбор в списке документов по полю, которое не является реквизитом документа?

В документе есть реквизит типа справочника (к сожалению, не строка) и нужно сделать фильтрацию по виду отбора «Содержит». Для этого на тестовой базе я сделал дополнительное поле в форме списка, которое содержит наименование элемента справочника и не является реквизитом. Однако, по этому полю нельзя проводить фильтрацию. А так не хочется создавать новый реквизит в документе.
1 shuhard
 
11.07.12
13:25
(0) в 10500 раз предлагаем отбор по списку, сформированного запросом с любым отбором
2 sol
 
11.07.12
13:27
(1) Вы не поняли меня. Под отбором я подразумевал пользовательский значок "Отбор и сортировка".
3 sanja26
 
11.07.12
13:28
индекируемре поле..
4 sol
 
11.07.12
13:31
(3) Каким образом?
5 le_
 
11.07.12
13:32
В управляемых формах можно сделать произвольный запрос для списка документов, вытащить это поле и отбор по нему будет устанавливаться обычным образом (СОДЕРЖИТ есть для текста).
6 gosn1ck
 
11.07.12
13:32
(4) там отбор только по индексируемым реквизитам документа. чего не понятного?
7 sanja26
 
11.07.12
13:34
запросом найди список нужных элементов справочника, а потом подставляй в отбор этот список
8 sanja26
 
11.07.12
13:35
видСравнения.ВСписке у тебя ведь есть наверно
9 sol
 
11.07.12
13:36
(7) Это можно. Но только это делается отдельной обработкой. А хочется значком "Отбор и сортировка".
10 sanja26
 
11.07.12
13:36
Процедура ПлательщикОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
   
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Контрагенты.Ссылка
   |ИЗ
   |    Справочник.Контрагенты КАК Контрагенты
   |ГДЕ
   |    Контрагенты.Наименование ПОДОБНО &Наименование";
   
   Запрос.УстановитьПараметр("Наименование", "%" + Текст + "%");
   
   Результат = Запрос.Выполнить();
   
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   
   Значение = Новый СписокЗначений;
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Значение.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
   КонецЦикла;    
   Элемент.СписокВыбора = Значение;
   СтандартнаяОбработка = Ложь;
   
   
КонецПроцедуры
11 sanja26
 
11.07.12
13:38
(9) тогда создавай реквизит наименование и индексируй его
12 sanja26
 
11.07.12
13:39
+(10) дальше устанавливаешь сам отбор в списке
13 sol
 
11.07.12
13:42
(10) Спасибо. Но в свойствах этого поля - элемент управление - пусто. К нему нельзя подцепить функцию по СОБЫТИЮ.

Задается значение этого поля так:

Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
       ОформлениеСтроки.Ячейки.Площадка2.Значение = ДанныеСтроки.Площадка.Наименование;
       ОформлениеСтроки.Ячейки.Площадка2.Текст = ДанныеСтроки.Площадка.Наименование;
КонецПроцедуры


(11) Хочется без добавления реквизита в документ.
14 sol
 
11.07.12
13:45
(13)+ Просто хочу удостовериться, что без добавления реквизита - такое невозможно.
15 sol
 
11.07.12
13:49
(11) Почему не хочу создавать новый реквизит? Потому что для заполнения этого реквизита нужно пересохранить все документы.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан