Ограничить список выбора дополнительных сведений.
Здравствуйте.
В БП 3.0 к документу "Реализация товаров и услуг" добавлено дополнительное сведение "Наше Сведение". Затем написан отчет на СКД
&Свойство = Наше Сведение.
Поле "Наше Сведение" включено в пользовательские настройки и показывается в шапке отчета.
Каким образом можно при выборе значений поля "Наше Сведение" ограничить список или свойству, или по наименованию свойства? На данный момент в списке выбора показываются все значения свойств для всех документов.
Пробовал через "Параметры редактирования" у поля, но ничего не получилось.
В БП 3.0 к документу "Реализация товаров и услуг" добавлено дополнительное сведение "Наше Сведение". Затем написан отчет на СКД
ВЫБРАТЬ
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
РеализацияТоваровУслугТовары.Количество КАК Количество,
РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
ЕСТЬNULL(ДополнительныеСведения.Значение, ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка)) КАК НашеСведение,
ДополнительныеСведения.Свойство КАК Свойство
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
ПО РеализацияТоваровУслугТовары.Ссылка = ДополнительныеСведения.Объект
И (&Свойство = ДополнительныеСведения.Свойство)
И (РеализацияТоваровУслугТовары.Ссылка.Дата >= НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ))
И (РеализацияТоваровУслугТовары.Ссылка.Дата <= КОНЕЦПЕРИОДА(&Дата, ДЕНЬ)) Показать&Свойство = Наше Сведение.
Поле "Наше Сведение" включено в пользовательские настройки и показывается в шапке отчета.
Каким образом можно при выборе значений поля "Наше Сведение" ограничить список или свойству, или по наименованию свойства? На данный момент в списке выбора показываются все значения свойств для всех документов.
Пробовал через "Параметры редактирования" у поля, но ничего не получилось.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
Параметры редактирования. Связи параметров выбора. Там просто параметру нужно писать не просто Владелец, а Отбор.Владелец
Пример во вложении
Пример во вложении
Прикрепленные файлы:
ВнешнийОтчет1.erf
(20)
В типовых это реализовано на уровне всех отчетов, так что можно сделать запрос чисто по реализациям. Затем в предприятии настроить вывод свойства и добавить отбор по нему в быстрые настройки. Затем в форме настройки варианта - все действия - сохранить настройки в файл. Загрузить настройки в конфигураторе. Будет крест на полях - якобы они не найдены, но в режиме предприятия все ок.
Единственный минус - наименования свойств будут полными - например, Характеристика номенклатуры.Диагональ (Справочник "Характеристики номенклатуры" (Общие))
В типовых это реализовано на уровне всех отчетов, так что можно сделать запрос чисто по реализациям. Затем в предприятии настроить вывод свойства и добавить отбор по нему в быстрые настройки. Затем в форме настройки варианта - все действия - сохранить настройки в файл. Загрузить настройки в конфигураторе. Будет крест на полях - якобы они не найдены, но в режиме предприятия все ок.
Единственный минус - наименования свойств будут полными - например, Характеристика номенклатуры.Диагональ (Справочник "Характеристики номенклатуры" (Общие))
(45) Дело в том, что при подборе открывается другая форма, и ей пофиг на доступные значения.
(46) Значит через параметры выкручиваться.
криво конечно... через строки... параметры отбираются. Сам запрос проверить не могу.
(46) Значит через параметры выкручиваться.
криво конечно... через строки... параметры отбираются. Сам запрос проверить не могу.
Прикрепленные файлы:
Заявка.erf
(47) На самом деле типовая форма отчета не такая тупая и она все параметры учитывает, и установленные значения, и параметры выбора, и на основании этого подбирает формы для выбора.
Я затолкал список в схему и переинициализировал компоновщик. Теперь список не слетает при изменении настроек:
Я затолкал список в схему и переинициализировал компоновщик. Теперь список не слетает при изменении настроек:
СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Сведение").УстановитьДоступныеЗначения(СЗ);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
(48) в итоге все скомбинировал. Добавил Параметр, установил его значение.
В параметрах редактирования поля "Сведение" указал связи параметров выбора "Отбор.Владелец: ПараметрыДанных.ПВХ".
Всем спасибо за помощь.
ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Сведение (Реализация (акты, накладные))");
СхемаКомпоновкиДанных.Параметры["ПВХ"].Значение = ПВХ;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));В параметрах редактирования поля "Сведение" указал связи параметров выбора "Отбор.Владелец: ПараметрыДанных.ПВХ".
Всем спасибо за помощь.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) В СКД ограничить выбираемые значения параметра можно на вкладке Параметры в поле Доступные значения. Также доступно и программно:
ДоступныйПараметрКомпоновкиДанных.ДоступныеЗначения (DataCompositionAvailableParameter.AvailableValues)
ДоступныйПараметрКомпоновкиДанных (DataCompositionAvailableParameter)
ДоступныеЗначения (AvailableValues)
Использование:
Чтение и запись.
Описание:
Тип: СписокЗначений; Неопределено.
Содержит список значений, которые может принимать значение параметра.
Неопределено - значения поля неограничены.
ДоступныйПараметрКомпоновкиДанных (DataCompositionAvailableParameter)
ДоступныеЗначения (AvailableValues)
Использование:
Чтение и запись.
Описание:
Тип: СписокЗначений; Неопределено.
Содержит список значений, которые может принимать значение параметра.
Неопределено - значения поля неограничены.
(14) Прямо в модуле объекта, например:
В СКД на вкладке параметры нужно указать этому параметру в доступных значениях хотя бы пустую ссылку, чтоб ДоступныеЗначения стало типом СписокЗначений.
Массив = Новый Массив;
Массив.Добавить(ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Нужное сведение"));
КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(Новый ПараметрКомпоновкиДанных("Свойство")).ДоступныеЗначения.ЗагрузитьЗначения(Массив);
В СКД на вкладке параметры нужно указать этому параметру в доступных значениях хотя бы пустую ссылку, чтоб ДоступныеЗначения стало типом СписокЗначений.
(26) проверил работает, только если так делать, то каждый допреквизит/свойство нужно прописывать.
с отбором по документу получилось так
И при первом запуске в списке присутствует <Пустое значение>
с отбором по документу получилось так
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ДополнительныеРеквизитыИСведения.Ссылка,
| ДополнительныеРеквизитыИСведения.НаборСвойств
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
|ГДЕ
| ДополнительныеРеквизитыИСведения.НаборСвойств = &НаборСвойств";
Запрос.Параметры.Вставить("НаборСвойств", Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию("Реализации товаров и услуг"));
Массив = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Массив.Добавить(Выборка.Ссылка);
КонецЦикла;
КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(Новый ПараметрКомпоновкиДанных("Свойство")).ДоступныеЗначения.ЗагрузитьЗначения(Массив); ПоказатьИ при первом запуске в списке присутствует <Пустое значение>
(37) прописал, список устанавливается, но так как это не параметр, сделал немного по другому
только выбранные значения не применяются к отчету, отчет пишет:
хотя на форме все выбрано
Пробовал так же через установку параметра и связи параметров выбора, но значение параметра остается пустым, т.е. в модуле объекта не устанавливается.
СВ = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.Элементы.Найти("Свойство");
Запрос = Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Ссылка КАК Значение
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Владелец.Наименование = ""Свойство (Реализация (акты, накладные))""";
Массив = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Массив.Добавить(Выборка.Значение);
КонецЦикла;
СВ.ДоступныеЗначения.ЗагрузитьЗначения(Массив); Показатьтолько выбранные значения не применяются к отчету, отчет пишет:
"( Свойство В списке ""<Пустое значение>; <Пустое значение>"" )"
хотя на форме все выбрано
Пробовал так же через установку параметра и связи параметров выбора, но значение параметра остается пустым, т.е. в модуле объекта не устанавливается.
ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Свойство (Реализация (акты, накладные))");
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ПВХ", ПВХ);
(40) если это не параметр, то надо это делать в
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
и ДоступныеЗначения тут вообще ни при чем.
Чего вы все-таки добиться хотите? Максимально подробно опишите, иначе это в битву экстрасенсов превращается...
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
и ДоступныеЗначения тут вообще ни при чем.
Чего вы все-таки добиться хотите? Максимально подробно опишите, иначе это в битву экстрасенсов превращается...
(41) на форме пользователю доступно поле отбора "Сведение" куда он может подбирать список значений из справочника "ЗначенияСвойствОбъектов". В данном справочнике хранятся все дополнительные сведения, например для документа поступление, реализация ... Необходимо оставить пользователю для выбора только сведения привязанные к реализации или отфильтровать их по наименованию.
Во вложении сам отчет и скриншоты с выделением что нужно убрать.
Во вложении сам отчет и скриншоты с выделением что нужно убрать.
Прикрепленные файлы:
(1) не совсем понятно что нужно в итоге? Чтоб пользователь выбирал из списка, или чтоб пользователь совсем ничего не выбирал, а значение было жестко прописано?
Для последнего, как вариант жесткого кодирования:
Для последнего, как вариант жесткого кодирования:
ПО РеализацияТоваровУслугТовары.Ссылка = ДополнительныеСведения.Объект
И (ДополнительныеСведения.Свойство.Наименование = "Наше Сведение")
(24) не ответили на вопрос: "Выбирать значения должны пользователи из ограниченного списка, или нужно жестко прописать эти значения в конфигураторе без возможности выбора пользователем?
Если второе и ограничить значения несколькими свойствами:
Если второе и ограничить значения несколькими свойствами:
ПО РеализацияТоваровУслугТовары.Ссылка = ДополнительныеСведения.Объект
И (ДополнительныеСведения.Свойство.Наименование = "Наше Сведение"
ИЛИ ДополнительныеСведения.Свойство.Наименование = "Наше второе Сведение"
ИЛИ ДополнительныеСведения.Свойство.Наименование = "Наше третье Сведение")
(30) т.е. известны Наименование свойств. Нужно дать пользователю список выбора заполненный заранее известными значениями?
Тогда самый простой вариант, при условии, что имена не поменяет пользователь:
Далее в СКД Параметры:
Тип параметра СвойстваНаименование = Строка.
Доступные значения = составляете список нужных наименований.
Выводите пользователю.
В общем все.
Тогда самый простой вариант, при условии, что имена не поменяет пользователь:
ПО РеализацияТоваровУслугТовары.Ссылка = ДополнительныеСведения.Объект
И (ДополнительныеСведения.Свойство.Наименование = &СвойствоНаименованиеДалее в СКД Параметры:
Тип параметра СвойстваНаименование = Строка.
Доступные значения = составляете список нужных наименований.
Выводите пользователю.
В общем все.
Выстави в параметр отчета не само значение свойства, а его наименование. Для этого параметра заранее определи доступные значения.
А уже в запросе ищи нужное тебе свойство по полученному наименованию.
А уже в запросе ищи нужное тебе свойство по полученному наименованию.
(9) Если наименования свойства известны, то как раз сделайте как я сказал.
Создайте свой параметр, например "НаименованиеСвойства", задайте список доступных значений. У пользователя при работе с отчетом будет выпадающий список.
В тексте запроса сделайте: " &НаименованиеСвойства = ДополнительныеСведения.Свойство.Наименоавние"
Создайте свой параметр, например "НаименованиеСвойства", задайте список доступных значений. У пользователя при работе с отчетом будет выпадающий список.
В тексте запроса сделайте: " &НаименованиеСвойства = ДополнительныеСведения.Свойство.Наименоавние"
(10) мне нужно сделать это в конфигураторе, так как свойства вводятся только в режиме предприятия, то они недоступны в режиме конфигуратора. И это не имеет отношения к запросу! Речь идет о выборе пользователя в режиме предприятия.
Параметры редактирования. Связи параметров выбора. Там просто параметру нужно писать не просто Владелец, а Отбор.Владелец
Пример во вложении
Пример во вложении
Прикрепленные файлы:
ВнешнийОтчет1.erf
(7) каким образом привязать? свойство доступно только в пользовательском режиме, так как там его и добавляли, можно ли как то это решить? Если только в СКД никак, то как в коде? Но оч не хочется создавать форму для отчета.
(8) И правда. Обычно можно настройки СКД выгрузить, потом в консоли скд в предприятии задать значение и снова загрузить в конфигураторе. С параметрами такая штука прокатывает, а вот с параметрами выбора почему-то не хочет. Либо оставляет пустым, либо передает уид строкой в качестве владельца.
(8) Похоже при выносе в быстрые настройки СКД хочет и параметр из быстрых брать. Если и параметр и отбор в быстрых настройках, тогда отрабатывает. Либо если и параметр и отбор доступны и не вынесены, тогда через обычные настройки можно назначать.
Настроить и сохранить вариант не прокатит?
Еще можно попробовать свойства не явно в запрос кинуть, а через характеристики СКД. Тогда будет "Реализация.Наше свойство = ..."
Настроить и сохранить вариант не прокатит?
Еще можно попробовать свойства не явно в запрос кинуть, а через характеристики СКД. Тогда будет "Реализация.Наше свойство = ..."
(20)
В типовых это реализовано на уровне всех отчетов, так что можно сделать запрос чисто по реализациям. Затем в предприятии настроить вывод свойства и добавить отбор по нему в быстрые настройки. Затем в форме настройки варианта - все действия - сохранить настройки в файл. Загрузить настройки в конфигураторе. Будет крест на полях - якобы они не найдены, но в режиме предприятия все ок.
Единственный минус - наименования свойств будут полными - например, Характеристика номенклатуры.Диагональ (Справочник "Характеристики номенклатуры" (Общие))
В типовых это реализовано на уровне всех отчетов, так что можно сделать запрос чисто по реализациям. Затем в предприятии настроить вывод свойства и добавить отбор по нему в быстрые настройки. Затем в форме настройки варианта - все действия - сохранить настройки в файл. Загрузить настройки в конфигураторе. Будет крест на полях - якобы они не найдены, но в режиме предприятия все ок.
Единственный минус - наименования свойств будут полными - например, Характеристика номенклатуры.Диагональ (Справочник "Характеристики номенклатуры" (Общие))
Прошу прощения, в типовых не на уровне отчетов, а на уровне метаданных - вкладка Данные - Характеристики.
По поводу имен: имя самого выводимого поля можно поменять, а вот для отбора будет полное наименование свойства.
По поводу имен: имя самого выводимого поля можно поменять, а вот для отбора будет полное наименование свойства.
В модуле менеджера справочников/документов можно формировать нужній список процедурой ОбработкаПолученияДанныхВыбора
В модуле обработки
СЗ = новый СписокЗначений;
Запрос = Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Ссылка КАК Значение
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Владелец.Наименование = ""Свойство (Реализация (акты, накладные))""";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СЗ.Добавить(Выборка.Значение);
КонецЦикла;
КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Сведение").ДоступныеЗначения = СЗ; ПоказатьПрикрепленные файлы:
Заявка.erf
(44) Что вы можете не так сделать? Код же не ваш :) Он присваивает доступным значениям список значений, а список значений надо загружать. Надо сделать как я и сказал ранее:
Код будет такой:
Выше выборка и цикл уже не нужны.
А если не создаете свою форму, то все это работает до первого изменения настроек или варианта.
В СКД на вкладке параметры нужно указать этому параметру в доступных значениях хотя бы пустую ссылку, чтоб ДоступныеЗначения стало типом СписокЗначений.
А если используете не параметр, а поле, то соответственно надо в наборе данных у поля это сделать.
Код будет такой:
КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Сведение").ДоступныеЗначения.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Значение"));А если не создаете свою форму, то все это работает до первого изменения настроек или варианта.
(45) Дело в том, что при подборе открывается другая форма, и ей пофиг на доступные значения.
(46) Значит через параметры выкручиваться.
криво конечно... через строки... параметры отбираются. Сам запрос проверить не могу.
(46) Значит через параметры выкручиваться.
криво конечно... через строки... параметры отбираются. Сам запрос проверить не могу.
Прикрепленные файлы:
Заявка.erf
(47) На самом деле типовая форма отчета не такая тупая и она все параметры учитывает, и установленные значения, и параметры выбора, и на основании этого подбирает формы для выбора.
Я затолкал список в схему и переинициализировал компоновщик. Теперь список не слетает при изменении настроек:
Я затолкал список в схему и переинициализировал компоновщик. Теперь список не слетает при изменении настроек:
СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Сведение").УстановитьДоступныеЗначения(СЗ);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
(48) в итоге все скомбинировал. Добавил Параметр, установил его значение.
В параметрах редактирования поля "Сведение" указал связи параметров выбора "Отбор.Владелец: ПараметрыДанных.ПВХ".
Всем спасибо за помощь.
ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Сведение (Реализация (акты, накладные))");
СхемаКомпоновкиДанных.Параметры["ПВХ"].Значение = ПВХ;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));В параметрах редактирования поля "Сведение" указал связи параметров выбора "Отбор.Владелец: ПараметрыДанных.ПВХ".
Всем спасибо за помощь.
(49) А у меня был еще такой вариант:
Но я его не предложил, потому что с параметром БыстрыйВыбор = Истина он не работал нормально - в списке с флажками появлялись все значения, а тестировал-то я именно с ним. Видимо все-таки в типовой форме отчета что-то не докручено. Без быстрого выбора оказалось работает нормально, только через Подбор надо выбирать.
ПараметрВыбора = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Сведение").ПараметрыРедактирования.Элементы.Найти("ПараметрыВыбора");
НовыйОтбор = ПараметрВыбора.Значение.Добавить();
НовыйОтбор.Имя = "Отбор.Владелец";
НовыйОтбор.Значение = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Сведение (Реализация (акты, накладные))");
ПараметрВыбора.Использование = Истина;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));Но я его не предложил, потому что с параметром БыстрыйВыбор = Истина он не работал нормально - в списке с флажками появлялись все значения, а тестировал-то я именно с ним. Видимо все-таки в типовой форме отчета что-то не докручено. Без быстрого выбора оказалось работает нормально, только через Подбор надо выбирать.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
