Имеется самописная конфигурация. В конфигурации есть документы с формой списка
Для всех пользователей отображается поле отбора test1, а для пользователей с ролью test отображается только поле отбора test. Это поле имеет ссылку на справочник контрагентов.
В документе есть поле Кто платит. Пользователи с ролью test всегда будут выбирать только одного плательщика Компания.
Теперь сама проблема, нужно что бы когда пользователь переходит на список документов у него автоматически подставлялся в поле отбора test контрагент Компания.
Как это можно очень просто реализовать, я далек от 1С
kot488 @ Сегодня, 17:18
,
Событие Выбор для списка. Там прописываете обработчик.
Примерно так.
&НаСервере
Процедура СписокВыборНаСервере()
Контрагент = Справочники.Контрагенты.НайтиПоКоду("КодКонтрагента");
РеквизитПлательщик = Контрагент;
КонецПроцедуры
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СписокВыборНаСервере();
КонецПроцедуры
podcast @ Сегодня, 17:26
,
Такого события как Вы написали нет, вот что нашел похожее
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
&НаКлиенте
Процедура УстановитьПараметрыОтбораПлательщикПользователя()
ЭлементыОтбора = Список.Отбор.Элементы;
ЭлементыОтбора.Очистить();
Если Не Контрагент.Пустая() Тогда
ГруппаКомпоновкиОтбор = ЭлементыОтбора.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаКомпоновкиОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ЭлементОтбораКурьеркаОтправитель = ГруппаКомпоновкиОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКурьеркаОтправитель.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Плательщик");
ЭлементОтбораКурьеркаОтправитель.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКурьеркаОтправитель.Использование = Истина;
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = Контрагент;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если РольДоступна("Интерфейс_РабСтол_ПартнерыСД") Тогда
ОпределитьДоступностьПартнерам(ЭтаФорма)
КонецЕсли;
ДлиннаНомераДекларации = Метаданные.Документы.ДекларацияДоставкаТоваров.Реквизиты.НомерДекларации.Тип.КвалификаторыСтроки.Длина;
Организация = Пользователи.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОсновнаяОрганизация");
Если УправлениеДоступомКурьерскаяСлужба.ОграничиватьДоступКСуммамВДокументах() Тогда
ЭтаФорма.Элементы.СуммаДокумента.Видимость = Ложь;
ЭтаФорма.Элементы.Страховка.Видимость = Ложь;
ЭтаФорма.Элементы.СуммаДопУслуг.Видимость = Ложь;
КонецЕсли;
//Определяем что и для кого выводим
СписокВыборНаСервере();
КонецПроцедуры
Процедура СписокВыборНаСервере()
Контрагент = Справочники.Контрагенты.НайтиПоКоду("000002643");
РеквизитПлательщик = Контрагент;
КонецПроцедуры
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = Контрагент;
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = Справочники.Контрагенты.НайтиПоКоду("000002643");
Процедура УстановитьПараметрыОтбораПлательщикПользователя()
ЭлементыОтбора = Список.Отбор.Элементы;
ЭлементыОтбора.Очистить();
Если Не Контрагент.Пустая() Тогда
// Создадим группу компановки ИЛИ
ГруппаКомпоновкиОтбор = ЭлементыОтбора.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаКомпоновкиОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
//Отбор по отправителю
ЭлементОтбораКурьеркаОтправитель = ГруппаКомпоновкиОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКурьеркаОтправитель.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Плательщик");
ЭлементОтбораКурьеркаОтправитель.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКурьеркаОтправитель.Использование = Истина;
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = Справочники.Контрагенты.НайтиПоКоду("000002643");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПараметрыОтбораПлательщикПользователя()
ЭлементыОтбора = Список.Отбор.Элементы;
ЭлементыОтбора.Очистить();
Если Не Контрагент.Пустая() Тогда
// Создадим группу компановки ИЛИ
ГруппаКомпоновкиОтбор = ЭлементыОтбора.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаКомпоновкиОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
//Отбор по отправителю
ЭлементОтбораКурьеркаОтправитель = ГруппаКомпоновкиОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКурьеркаОтправитель.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Плательщик");
ЭлементОтбораКурьеркаОтправитель.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКурьеркаОтправитель.Использование = Истина;
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = Контрагент.НайтиПоКоду("000002643");
КонецЕсли;
КонецПроцедуры
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = НайтиКонтрагентСервер("000002643");
&НаСервереБезКонтекста
Функция НайтиКонтрагентСервер(Код)
Контрагент = Справочники.Контрагенты.НайтиПоКоду(Код);
Возврат Контрагент;
КонецФункции
Не вчитывался особо в тему, если что извините.
В УПП, например, есть общий модуль ОбщегоНазначенияКлиентСервер
в котором есть полезные процедуры и функции по отбору динамических списков.
Я например часто пользуюсь процедурой УстановитьЭлементОтбораДинамическогоСписка.
Может содрать от туда эти процедурки и будет Вам счастье по установке отборов.
&НаКлиенте
Процедура УстановитьПараметрыОтбораПлательщикПользователя()
ЭлементыОтбора = Список.Отбор.Элементы;
ЭлементыОтбора.Очистить();
Если Не Контрагент.Пустая() Тогда
// Создадим группу компановки ИЛИ
ГруппаКомпоновкиОтбор = ЭлементыОтбора.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаКомпоновкиОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
//Отбор по отправителю
ЭлементОтбораКурьеркаОтправитель = ГруппаКомпоновкиОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКурьеркаОтправитель.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Плательщик");
ЭлементОтбораКурьеркаОтправитель.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКурьеркаОтправитель.Использование = Истина;
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = НайтиКонтрагентСервер("000002643");
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция НайтиКонтрагентСервер(Код)
Контрагент = Справочники.Контрагенты.НайтиПоКоду(Код);
Возврат Контрагент;
КонецФункции
Vidocq05 @ Сегодня, 12:40
,
Убрал строку, ошибок никаких нет, не знаю для чего оно
Прописал еще вот что, и заработало
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(Организация) Тогда
УстановитьПараметрыОтбораПользователя();
КонецЕсли;
[b]УстановитьПараметрыОтбораПлательщикПользователя();[/b]
КонецПроцедуры
kot488 @ Сегодня, 13:33
,
А какой код здесь УстановитьПараметрыОтбораПользователя() ?
Процедура УстановитьПараметрыОтбораПользователя()
ЭлементыОтбора = Список.Отбор.Элементы;
ЭлементыОтбора.Очистить();
Если Не Организация.Пустая() Тогда
// Создадим группу компановки ИЛИ
ГруппаКомпоновкиОтбор = ЭлементыОтбора.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаКомпоновкиОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
//Отбор по отправителю
ЭлементОтбораКурьеркаОтправитель = ГруппаКомпоновкиОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКурьеркаОтправитель.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтправительСлужбаДоставки");
ЭлементОтбораКурьеркаОтправитель.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКурьеркаОтправитель.Использование = Истина;
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = Организация;
//Отбор по получателю
ЭлементОтбораКурьеркаОтправитель = ГруппаКомпоновкиОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКурьеркаОтправитель.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПолучательСлужбаДоставки");
ЭлементОтбораКурьеркаОтправитель.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораКурьеркаОтправитель.Использование = Истина;
ЭлементОтбораКурьеркаОтправитель.ПравоеЗначение = Организация;
КонецЕсли;
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua