![]() |
![]() |
![]() |
|
Работа с объектом "Отбор" | ☑ | ||
---|---|---|---|---|
0
lunjio
27.02.15
✎
12:52
|
Добрый день, подскажите люди добрые как корректно работать с объектом отбор, проблема в следующем - при добавление Поля для отбора, невозможно выбрать его реквизиты.
Код: ДоступныеПоляОтбора = Отбор.ПолучитьДоступныеПоля(); Поле = ДоступныеПоляОтбора.Добавить("ВидыКонтактнойИнформации", "ВидыКонтактнойИнформации", Новый ОписаниеТипов("СправочникСсылка.ВидыКонтактнойИнформации")); Поле.Отбор = Истина; При этом доступно только одно поле "ВидыКонтактнойИнформации", без возможности выбора реквизитов, в полях лежат пустые доступные поля, они доступны только для чтения. Программно как это организовать не нашел. Буду благодарен за подсказку. |
|||
1
D_E_S_131
27.02.15
✎
14:05
|
УстановитьДоступныеПоля() не делаешь?
|
|||
2
lunjio
27.02.15
✎
14:28
|
Делаю конечно после добавления поля. Как бы в отборе имею одно поле на выбор "ВидыКонтактнойИнформации" без возможности отбора по реквезитам.
|
|||
3
D_E_S_131
27.02.15
✎
14:41
|
Если поля у тебя получаются из настроек Построителя, то видимо там это поле было описано как без вложенных значений.
|
|||
4
Strogg
27.02.15
✎
14:44
|
Вроде на ОФ так фиг сделаешь. Буквально вчера озадачился отбором по реквизиту реквизита - че-т не вышло ничего. Запилил свой отбор.
|
|||
5
lunjio
27.02.15
✎
14:53
|
D_E_S_131 нет, поле плучаются не из настроек построителя. Не использую построитель так как он мне не нужен, мне просто нужен отбор, использую обычный объект "Отбор" т.к он есть в конфигурации. Поле мне возвращается добавлением в ДоступныеПоляОтбора, причем там есть свойство "поля", которое по идее и должно иметь доступные поля, т.е реквизиты, но оно только для чтения, а не для записи и там пустая коллекция всегда.
Strogg ясно, спасибо. Покажешь код со своим отбором ? чтобы я долго не ковырялся по конфигурации в поисках подходящего). |
|||
6
Strogg
27.02.15
✎
15:05
|
Да там ничего сложного. Навесил реквизит формы - флажок. Ну и обработчик события на него навесил...
//--- Процедура ИспользуетсяПОтделомПриИзменении(Элемент) Если Элемент.Значение = Истина тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Показание.Ссылка |ИЗ | Документ.Показание КАК Показание |ГДЕ | Показание.Счетчик.ИспользуетсяПОтделом = ИСТИНА" ; Рез = Запрос.Выполнить().Выгрузить(); МассивДокументов = Рез.ВыгрузитьКолонку("Ссылка"); СписокДокументов = Новый СписокЗначений; СписокДокументов.ЗагрузитьЗначения(МассивДокументов); ДокументСписок.Отбор.Ссылка.Использование = Истина; ДокументСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке; ДокументСписок.Отбор.Ссылка.Значение = СписокДокументов; Иначе ДокументСписок.Отбор.Ссылка.Использование = Ложь; КонецЕсли; КонецПроцедуры //--- Другого че-т ниче не придумал... |
|||
7
Defender aka LINN
27.02.15
✎
15:09
|
(5) "но оно только для чтения" - как же вы за... утомили.
Табличная часть объекта тоже только для чтения. И? |
|||
8
Ёпрст
гуру
27.02.15
✎
15:22
|
(0) проще на форму кинуть ПостроительОтчета.Отбор (заместо обычного Отбор), дальше всё просто:
ПостроительОтчета.Текст="ВЫБРАТЬ | 0 КАК Шняга |{ГДЕ | (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяССылка)).* КАК Склад, | (ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка)).* КАК Номенклатура, | (ЗНАЧЕНИЕ(Справочник.Организации.ПустаяССылка)).* КАК Организация, | (ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяССылка)).* КАК Контрагент}"; Отбор = ПостроительОтчета.Отбор; Отбор.Добавить("Организация", , "Организация"); Отбор.Добавить("Контрагент", , "Контрагент"); Отбор.Добавить("Склад", , "Склад"); Отбор.Добавить("Номенклатура", , "Номенклатура"); ДоступныеПоляОтбора = Отбор.ПолучитьДоступныеПоля(); Для каждого Поле ИЗ ДоступныеПоляОтбора Цикл Поле.Отбор = Истина; КонецЦикла; |
|||
9
Ёпрст
гуру
27.02.15
✎
15:22
|
Будет тебе в отборе поля со всеми реквизитами..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |