Ограничить список выбора дополнительных сведений.

1. scanner1980 266 23.10.17 15:41 Сейчас в теме
Здравствуйте.
В БП 3.0 к документу "Реализация товаров и услуг" добавлено дополнительное сведение "Наше Сведение". Затем написан отчет на СКД
ВЫБРАТЬ
	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
	РеализацияТоваровУслугТовары.Количество КАК Количество,
	РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
	ЕСТЬNULL(ДополнительныеСведения.Значение, ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка)) КАК НашеСведение,
	ДополнительныеСведения.Свойство КАК Свойство
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
		ПО РеализацияТоваровУслугТовары.Ссылка = ДополнительныеСведения.Объект
			И (&Свойство = ДополнительныеСведения.Свойство)
			И (РеализацияТоваровУслугТовары.Ссылка.Дата >= НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ))
			И (РеализацияТоваровУслугТовары.Ссылка.Дата <= КОНЕЦПЕРИОДА(&Дата, ДЕНЬ))
Показать


&Свойство = Наше Сведение.

Поле "Наше Сведение" включено в пользовательские настройки и показывается в шапке отчета.
Каким образом можно при выборе значений поля "Наше Сведение" ограничить список или свойству, или по наименованию свойства? На данный момент в списке выбора показываются все значения свойств для всех документов.
Пробовал через "Параметры редактирования" у поля, но ничего не получилось.
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
5. davealone 165 23.10.17 16:43 Сейчас в теме
Параметры редактирования. Связи параметров выбора. Там просто параметру нужно писать не просто Владелец, а Отбор.Владелец
Пример во вложении
Прикрепленные файлы:
ВнешнийОтчет1.erf
scanner1980; +1 Ответить
21. davealone 165 24.10.17 08:52 Сейчас в теме +10 $m
(20) https://its.1c.ru/db/metod8dev/content/1795/hdoc

В типовых это реализовано на уровне всех отчетов, так что можно сделать запрос чисто по реализациям. Затем в предприятии настроить вывод свойства и добавить отбор по нему в быстрые настройки. Затем в форме настройки варианта - все действия - сохранить настройки в файл. Загрузить настройки в конфигураторе. Будет крест на полях - якобы они не найдены, но в режиме предприятия все ок.

Единственный минус - наименования свойств будут полными - например, Характеристика номенклатуры.Диагональ (Справочник "Характеристики номенклатуры" (Общие))
scanner1980; +1 Ответить
47. EVKash 14 25.10.17 13:57 Сейчас в теме +5 $m
(45) Дело в том, что при подборе открывается другая форма, и ей пофиг на доступные значения.
(46) Значит через параметры выкручиваться.
криво конечно... через строки... параметры отбираются. Сам запрос проверить не могу.
Прикрепленные файлы:
Заявка.erf
scanner1980; +1 Ответить
48. maxmax83 25.10.17 14:10 Сейчас в теме +5 $m
(47) На самом деле типовая форма отчета не такая тупая и она все параметры учитывает, и установленные значения, и параметры выбора, и на основании этого подбирает формы для выбора.
Я затолкал список в схему и переинициализировал компоновщик. Теперь список не слетает при изменении настроек:
СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Сведение").УстановитьДоступныеЗначения(СЗ);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
scanner1980; +1 Ответить
49. scanner1980 266 25.10.17 14:36 Сейчас в теме
(48) в итоге все скомбинировал. Добавил Параметр, установил его значение.
ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Сведение (Реализация (акты, накладные))");
СхемаКомпоновкиДанных.Параметры["ПВХ"].Значение = ПВХ;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

В параметрах редактирования поля "Сведение" указал связи параметров выбора "Отбор.Владелец: ПараметрыДанных.ПВХ".

Всем спасибо за помощь.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. maxmax83 23.10.17 17:40 Сейчас в теме
(1) В СКД ограничить выбираемые значения параметра можно на вкладке Параметры в поле Доступные значения. Также доступно и программно:
ДоступныйПараметрКомпоновкиДанных.ДоступныеЗначения (DataCompositionAvailableParameter.AvailableValues)
ДоступныйПараметрКомпоновкиДанных (DataCompositionAvailableParameter)
ДоступныеЗначения (AvailableValues)
Использование:

Чтение и запись.
Описание:

Тип: СписокЗначений; Неопределено.
Содержит список значений, которые может принимать значение параметра.
Неопределено - значения поля неограничены.
14. scanner1980 266 23.10.17 17:59 Сейчас в теме
(11) скажите как? поле доступно только в режиме 1С предприятие.
26. maxmax83 24.10.17 12:09 Сейчас в теме
(14) Прямо в модуле объекта, например:
Массив	= Новый Массив;
Массив.Добавить(ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Нужное сведение"));
КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(Новый ПараметрКомпоновкиДанных("Свойство")).ДоступныеЗначения.ЗагрузитьЗначения(Массив);

В СКД на вкладке параметры нужно указать этому параметру в доступных значениях хотя бы пустую ссылку, чтоб ДоступныеЗначения стало типом СписокЗначений.
29. scanner1980 266 24.10.17 13:12 Сейчас в теме
(26)вопрос в том можно ли это сделать в скд?
31. maxmax83 24.10.17 13:18 Сейчас в теме
32. scanner1980 266 24.10.17 13:24 Сейчас в теме
(31)мешает то что я не знаю как это сделать и именно только в конфигураторе ...
33. maxmax83 24.10.17 13:34 Сейчас в теме
(32)
Прикрепленные файлы:
35. EVKash 14 24.10.17 16:08 Сейчас в теме
(26) проверил работает, только если так делать, то каждый допреквизит/свойство нужно прописывать.
с отбором по документу получилось так
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |	ДополнительныеРеквизитыИСведения.Ссылка,
               |	ДополнительныеРеквизитыИСведения.НаборСвойств
               |ИЗ
               |	ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
               |ГДЕ
               |	ДополнительныеРеквизитыИСведения.НаборСвойств = &НаборСвойств";
Запрос.Параметры.Вставить("НаборСвойств", Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию("Реализации товаров и услуг"));

Массив    = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Массив.Добавить(Выборка.Ссылка);
КонецЦикла;
КомпоновщикНастроек.Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(Новый ПараметрКомпоновкиДанных("Свойство")).ДоступныеЗначения.ЗагрузитьЗначения(Массив);
Показать

И при первом запуске в списке присутствует <Пустое значение>
36. scanner1980 266 24.10.17 22:15 Сейчас в теме
(35) можно ли это сделать только в скд не создавая отдельную форму для отчета?
37. EVKash 14 25.10.17 08:11 Сейчас в теме
(36) форму делать не обязательно. в модуле отчета прописываете этот код.
40. scanner1980 266 25.10.17 10:42 Сейчас в теме
(37) прописал, список устанавливается, но так как это не параметр, сделал немного по другому
СВ = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.Элементы.Найти("Свойство");
Запрос = Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
|	ЗначенияСвойствОбъектов.Ссылка КАК Значение
|ИЗ
|	Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
|	ЗначенияСвойствОбъектов.Владелец.Наименование = ""Свойство (Реализация (акты, накладные))""";

Массив = Новый Массив;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Массив.Добавить(Выборка.Значение);
КонецЦикла;
СВ.ДоступныеЗначения.ЗагрузитьЗначения(Массив);
Показать


только выбранные значения не применяются к отчету, отчет пишет:
"( Свойство В списке ""<Пустое значение>; <Пустое значение>"" )"

хотя на форме все выбрано

Пробовал так же через установку параметра и связи параметров выбора, но значение параметра остается пустым, т.е. в модуле объекта не устанавливается.
ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Свойство (Реализация (акты, накладные))");
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ПВХ", ПВХ);
41. EVKash 14 25.10.17 11:03 Сейчас в теме
(40) если это не параметр, то надо это делать в
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
и ДоступныеЗначения тут вообще ни при чем.
Чего вы все-таки добиться хотите? Максимально подробно опишите, иначе это в битву экстрасенсов превращается...
42. scanner1980 266 25.10.17 11:21 Сейчас в теме
(41) на форме пользователю доступно поле отбора "Сведение" куда он может подбирать список значений из справочника "ЗначенияСвойствОбъектов". В данном справочнике хранятся все дополнительные сведения, например для документа поступление, реализация ... Необходимо оставить пользователю для выбора только сведения привязанные к реализации или отфильтровать их по наименованию.

Во вложении сам отчет и скриншоты с выделением что нужно убрать.
Прикрепленные файлы:
Заявка.erf
18. spacecraft 23.10.17 18:48 Сейчас в теме
(1) не совсем понятно что нужно в итоге? Чтоб пользователь выбирал из списка, или чтоб пользователь совсем ничего не выбирал, а значение было жестко прописано?
Для последнего, как вариант жесткого кодирования:
ПО РеализацияТоваровУслугТовары.Ссылка = ДополнительныеСведения.Объект
И (ДополнительныеСведения.Свойство.Наименование = "Наше Сведение")
24. scanner1980 266 24.10.17 11:09 Сейчас в теме
(18) значения добавляются в режиме предприятия пользователем, дополнительных сведений может быть много, необходимо ограничить список выбора в конфигураторе, для ограничения его в режиме предприятия.
27. spacecraft 24.10.17 12:17 Сейчас в теме
(24) не ответили на вопрос: "Выбирать значения должны пользователи из ограниченного списка, или нужно жестко прописать эти значения в конфигураторе без возможности выбора пользователем?
Если второе и ограничить значения несколькими свойствами:
ПО РеализацияТоваровУслугТовары.Ссылка = ДополнительныеСведения.Объект
И (ДополнительныеСведения.Свойство.Наименование = "Наше Сведение"
    ИЛИ ДополнительныеСведения.Свойство.Наименование = "Наше второе Сведение"
    ИЛИ ДополнительныеСведения.Свойство.Наименование = "Наше третье Сведение")
30. scanner1980 266 24.10.17 13:13 Сейчас в теме
(27) пользователи выбирают сами эти значения, так же как и вводят их сами, сведения привязаны к документу. Я знаю лишь наименование и тип этого свойства в конфигураторе
38. spacecraft 25.10.17 08:54 Сейчас в теме
(30) т.е. известны Наименование свойств. Нужно дать пользователю список выбора заполненный заранее известными значениями?
Тогда самый простой вариант, при условии, что имена не поменяет пользователь:
ПО РеализацияТоваровУслугТовары.Ссылка = ДополнительныеСведения.Объект
И (ДополнительныеСведения.Свойство.Наименование = &СвойствоНаименование

Далее в СКД Параметры:
Тип параметра СвойстваНаименование = Строка.
Доступные значения = составляете список нужных наименований.
Выводите пользователю.
В общем все.
39. EVKash 14 25.10.17 09:13 Сейчас в теме
(38) нет. я тоже не сразу понял, что хочет ТС.
Ему надо при установке параметра пользователем, ограничить список выбора дополнительных сведений, только теми, которые относятся к конкретному типу документа.
23. EVKash 14 24.10.17 10:08 Сейчас в теме
(1) Список выбора текстовых представлений свойства?
В параметрах создаете свой параметр, тип строка. В доступные значения пишете свой список. И ставите использовать - всегда и галку запрещать незаполненные значения.
25. scanner1980 266 24.10.17 11:09 Сейчас в теме
(23) список расширяется в режиме предприятия пользователем
34. EVKash 14 24.10.17 13:48 Сейчас в теме
(25) в чем тогда ограничение?
по идее тогда "доступен список значений" к этому прибавить. а "запрещать незаполненные значения" по усмотрению.
или я не понимаю, чего вы хотите добиться...
2. KroVladS 34 23.10.17 16:04 Сейчас в теме
Если поле "Наше Сведение" предопределенное, то добавить его в СКД в доступные значения.
3. scanner1980 266 23.10.17 16:26 Сейчас в теме
(2) предопределенных значений типа "Дополнительное сведение" нет, они добавляются только в режиме 1С предприятие.
4. user633533_encantado 11 23.10.17 16:37 Сейчас в теме
Выстави в параметр отчета не само значение свойства, а его наименование. Для этого параметра заранее определи доступные значения.
А уже в запросе ищи нужное тебе свойство по полученному наименованию.
9. scanner1980 266 23.10.17 17:19 Сейчас в теме
(4) мне нужно ограничить выбор для пользователя, чтобы он видел только определенные сведения и это не имеет никакого отношения к запросу.
10. user633533_encantado 11 23.10.17 17:31 Сейчас в теме
(9) Если наименования свойства известны, то как раз сделайте как я сказал.

Создайте свой параметр, например "НаименованиеСвойства", задайте список доступных значений. У пользователя при работе с отчетом будет выпадающий список.


В тексте запроса сделайте: " &НаименованиеСвойства = ДополнительныеСведения.Свойство.Наименоавние"
13. scanner1980 266 23.10.17 17:55 Сейчас в теме
(10) мне нужно сделать это в конфигураторе, так как свойства вводятся только в режиме предприятия, то они недоступны в режиме конфигуратора. И это не имеет отношения к запросу! Речь идет о выборе пользователя в режиме предприятия.
15. user633533_encantado 11 23.10.17 18:06 Сейчас в теме
(13) Вы меня похоже не понимаете. Я про конфигуратор и говорю. Если вы знаете список наименований свойств которые можно использовать, так пропишите его в скд и дайте пользователю фиксированный список.
16. scanner1980 266 23.10.17 18:08 Сейчас в теме
(15)покажите каким образом, наверное и правда мы друг друга не понимаем.
17. user633533_encantado 11 23.10.17 18:36 Сейчас в теме
(16) что в (10) вам не понятно. Вы параметр умеете создавать, список доступных значений можете ему задать ?
Я даже кусок текста запроса привел.
5. davealone 165 23.10.17 16:43 Сейчас в теме
Параметры редактирования. Связи параметров выбора. Там просто параметру нужно писать не просто Владелец, а Отбор.Владелец
Пример во вложении
Прикрепленные файлы:
ВнешнийОтчет1.erf
scanner1980; +1 Ответить
6. scanner1980 266 23.10.17 16:59 Сейчас в теме
(5) это вариант, но как сделать без выбора свойства в пользовательском режиме, нужно ограничить список или по свойству, или по наименованию свойства.
7. davealone 165 23.10.17 17:02 Сейчас в теме
(6) Привяжите к параметру и не выводите его :)
я хотел проверить, что при смене отрабатывает
8. scanner1980 266 23.10.17 17:15 Сейчас в теме
(7) каким образом привязать? свойство доступно только в пользовательском режиме, так как там его и добавляли, можно ли как то это решить? Если только в СКД никак, то как в коде? Но оч не хочется создавать форму для отчета.
12. davealone 165 23.10.17 17:46 Сейчас в теме
(8) И правда. Обычно можно настройки СКД выгрузить, потом в консоли скд в предприятии задать значение и снова загрузить в конфигураторе. С параметрами такая штука прокатывает, а вот с параметрами выбора почему-то не хочет. Либо оставляет пустым, либо передает уид строкой в качестве владельца.
19. davealone 165 23.10.17 22:27 Сейчас в теме
(8) Похоже при выносе в быстрые настройки СКД хочет и параметр из быстрых брать. Если и параметр и отбор в быстрых настройках, тогда отрабатывает. Либо если и параметр и отбор доступны и не вынесены, тогда через обычные настройки можно назначать.

Настроить и сохранить вариант не прокатит?

Еще можно попробовать свойства не явно в запрос кинуть, а через характеристики СКД. Тогда будет "Реализация.Наше свойство = ..."
20. scanner1980 266 24.10.17 03:46 Сейчас в теме
(19) настроить и сохранить в пользовательском режиме точно нет, ОНИ знают как сбрасывать настройки и нередко этим пользуются. Про характеристики можно подробнее если это решит проблему?
21. davealone 165 24.10.17 08:52 Сейчас в теме +10 $m
(20) https://its.1c.ru/db/metod8dev/content/1795/hdoc

В типовых это реализовано на уровне всех отчетов, так что можно сделать запрос чисто по реализациям. Затем в предприятии настроить вывод свойства и добавить отбор по нему в быстрые настройки. Затем в форме настройки варианта - все действия - сохранить настройки в файл. Загрузить настройки в конфигураторе. Будет крест на полях - якобы они не найдены, но в режиме предприятия все ок.

Единственный минус - наименования свойств будут полными - например, Характеристика номенклатуры.Диагональ (Справочник "Характеристики номенклатуры" (Общие))
scanner1980; +1 Ответить
22. davealone 165 24.10.17 09:43 Сейчас в теме
Прошу прощения, в типовых не на уровне отчетов, а на уровне метаданных - вкладка Данные - Характеристики.
По поводу имен: имя самого выводимого поля можно поменять, а вот для отбора будет полное наименование свойства.
28. JohnGalt 57 24.10.17 12:23 Сейчас в теме
В модуле менеджера справочников/документов можно формировать нужній список процедурой ОбработкаПолученияДанныхВыбора
43. EVKash 14 25.10.17 12:07 Сейчас в теме
В модуле обработки
СЗ = новый СписокЗначений;

Запрос = Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
|    ЗначенияСвойствОбъектов.Ссылка КАК Значение
|ИЗ
|    Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
|    ЗначенияСвойствОбъектов.Владелец.Наименование = ""Свойство (Реализация (акты, накладные))""";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    СЗ.Добавить(Выборка.Значение);
КонецЦикла;

КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Сведение").ДоступныеЗначения = СЗ;
Показать
Прикрепленные файлы:
Заявка.erf
44. scanner1980 266 25.10.17 12:15 Сейчас в теме
(43) код отрабатывает, но при выборе пользователю по прежнему доступны все элементы справочника "ЗначенияСвойствОбъектов". Что то я видимо делаю не так.
45. maxmax83 25.10.17 13:06 Сейчас в теме
(44) Что вы можете не так сделать? Код же не ваш :) Он присваивает доступным значениям список значений, а список значений надо загружать. Надо сделать как я и сказал ранее:
В СКД на вкладке параметры нужно указать этому параметру в доступных значениях хотя бы пустую ссылку, чтоб ДоступныеЗначения стало типом СписокЗначений.
А если используете не параметр, а поле, то соответственно надо в наборе данных у поля это сделать.
Код будет такой:
КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Сведение").ДоступныеЗначения.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Значение"));
Выше выборка и цикл уже не нужны.

А если не создаете свою форму, то все это работает до первого изменения настроек или варианта.
46. scanner1980 266 25.10.17 13:13 Сейчас в теме
(45) список заполняется, но к отчету не применяется. Отчет выводит:
Отбор: Сведение В списке "<Пустое значение>; <Пустое значение>"
хотя выбраны не пустые значения.
47. EVKash 14 25.10.17 13:57 Сейчас в теме +5 $m
(45) Дело в том, что при подборе открывается другая форма, и ей пофиг на доступные значения.
(46) Значит через параметры выкручиваться.
криво конечно... через строки... параметры отбираются. Сам запрос проверить не могу.
Прикрепленные файлы:
Заявка.erf
scanner1980; +1 Ответить
48. maxmax83 25.10.17 14:10 Сейчас в теме +5 $m
(47) На самом деле типовая форма отчета не такая тупая и она все параметры учитывает, и установленные значения, и параметры выбора, и на основании этого подбирает формы для выбора.
Я затолкал список в схему и переинициализировал компоновщик. Теперь список не слетает при изменении настроек:
СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Сведение").УстановитьДоступныеЗначения(СЗ);
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
scanner1980; +1 Ответить
49. scanner1980 266 25.10.17 14:36 Сейчас в теме
(48) в итоге все скомбинировал. Добавил Параметр, установил его значение.
ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Сведение (Реализация (акты, накладные))");
СхемаКомпоновкиДанных.Параметры["ПВХ"].Значение = ПВХ;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

В параметрах редактирования поля "Сведение" указал связи параметров выбора "Отбор.Владелец: ПараметрыДанных.ПВХ".

Всем спасибо за помощь.
50. maxmax83 25.10.17 15:12 Сейчас в теме
(49) А у меня был еще такой вариант:
ПараметрВыбора = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля.Найти("Сведение").ПараметрыРедактирования.Элементы.Найти("ПараметрыВыбора");
НовыйОтбор = ПараметрВыбора.Значение.Добавить();
НовыйОтбор.Имя = "Отбор.Владелец";
НовыйОтбор.Значение = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Сведение (Реализация (акты, накладные))");
ПараметрВыбора.Использование = Истина; 
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

Но я его не предложил, потому что с параметром БыстрыйВыбор = Истина он не работал нормально - в списке с флажками появлялись все значения, а тестировал-то я именно с ним. Видимо все-таки в типовой форме отчета что-то не докручено. Без быстрого выбора оказалось работает нормально, только через Подбор надо выбирать.
scanner1980; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот