Как открыть форму выбора с отбором по организации?
По теме из базы знаний
- Всякие полезности
- Загрузка чеков из ФНС в документы 1С:БП, УНФ, ERP, КА и УТ
- Мониторинг ПФР/Минтруда по приказу № Пр-366. Форма для сбора сведений о заработной плате работников бюджетной сферы. Автоматическое заполнение с возможностью корректировки и консолидации и выгрузка в формате XML. ЗГУ/ЗУП 3.1
- Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5
- Параметры открытия формы выбора отборов и параметров СКД ("связи параметров выбора" списочных значений СКД)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
&НаКлиенте
Процедура ТаблицаСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура("Организация", Объект.Организация);
ПараметрыФормы = Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("Справочник.Сотрудник.ФормаВыбора", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
(7)Тут же.
&НаКлиенте
Процедура ТаблицаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Строка = Элементы.Таблица.ТекущиеДанные;
Строка.Сотрудник = ВыбранноеЗначение;
КонецПроцедуры
А в модуле формы выбора справочника
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
КонецПроцедуры
Показать
(3) первое, что надо сделать, это в форме выбора, в динамическом списке определиться с реквизитом, для которого будет устанавливаться отбор по параметру формы при открытии
дальше примерно так, на примере формы выбора сотрудников с отбором по организации документа
вариант 1
основан на том, что сотрудник выбирается из открывающейся формы
1. в модуле формы в ПриСозданииНаСервере() добавляем установку отбора, например
или через методы конфы, но тут надо смотреть в саму конфу как в ней это вызывается для форм, например так
3. в документе, в вызов формы выбора сотрудников добавить параметр Объект.Организация, например
вариант 2
основан на том,что сотрудник выбирается из выпадающего списка
в событие элемента формы НачалоВыбора пишем код установки параметров формы выбора, например
дальше примерно так, на примере формы выбора сотрудников с отбором по организации документа
вариант 1
основан на том, что сотрудник выбирается из открывающейся формы
1. в модуле формы в ПриСозданииНаСервере() добавляем установку отбора, например
Если Параметры.Свойство("ОрганизацияСотрудника") Тогда
Список.Отбор.Элементы.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Параметры.ОрганизацияСотрудника;
КонецЕсли;
Показатьили через методы конфы, но тут надо смотреть в саму конфу как в ней это вызывается для форм, например так
Список.Параметры.УстановитьЗначениеПараметра("Организация", Параметры.ОрганизацияСотрудника);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список,
"Организация",
Параметры.ОрганизацияСотрудника,
ВидСравненияКомпоновкиДанных.Равно,
,
Истина);
Показать3. в документе, в вызов формы выбора сотрудников добавить параметр Объект.Организация, например
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", ЭтотОбъект.Организация);
ОткрытьФорму("Справочник.Сотрудники.Форма.ФормаВыбора", ПараметрыФормы);
вариант 2
основан на том,что сотрудник выбирается из выпадающего списка
в событие элемента формы НачалоВыбора пишем код установки параметров формы выбора, например
&НаКлиенте
Процедура СотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НЕ ЗначениеЗаполнено(ЭтотОбъект.Организация) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не выбрана организация!";
Сообщение.Поле = "Организация";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Возврат;
КонецЕсли;
ОрганизацияСотрудника = ЭтотОбъект.Организация;
НастройкиОтбора = Новый НастройкиКомпоновкиДанных;
ЭлементыОтбора = НастройкиОтбора.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементыОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
ЭлементыОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементыОтбора.ПравоеЗначение = ОрганизацияСотрудника ;
ЭлементыОтбора.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиОтбора);
ОткрытьФормуМодально("Справочник.Сотрудники.Форма.ФормаВыбора", ПараметрыФормы, Элемент);
КонецПроцедуры
Показать
А почему с параметрами выбора не получилось? Самый простой способ же.
Если в Сотруднике есть реквизит Организация и в вашем документе тоже есть реквизит Организация, то для элемента Сотрудник (в табличной части вашего документа) устанавливаем связь параметров выбора и ничего не нужно дописывать:
Если в Сотруднике есть реквизит Организация и в вашем документе тоже есть реквизит Организация, то для элемента Сотрудник (в табличной части вашего документа) устанавливаем связь параметров выбора и ничего не нужно дописывать:
Прикрепленные файлы:

В форме выбора, в динамическом списке определиться с реквизитом, для которого будет устанавливаться отбор по параметру формы при открытии дальше примерно так, на примере формы выбора сотрудников с отбором по организации документа.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//Параметры.Отбор.Родитель ;
//Список.Отбор ;
Если Параметры.Отбор.количество()>0 Тогда
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель"); // номер
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
ЭлементОтбора.ПравоеЗначение = Параметры.Отбор.Родитель; // "000000001";
КонецЕсли;
// ЭтотОбъект
КонецПроцедуры
ПоказатьРежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
мне это нужно было установить! и заработало
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот