Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ПостроительОтчета: Отбор: ПолеНастройки: ограничить выбор списком - возможно ли?

ПостроительОтчета: Отбор: ПолеНастройки: ограничить выбор списком - возможно ли?
Я
   серый КТУЛХУ
 
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
в смысле - да, в ПостроительОтчета.Отбор
   Kassern
 
4 - 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
костыли короче все равно. нет чтобы можно было средствами платформы прямо в отборе указать для ПолеНастройки список выбора доступных значений...
   TormozIT
 
11 - 06.10.21 - 00:32
Отбор (Filter)
УстановитьДоступныеПоля (SetAvailableFields)
Синтаксис:
УстановитьДоступныеПоля(<Поля>)
Параметры:
<Поля> (обязательный)
Тип: ПоляНастройки.
Коллекция полей, доступных для отбора.
Описание:
Устанавливает коллекцию полей, доступных для отбора.
Внимание! Метод не доступен для отбора динамических списков (свойство Отбор объектов СправочникСписок.<Имя справочника>, ДокументСписок.<Имя документа> и т.д.).
   TormozIT
 
12 - 06.10.21 - 00:33
(11) Мимо. Казалось там есть метод УстановитьДоступныеЗначения, но нет.
   TormozIT
 
13 - 06.10.21 - 00:36
Если ситуация позволяет, можно попробовать сделать отчет на компоновке данных. Там точно есть УстановитьДоступныеЗначения

ПолеНабораДанныхСхемыКомпоновкиДанных (DataCompositionSchemaDataSetField)
УстановитьДоступныеЗначения (SetAvailableValues)
Синтаксис:
УстановитьДоступныеЗначения(<ДоступныеЗначения>)
Параметры:
<ДоступныеЗначения> (необязательный)
Тип: СписокЗначений.
Список доступных значений поля.
Если параметр не указан, у поля не будет доступных значений.
Описание:
Устанавливает доступные значения поля.
   серый КТУЛХУ
 
14 - 06.10.21 - 03:19
(13): спасибо, да. я люблю скд - даже не зная ее на уровне аса и то и дело гугля (например как в одну колонку выводить в зависимости от условия то один ресурс то другой). скд - инструмент не простой но мощный, универсальный и настраиваемый.
там еще есть ПостроительОтчета.ДоступныеПоля.<ИмяПоляНастройки>.СписокЗначений, думал - оно, а оно - не оно да еще и "только чтение". обломался.
   TormozIT
 
15 - 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) никак . Он же подставляет, если сам что-то находит в реквизитах, для которых поиск включен (код/наименование).
Тут только стандартнаяобработка = ложь и показ своего списка..

Список тем форума
 
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.