Как открыть регистр сведений программно с отбором?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
1.Создан новый регистр ИсторияОсновнойМенеджерКонтрагента
2. Период,Контрагент,ресурс Пользователь
3.в форме элемента Контрагента создна кнопка История где устанавливается основной менеджер
вот при нажатии этой кнопки хочется открывать регистр с отбором по контрагенту и пользователю
конфигурация УТ 10.3
2. Период,Контрагент,ресурс Пользователь
3.в форме элемента Контрагента создна кнопка История где устанавливается основной менеджер
вот при нажатии этой кнопки хочется открывать регистр с отбором по контрагенту и пользователю
конфигурация УТ 10.3
Наверное, как-то так...
Форма = РегистрыСведений.ИсторияОсновнойМенеджерКонтрагента.ПолучитьФормуСписка();
ОтборПоСписку = Форма.РегистрСведенийСписок.Отбор;
ОтборПоКонтрагенту = ОтборПоСписку.Контрагент;
ОтборПоКонтрагенту.Использование = Истина;
ОтборПоКонтрагенту.Значение = Ссылка; // Ссылка на контрагента
ОтборПоКонтрагенту.ВидСравнения = ВидСравнения.Равно;
ОтборПоПользователю = ОтборПоСписку.Пользователь;
ОтборПоПользователю.Использование = Истина;
ОтборПоПользователю.Значение = ОсновнойМенеджер;
ОтборПоПользователю.ВидСравнения = ВидСравнения.Равно;
Форма.Открыть();
Показать
один из вариантов:
ЭлементОтбора (FilterItem)
Установить (Set)
Синтаксис:
Установить(<Значение>, <Использование>)
Параметры:
<Значение> (необязательный)
Тип: Произвольный. Значение сравнения.
<Использование> (необязательный)
Тип: Булево. Признак использования отбора по значению.
Значение по умолчанию: Истина
Описание:
Устанавливает значение отбора и флаг использования. При выполнении данного метода вид сравнения устанавливается в значение Равно.
Примечание:
Метод имеет смысл применять, если необходимо установить и значение и использование отбора.
Пример:
СписокКурсыВалют.Отбор.Валюта.Установить(Ссылка);
Показать
Вдруг кому пригодится) вот так работает на управляемых формах, процедура НаКлиенте
Парам = Новый Структура;
Отбор = Новый Структура;
Отбор.Вставить("Сырьё", ПолучаемСырьёДляРегистраСведений(Элементы.Список.ТекущиеДанные.Ссылка)); // то, по чему нужно искать
Парам.Вставить("Отбор", Отбор);
ОткрытьФорму("РегистрСведений.ПоследниеЦены.ФормаСписка", Парам);
kaaasteeen; dbachinsky; Mechanik21; tdml; RibD; magv; TaRomashova; tivanitsky; AZel84; sergioevans; seperblunt; ArchAhper; yaroslav.artem; AlekSo; papche; user1226763; user809597; Enziger; kamsky93; AlexandrDmC; DrAku1a; smit1c; ncerber; johny1987; d4rkmesa; Andy_NTG; user659168_xec8787; pbahushevich; sasha12369; izidakg; jaroslav.h; user712426; e-9; AKunitsyn; MonteCriZto; wauri; alexovik; SeerRM; o6opkot; alina0587; Gendelf; zba; xiru; el-gamberro; slitov; uras0vd; pavel_pss; alexn62rus; одинэсник; adhocprog; Огонек; AngV; config; swiss-garant; EMelihoff;
+55
–
Ответить
(11)
А как быть, если документы в цикле создаются на сервере, а затем их необходимо показать, используя метод ОткрытьФорму, который работает только на клиенте.??
ОткрытьФорму("РегистрСведений.ИмяРегистра.ФормаСписка", Новый Структура("Отбор", Отбор));
А как быть, если документы в цикле создаются на сервере, а затем их необходимо показать, используя метод ОткрытьФорму, который работает только на клиенте.??
ВыгрузитьПретензия(ТабДок); //выгружаем данные из запроса в ТЧ
ИзменениеТЧ(СоздатьДокИски); //Меняем некоторые реквизиты табличной части, а затем переходим в процедуру Создать Документы
Если ОтборПретензия <> Неопределено Тогда
ОткрытьФорму("Документ.КУ_Претензия.ФормаСписка", Новый Структура("Отбор", ОтборПретензия));
КонецЕсли; //Если ОтборПретензия <> Неопределено Тогда
Показать
В принципе, в БСП и в типовых конфигурациях 8.3 достаточно встроенных функций по работе с различного рода отборами, так что хорошим тоном будет не "изобретать свой велосипед", а использовать созданные функции.
Пример открытия подбора "списания денег" из платежного поручения с отбором:
1. Обычный отбор:
2. Механизм имитации пользовательских настроек - несколько неудобен, так как "ключевыми полями элементов отбора" служат некие ИД элементов, но в принципе использовать можно:
Пример открытия подбора "списания денег" из платежного поручения с отбором:
1. Обычный отбор:
ФормаВыбора = ПолучитьФорму("Документ.СписаниеСРасчетногоСчета.Форма.ФормаВыбора", Новый Структура("РежимВыбора",истина), ЭтаФорма);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ФормаВыбора.Список,"ВидОперации",Объект.ВидОперации,
,,,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ФормаВыбора.Список,"СуммаДокумента",Объект.СуммаДокумента,
,,,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ФормаВыбора.Список,"Контрагент",Объект.Контрагент,ВидСравненияКомпоновкиДанных.Равно
,,,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ФормаВыбора.Список,"Контрагент",,ВидСравненияКомпоновкиДанных.НеЗаполнено
,,,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ДоговорКонтрагента) Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ФормаВыбора.Список,"ДоговорКонтрагента",Объект.ДоговорКонтрагента,ВидСравненияКомпоновкиДанных.Равно
,,,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ФормаВыбора.Список,"ДоговорКонтрагента",,ВидСравненияКомпоновкиДанных.НеЗаполнено
,,,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
КонецЕсли;
Показать2. Механизм имитации пользовательских настроек - несколько неудобен, так как "ключевыми полями элементов отбора" служат некие ИД элементов, но в принципе использовать можно:
ФормаВыбора = ПолучитьФорму("Документ.СписаниеСРасчетногоСчета.Форма.ФормаВыбора", Новый Структура("РежимВыбора",истина), ЭтаФорма);
Отбор = Неопределено;
Для Каждого ЭлементНастройки Из ФормаВыбора.Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если ЭлементНастройки.ИдентификаторПользовательскойНастройки = ФормаВыбора.Список.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки Тогда
Отбор = ЭлементНастройки;
КонецЕсли;
КонецЦикла;
Отбор.Элементы.Очистить();
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(Отбор, "ВидОперации", Объект.ВидОперации);
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(Отбор, "СуммаДокумента", Объект.СуммаДокумента);
ГруппаИЛИ = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИЛИ.Представление = "";
ГруппаИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(ГруппаИЛИ, "ДокументОснование", Объект.Ссылка, ВидСравненияКомпоновкиДанных.Равно);
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(ГруппаИЛИ, "ДокументОснование", ,ВидСравненияКомпоновкиДанных.НеЗаполнено);
ГруппаИЛИ = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИЛИ.Представление = "";
ГруппаИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(ГруппаИЛИ, "Контрагент", Объект.Контрагент, ВидСравненияКомпоновкиДанных.Равно);
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(ГруппаИЛИ, "Контрагент", ,ВидСравненияКомпоновкиДанных.НеЗаполнено);
ГруппаИЛИ = Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаИЛИ.Представление = "";
ГруппаИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(ГруппаИЛИ, "ДоговорКонтрагента", Объект.ДоговорКонтрагента, ВидСравненияКомпоновкиДанных.Равно);
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(ГруппаИЛИ, "ДоговорКонтрагента", ,ВидСравненияКомпоновкиДанных.НеЗаполнено);
ФормаВыбора.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ФормаВыбора.Открыть()
Показать//Отбор = Новый Структура("Номенклатура", Элементы.Список.ТекущаяСтрока);
Форма = ОткрытьФорму("РегистрСведений.ЗначенияТочкиЗаказа.ФормаСписка", ,ЭтаФорма);
Форма.Отбор.Номенклатура.Установить(Элементы.Список.ТекущаяСтрока, Ложь);
Форма.Отбор.Номенклатура.Использование = Истина;
Форма.ЭлементыФормы.РегистрСведенийСписок.НастройкаОтбора.Номенклатура.Доступность = Ложь;
Форма.Открыть();//Открываем форму
В моем случае регистр Сведений "ЗначенияТочкиЗаказа" Отбор по номенклатуре. В Вашем случае будет примерно так:
Форма = ОткрытьФорму("РегистрСведений.ИсторияОсновнойМенеджерКонтрагента .ФормаСписка", ,ЭтаФорма);
Форма.Отбор.Контрагент.Установить(Элементы.Список.ТекущаяСтрока, Ложь);
Форма.Отбор.Контрагент.Использование = Истина;
Форма.ЭлементыФормы.РегистрСведенийСписок.НастройкаОтбора.Контрагент.Доступность = Ложь;
Форма.Открыть();//Открываем форму
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот