Имя: Пароль:
1C
1С v8
ПостроительОтчета: Отбор: ПолеНастройки: ограничить выбор списком - возможно ли?
0 серый КТУЛХУ
 
05.10.21
17:02
всмысле программно. и если да - то как?
допустим в ЗаполнитьНачальныеНастройки - инициализирован текст запроса:
"ВЫБРАТЬ
|    ЗаказДокумент.Контрагент,
|    ЗаказДокумент.Ссылка КАК Докум,
|    ""Заказ"" КАК ДокВид,
|...
|ИЗ Документ.ЗаказПоставщику.Товары КАК ЗаказТовары
|...
|{ГДЕ
|    ЗаказДокумент.Контрагент.*,
|    (""Заказ"") КАК ДокВид}
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
|    УстЦенДокумент.Контрагент,
|    УстЦенДокумент.Ссылка,
|    ""Уст.Цен"" КАК ДокВид,
|...
|ИЗ Документ.УстановкаЦенНоменклатурыКонтрагентов КАК УстЦенДокумент
|...
|{ГДЕ
|    ЗаказДокумент.Контрагент.*,
|    (""Уст.Цен"") КАК ДокВид}
|...
- и ДокВид появляется в доступных полях отбора, но значение отбора можно только ручками вбить.
а как бы сделать так чтобы его значения списком доступных строковых значений ограничить?
1 Ёпрст
 
05.10.21
17:09
(0) ну а сами настройки для отбора построителя, у тебя где хоть ? В табличном поле на форме с источником ПостроительОтчета.отбор ? Или.. ?
2 серый КТУЛХУ
 
05.10.21
17:19
(1): в реквизите "ПостроительОтчета" типа (как неожиданно) ПостроительОтчета
3 серый КТУЛХУ
 
05.10.21
17:21
в смысле - да, в ПостроительОтчета.Отбор
4 Kassern
 
05.10.21
17:21
(0) а что если сделать свое поле с блекджеком и статичным списком? А потом из выбора программно заполнять построитель как надо.
5 серый КТУЛХУ
 
05.10.21
17:26
(4): уже. даже красивше - чекбоксы. в убирающейся панели и без отборов в построителе - я в нем по чекбоксам только текст запроса подменял...
но юзера продвинутые - на автомате идут в расширенные настройки - и вопят про отбор по виду документа которого там нету.
добавил в отборі (см. текст запроса). НО! там только ввод ручками! не та буква - и алё, отчет пустой. опять истерика - дайте "нормально" из списка выбирать.
(да мне и самому интересно стало - не только ведь єтого моего случая касается)
6 Ёпрст
 
05.10.21
17:44
(3) тогда подменяй че надо в событии НачалоВыбора у Значение
7 серый КТУЛХУ
 
05.10.21
21:58
(6): где подменять?
там форма настроек со стандартной панелью настроек построителя отчета. для значения параметра нет кнопки выбора - только ввод строки. ну, допустим, если отбор "равно" или "не равно" - могу перезватить в ПередНачаломИзменения(Элемент, Отказ), и по Если Элемент.Данные = "ПостроительОтчета.Отбор" И Элемент.ТекущаяКолонка.Данные = "Значение" И Элемент.ТекущаяСтрока.ПутьКДанным = "ДокВид" Тогда:
  Если Элемент.ТекущаяСтрока.ВидСравнения = ВидСравнения.Равно ИЛИ Элемент.ТекущаяСтрока.ВидСравнения = ВидСравнения.НеРавно Тогда
    сделать отказ, составить список, заставить выбрать из него - и выбранное прямо засунуть в Элемент.ТекущиеДанные.Значение
но это годится только для "равно" (или "не равно"), а остальные - ну ладно, вхождения всякие подобно - пусть редактируют... а если вид сравнения "в списке" - то там снова каждое значение руцями вбивать. а если бы можно было кроме этого еще из списка? куда в свойства чего в ПостроительОтчета.Отбор. этот список всунуть?
8 Ёпрст
 
05.10.21
23:21
(7) кину пример позжее..у нас например, если выбрано в списке, то открывается своя форма подбора, с возможностью загрузки значений из мокселя.
9 серый КТУЛХУ
 
06.10.21
00:15
(8): о, мысль! спасибо, брат Ёпрст.
я точно! "в списке" - я  так же составлю список всех возможных видов, помечу программно в нем сразу те значения которые уже выбраны - и заставлю юзверя (до/пере)отметить (те которые должны попасть в список отбора). после чего помеченные - соберу в Элемент.ТекущиеДанные.Значение.
10 серый КТУЛХУ
 
06.10.21
00:17
костыли короче все равно. нет чтобы можно было средствами платформы прямо в отборе указать для ПолеНастройки список выбора доступных значений...
11 TormozIT
 
гуру
06.10.21
00:32
Отбор (Filter)
УстановитьДоступныеПоля (SetAvailableFields)
Синтаксис:
УстановитьДоступныеПоля(<Поля>)
Параметры:
<Поля> (обязательный)
Тип: ПоляНастройки.
Коллекция полей, доступных для отбора.
Описание:
Устанавливает коллекцию полей, доступных для отбора.
Внимание! Метод не доступен для отбора динамических списков (свойство Отбор объектов СправочникСписок.<Имя справочника>, ДокументСписок.<Имя документа> и т.д.).
12 TormozIT
 
гуру
06.10.21
00:33
(11) Мимо. Казалось там есть метод УстановитьДоступныеЗначения, но нет.
13 TormozIT
 
гуру
06.10.21
00:36
Если ситуация позволяет, можно попробовать сделать отчет на компоновке данных. Там точно есть УстановитьДоступныеЗначения

ПолеНабораДанныхСхемыКомпоновкиДанных (DataCompositionSchemaDataSetField)
УстановитьДоступныеЗначения (SetAvailableValues)
Синтаксис:
УстановитьДоступныеЗначения(<ДоступныеЗначения>)
Параметры:
<ДоступныеЗначения> (необязательный)
Тип: СписокЗначений.
Список доступных значений поля.
Если параметр не указан, у поля не будет доступных значений.
Описание:
Устанавливает доступные значения поля.
14 серый КТУЛХУ
 
06.10.21
03:19
(13): спасибо, да. я люблю скд - даже не зная ее на уровне аса и то и дело гугля (например как в одну колонку выводить в зависимости от условия то один ресурс то другой). скд - инструмент не простой но мощный, универсальный и настраиваемый.
там еще есть ПостроительОтчета.ДоступныеПоля.<ИмяПоляНастройки>.СписокЗначений, думал - оно, а оно - не оно да еще и "только чтение". обломался.
15 TormozIT
 
гуру
06.10.21
07:58
(14) Да. СписокЗначений - то, что надо. Только чтение это с точки зрения присвоения другого списка. А в существующий добавляй, сколько угодно.
16 Ёпрст
 
06.10.21
09:49
17 серый КТУЛХУ
 
06.10.21
12:22
(15): ах, если бы все так просто было. он имеет тип Неопределено - и добавление, соответственно, невозможно тоже.
18 серый КТУЛХУ
 
06.10.21
12:46
(16): ага, спасибо!
у тебя только для сравнения "всписке" - с блокировкой изменения вида сравнения.
спасибо, я так и слепил на костылях, только вид сравнения не блокировал, список для отметок выкатывал так же как ты, только с проверкой сравнения "всписке" и "невсписке".
еще для сравнении "равно" и "неравно" - засунул в обработчик (события отбора) ОтборПередНачаломИзменения(): отказ и выбор из списка с установкой Элемент.ТекущиеДанные.Значение = ВыбранныйЭлемент.Значение; но обнаружил что для новых строк это событие не работает - пришлось продублировать такой же алгоритм в обработчике (поля отбора "Значение") ОтборЗначениеАвтоПодборТекста - там уже можно тупо "в лоб" Элемент.РежимВыбораИзСписка = Истина с (пере)заполнением Элемент.СписокВыбора и выбором-установкой.
я же говорю - костыли. ловить везде где нужно ограничить перечень допустимых значений - и вставлять костыльный код.
спасибо всем.
19 серый КТУЛХУ
 
06.10.21
12:50
(18)+: кстати, в ОтборЗначениеАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка) - заполнил Элемент.СписокВыбора, но так и не получилось сделать так, чтобы по тексту стандартно из этого списка выбора подставляло найденное по введенному тексту значение (пришлось програмно его выкатывать). может кто знает как в этом обработчике составить список выбора и как-то включить такую возможность?
20 Ёпрст
 
06.10.21
13:59
(19) никак . Он же подставляет, если сам что-то находит в реквизитах, для которых поиск включен (код/наименование).
Тут только стандартнаяобработка = ложь и показ своего списка..