Произвольный отбор при открытии формы любого динамического списка

0. starik-2005 2831 05.12.16 15:20 Сейчас в теме
Как установить хитрый отбор при открытии формы списка, например, отбор формы списка документов по элементу табличной части? Давайте разбираться...

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. slawa 26 06.12.16 05:46 Сейчас в теме
Для чего Схему помещать во временное хранилище?
2. starik-2005 2831 06.12.16 10:52 Сейчас в теме
(1) в принципе тут схема вообще не нужна - можно создать объект настроек компоновки данных. А помещение в хранилище - дань традициям.
jan-pechka; +1 Ответить
3. nomadon 359 06.12.16 14:10 Сейчас в теме
без помещения интерактивно не работают доступные поля, мож и тут что то не работает
4. starik-2005 2831 06.12.16 14:35 Сейчас в теме
(3) тут все работает, но компоновка тут нужна лишь для получения фиксированных настроек, т.е. фактически весь этот код можно заменить на "ФиксНастройки = Новый НастройкиКомпоновкиДанных".
test_mode; zqzq; bulpi; +3 Ответить
7. zqzq 23 07.12.16 08:56 Сейчас в теме
(4) Так и надо всю эту воду из статьи убрать и оставить нужное


	ФиксНастройки = Новый НастройкиКомпоновкиДанных;

	ФиксНастройки.ПараметрыДанных.Элементы.Добавить().Параметр = Новый ПараметрКомпоновкиДанных("Период");
	ФиксНастройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ПППП);

	УправлениеНебольшойФирмойКлиент.УстановитьЭлементОтбораСписка(ФиксНастройки, "Склад", СССС);

Показать
Dach; nagimo; TeMochkiN; DAAbramov; bow; Новиков; jaroslav.h; +7 1 Ответить
11. starik-2005 2831 07.12.16 11:08 Сейчас в теме
(7) ну некоторым интересно полностью поглядеть ))
8. Новиков 292 07.12.16 10:13 Сейчас в теме
(4)
но компоновка тут нужна лишь для получения фиксированных настроек, т.е. фактически весь этот код можно заменить на "ФиксНастройки = Новый НастройкиКомпоновкиДанных".


Может быть для потомков покажете вторую редакцию готового кода, с замененными фрагментами? Может как-то бы и в статье это отразить?
И не понятно, если при всех одинаковых вводных, можно написать меньше когда, то почему не воспользоваться данной возможностью? :)
10. starik-2005 2831 07.12.16 11:07 Сейчас в теме
(8) если потомки не смогут сделать это самостоятельно, то за державу станет обидно )))

13. Новиков 292 07.12.16 11:47 Сейчас в теме
(10) Так вы для кого статью то писали, для себя или для других? Если для себя - вопросов нет. Если для других, вы зачем-то предложили длинный путь при наличии короткого. Дальше эту статью очевидно будут находить поисковиком и просто копи-пастить, меняя название документа и табличной части на свое. И расползется ваша портянища по многим и многим конфам. Я уверен, даже до комментов основная масса не дойдет, зная что решение - работает.

Дополните статью коротким вариантом, типа "но код можно подсократить, и я покажу как".

Переживаю сильно, т.к. многие тонны классного навоза вот таким вот копи-паством потом приходится разгребать. Надеюсь вы немножко облегчите этот труд будущим потомкам, а может и мне :)

Спасибо.
wowik; TeMochkiN; ixijixi; alest; +4 Ответить
14. starik-2005 2831 07.12.16 11:49 Сейчас в теме
(13) как в одном анекдоте про обезьян, прапорщиков, палку и бананы: "что тут думать - прыгать надо!" Отсюда мораль: не стоит упрощать то, что недоступно для понимания масс, чтобы оное оставалось в элитарном сегменте.
Makushimo; +1 Ответить
5. Yashazz 4511 06.12.16 15:54 Сейчас в теме
Ваще чего-то совсем баян. Из серии "как вывести пользователю сообщение". С чего вдруг столько плюсов?..

Автор, насчёт производительности что-нибудь известно? Или это вариант только для простых списков по основной таблице?
pm74; alest; +2 Ответить
6. starik-2005 2831 06.12.16 16:43 Сейчас в теме
(5) все зависит от того, что открывает пользователь. Если первый вариант отбора позволяет на "Равно" и "ВСписке" отбирать, то второй фактически определяет любой отбор, доступный пользователю в настройке списка, только при этом пользователь не видит отбор из фиксированных настроек. Производительность определяется полями отбора, которые уже будут влиять на план запроса в СУБД. Если по индексированному полю отбор происходит - производительность будет высокая, а если по какому-то ПОДОБНО в реквизите табличной части, то все зависит от размера таблицы. Я как-то руками группировку попытался сделать по весьма небольшому справочнику - пятнадцать минут ждал, пока программа что-то вернет.

С другой стороны, если показать пользователю меньше данных, то есть некоторый шанс на то, что пользователь не выберет что-то не то.

ЗЫ: Ты до сих пор не знаешь, за что на Инфостарте плюсуют? Могу как-нибудь рассказать...
9. mitia.mackarevich 28 07.12.16 10:29 Сейчас в теме
Забавно, а что будет автор если пользовательские настройки будут идти в наложении(Например сохраненные) или пользователь захочет потом сам настроить дин. список? вывалиться ошибка, наложение икс и пользовательских настроек недопустимо.Тогда имеет смыл запретить редактирование настроек при открытии динамического списка.
За труды все равно плюсану.
12. starik-2005 2831 07.12.16 11:09 Сейчас в теме
(9) так можно всегда гипотезу попытаться подтвердить или опровергнуть экспериментом!
15. palsergeich 07.12.16 12:26 Сейчас в теме
Использовать фиксированные настройки не гуд, ибо отбор по полю, на которое наложен уже отбор в фиксированных настройках приведет к ошибке. И часто приводит к тому, что такой список становится нафиг никому не нужен.
Почему не использовать пользовательские настройки с доступностью - недоступный?
27. SlavaKron 03.07.19 12:52 Сейчас в теме
(15)(18)(19)
Так что там с параметром формы ПользовательскиеНастройки? Получилось у кого-нибудь через него установить отбор?
28. starik-2005 2831 03.07.19 13:25 Сейчас в теме
29. SlavaKron 03.07.19 13:47 Сейчас в теме
(28) У меня не получилось, потому и спрашиваю.
16. palsergeich 07.12.16 12:29 Сейчас в теме
Что то типо такого.
ПараметрыФормы = Новый Структура("ПользовательскиеНастройки", ПользовательскиеНастройки);
ПараметрыФормы.Вставить("СформироватьПриОткрытии" , Истина);

Форма = ОткрытьФорму("Отчет.XXXXX.Форма.ФормаОтчета", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Источник.УникальныйИдентификатор, ПараметрыВыполненияКоманды.Окно);
17. starik-2005 2831 07.12.16 12:44 Сейчас в теме
(16) это для отчетов. В расширении формы динамического нет параметра "ПользовательскиеНастройки". Или есть? Для расширения формы компоновщика настроек есть.
18. alexei366 07.12.16 12:53 Сейчас в теме
В СП можно ввести "Расширение управляемой формы для динамического списка" и там будут и ФиксированныеНастройки и ПользовательскиеНастройки и КлючПользовательскихНастроек. Так что можно поиграться.
19. starik-2005 2831 07.12.16 13:10 Сейчас в теме
(18) у меня в СП так, пользовательские настройки есть - круто!
Прикрепленные файлы:
20. alexei366 07.12.16 13:28 Сейчас в теме
(19)Ну славо богу, хоть СП сопали)))
21. starik-2005 2831 07.12.16 13:47 Сейчас в теме
(20) с пользовательскими настройками то плохо, что пользователь их может отрубить. При этом фиксированные он срубить не сможет. С другой стороны, пользователь всегда прав - и если так, то можно и пользовательские настройки передавать.
22. alexei366 08.12.16 10:08 Сейчас в теме
(21) Надо тестить, ты же их передавать будешь, они может будут замещать пользовательские, плюк ключ пользовательских настроек можно передать какойнить специфический.
23. Pawlick 10 09.12.16 01:54 Сейчас в теме
1С не работает с соответствием


С какого числа?

Проверил: Платформа 1С:Предприятие 8.3 (8.3.8.1784)

Соответствие = Новый Соответствие;

Работает!!!

...Фух... Перепугался даже
24. starik-2005 2831 09.12.16 12:37 Сейчас в теме
(23) это если выдирать из контекста, то работает, а если с контекстом - нет )))
25. Makushimo 160 23.01.17 05:38 Сейчас в теме
26. пользователь 23.01.17 09:56
Сообщение было скрыто модератором.
...
30. SlavaKron 03.07.19 17:15 Сейчас в теме
Получилось, хоть и не без шаманства. Оказывается, идентификатор пользовательских отборов для любого динамического списка при создании формы всегда один и тот же: "dfcece9d-5077-440b-b6b3-45a5cb4538eb".
Может, кому-нибудь пригодится:
&НаКлиенте
Процедура Реквизит1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)	
	СтандартнаяОбработка = Ложь;
	
	ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
	
	ИдентификаторПользовательскойНастройки = "dfcece9d-5077-440b-b6b3-45a5cb4538eb";
	
	Отбор = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
	Отбор.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
	Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто;
	
	ЭлементОтбора = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
	ЭлементОтбора.ПравоеЗначение = "Вода";
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
	ЭлементОтбора.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
	
	ПараметрыФормы = Новый Структура("ПользовательскиеНастройки", ПользовательскиеНастройки);
	
	ОткрытьФорму("ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма1", ПараметрыФормы, Элемент);
КонецПроцедуры
Показать
Прикрепленные файлы:
ВнешняяОбработка1.epf
user1203706; independ; sevushka; spamyda; user1289861; user1107052; +6 Ответить
33. tormozit 6870 07.08.20 08:05 Сейчас в теме
34. spamyda 41 24.09.20 12:38 Сейчас в теме
(30) Плюсанул.

Небольшая приятность пользователю: если элемент уже выбран, и требуется повторное открытие формы выбора, то можно передать начальное значение выбора:
.....
    ПараметрыФормы = Новый Структура("ПользовательскиеНастройки", ПользовательскиеНастройки);
    //+++
    ПараметрыФормы.Вставить("ТекущаяСтрока", Элемент.Значение);
    //---
    ОткрытьФорму("ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма1", ПараметрыФормы, Элемент);
КонецПроцедуры
35. frkbvfnjh 728 14.03.23 15:15 Сейчас в теме
(30) Да блин, че так сложно все в 1С с этими настройками, особенно с пользовательскими. Какие то гуиды, откуда вообще я должен про эти гуиды знать? Есть где нибудь это в документации, как правильно работать с пользовательскими натсройками?
36. SlavaKron 14.03.23 16:10 Сейчас в теме
(35) Такой странный пример там только из-за того, что задача стояла обойтись параметрами формы. На практике проще открыть форму и на клиенте установить для нее пользовательские отборы.
31. user1289861 06.02.20 16:58 Сейчас в теме
автор молодец. И не слушай что пишут мол можно сделать короче.
Лично я увидел в вашей публикации то что мне было нужно, а вот фиксированные настройки, мне вообще были не нужны
И в целом я так считаю что чем подробней и четче описано явление то это к лучшему.
Можно и два варианта типа длинный и типа короткий.
frkbvfnjh; +1 Ответить
32. independ 1456 18.05.20 14:38 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист/тестировщик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Ведущий разработчик 1С / Team lead отдела разработки 1С
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день

Программист 1С
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Бизнес-аналитик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Ведущий консультант 1С:ERP
Москва
зарплата от 200 000 руб.
Полный день