Имя: Пароль:
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) Почему не хочу создавать новый реквизит? Потому что для заполнения этого реквизита нужно пересохранить все документы.