Произвольный отбор при открытии формы любого динамического списка
Разработка - Механизмы платформы 1С
Доброго времени суток, дорогие 1С-ники! Наша сегодняшняя передача посвещена отборам при открытии форм. Допустим, у вас есть внешняя обработка и вы хотите выбрать какие-то документы, элементы справочника или иные какие данные из списка, который не хотите пользователю показывать целиком.
Отчасти с этим помогает справиться параметр "Отбор", передаваемый при открытии формы. Например, так:
ОткрытьФорму("Документ.ПоступлениеНаРасчетныйСчет.ФормаСписка", Новый Структура("Отбор", Новый Структура("ВидОперации", НужныйВидОперации)), ЭтаФорма, ...);
Но если Вам нужно отбрать по реквизиту табличной части, то такой метод не подходит, ибо в ключе структуры не может быть точки. Соответствие могло бы тут помочь, но 1С не работает с соответствием, поэтому умные разработчики 1С придумали еще один параметр открытия формы - "ФиксированныеНастройки".
Для того, чтобы получить эти фиксированные настройки, нужно сделать так:
Функция ПолучитьФиксНастройки()
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "Источник1";
Источник.ТипИсточникаДанных = "local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Запрос = "ВЫБРАТЬ * ИЗ Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет";
Набор.Имя = "Запрос1";
Набор.ИсточникДанных ="Источник1";
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
АдресСхемы = ПоместитьВоВременноеХранилище(Схема, ЭтаФорма.УникальныйИдентификатор);
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
Элт = КомпоновщикНастроек.ФиксированныеНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элт.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РасшифровкаПлатежа.СпособПогашенияЗадолженности");
Элт.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Элт.Использование = Истина;
Элт.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.СпособыПогашенияЗадолженности.Автоматически");
Возврат КомпоновщикНастроек.ФиксированныеНастройки
КонецФункции
&НаКлиенте
Процедура ОткрытьКом(Команда)
Фикс = ПолучитьФиксНастройки();
ОткрытьФорму("Документ.ПоступлениеНаРасчетныйСчет.ФормаСписка", Новый Структура("ФиксированныеНастройки", Фикс), ЭтаФорма)
КонецПроцедуры
В данном случае мы откроем только те документы, в реквизите "СпособПогашенияЗадолженности" табличной части "РасшифровкаПлатежа" которых установлено значение "Автоматически".
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Механизмы платформы 1С Разработчик Бесплатно (free)
Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?
16.07.2025 45678 TitanLuchs 109
Работа с интерфейсом WEB-интеграция Механизмы платформы 1С Бесплатно (free)
Веб-интерфейсы повышают качество внешнего вида приложений 1С, предсказуемы с точки зрения верстки, позволяют организовать удобные и высокопроизводительные рабочие места для пользователей. Расскажем об особенностях разработки веб-интерфейсов на React внутри 1С, двустороннем взаимодействии 1С и JavaScript, а также сборке веб-приложения в одностраничный файл.
19.06.2025 18691 zeegin 15
Механизмы платформы 1С Работа с интерфейсом Разработчик Стажер 1С:Предприятие 8 Бесплатно (free)
Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).
03.02.2025 26036 bayselonarrend 127
Механизмы платформы 1С Разработчик 1С:Предприятие 8 Бесплатно (free)
В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.
30.01.2025 33318 user2122906 10
Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Разработчик 1С:Предприятие 8 Бесплатно (free)
Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.
17.01.2025 55809 user2122906 13
Механизмы платформы 1С WEB-интеграция Разработчик 1С:Предприятие 8 Бесплатно (free)
В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.
14.01.2025 46796 dsdred 110
Механизмы платформы 1С Разработчик 1С:Предприятие 8 Бесплатно (free)
Особенности "Знач" и разбор документации к нему.
10.01.2025 26465 VAAngelov 60
Механизмы платформы 1С Разработчик Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)
Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.
23.06.2024 40467 bayselonarrend 24
ФиксНастройки = Новый НастройкиКомпоновкиДанных;
ФиксНастройки.ПараметрыДанных.Элементы.Добавить().Параметр = Новый ПараметрКомпоновкиДанных("Период");
ФиксНастройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ПППП);
УправлениеНебольшойФирмойКлиент.УстановитьЭлементОтбораСписка(ФиксНастройки, "Склад", СССС);
ПоказатьМожет быть для потомков покажете вторую редакцию готового кода, с замененными фрагментами? Может как-то бы и в статье это отразить?
И не понятно, если при всех одинаковых вводных, можно написать меньше когда, то почему не воспользоваться данной возможностью? :)
Дополните статью коротким вариантом, типа "но код можно подсократить, и я покажу как".
Переживаю сильно, т.к. многие тонны классного навоза вот таким вот копи-паством потом приходится разгребать. Надеюсь вы немножко облегчите этот труд будущим потомкам, а может и мне :)
Спасибо.
Автор, насчёт производительности что-нибудь известно? Или это вариант только для простых списков по основной таблице?
С другой стороны, если показать пользователю меньше данных, то есть некоторый шанс на то, что пользователь не выберет что-то не то.
ЗЫ: Ты до сих пор не знаешь, за что на Инфостарте плюсуют? Могу как-нибудь рассказать...
За труды все равно плюсану.
Почему не использовать пользовательские настройки с доступностью - недоступный?
ПараметрыФормы = Новый Структура("ПользовательскиеНастройки", ПользовательскиеНастройки);
ПараметрыФормы.Вставить("СформироватьПриОткрытии" , Истина);
Форма = ОткрытьФорму("Отчет.XXXXX.Форма.ФормаОтчета", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Источник.УникальныйИдентификатор, ПараметрыВыполненияКоманды.Окно);
Может, кому-нибудь пригодится:
&НаКлиенте
Процедура Реквизит1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ИдентификаторПользовательскойНастройки = "dfcece9d-5077-440b-b6b3-45a5cb4538eb";
Отбор = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
Отбор.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто;
ЭлементОтбора = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
ЭлементОтбора.ПравоеЗначение = "Вода";
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
ПараметрыФормы = Новый Структура("ПользовательскиеНастройки", ПользовательскиеНастройки);
ОткрытьФорму("ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма1", ПараметрыФормы, Элемент);
КонецПроцедуры ПоказатьНебольшая приятность пользователю: если элемент уже выбран, и требуется повторное открытие формы выбора, то можно передать начальное значение выбора:
.....
ПараметрыФормы = Новый Структура("ПользовательскиеНастройки", ПользовательскиеНастройки);
//+++
ПараметрыФормы.Вставить("ТекущаяСтрока", Элемент.Значение);
//---
ОткрытьФорму("ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма1", ПараметрыФормы, Элемент);
КонецПроцедуры
Лично я увидел в вашей публикации то что мне было нужно, а вот фиксированные настройки, мне вообще были не нужны
И в целом я так считаю что чем подробней и четче описано явление то это к лучшему.
Можно и два варианта типа длинный и типа короткий.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 565658
Создание 05.12.16 16:08
Обновление 05.12.16 16:08
Просмотры 46193
Загрузки 0
Рейтинг
165
Комментарии 35
Код открыт Не указано
Рубрики Механизмы платформы 1С
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)