Передача параметра из формы документа в форму выбора. 1С: 8.2, обычные формы
Установить принудительный отбор по номенклатуре в форме выбора при добавлении из определенного вида документа. В моем примере ограничение к номенклатуре только из документа Установка цен номенклатуры.
- Описание
- Подробнее
Описание
Организовано через принудительные отборы
1. Добавлен справочник группы доступа к номенклатуре, он добавлен реквизитом на форму справочника номенклатура.
2. Добавлен РС Группы доступа номенклатуры непереодический, независимый с двумя измерениями Пользователь, Группа доступа номенклатуры с соответствующими ссылками на эти справочники.
3. Добавлена роль ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры
4. В форме документа установка цен номенклатуры:
в обработчике ТаблицаЦенНоменклатураНачалоВыбора добавить код
Процедура ТаблицаЦенНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)
Если РольДоступна("ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры") тогда
Элемент.Подсказка = Элемент.Подсказка + "$QWERTY$" + ЗначениеВСтрокуВнутр(Ссылка);
КонецЕсли;
КонецПроцедуры(Если обработчик не будет срабатывать, необходимо в процедуру УстановитьНедостающиеПараметры() установить необходимые параметры номенклатуры, но это если срабатывать не будет, такое бывает очень редко).
5. В справочник Номенклатура, в форму выбора процедура ПриОткрытии
ЭлементУправления = ЭтаФорма.ВладелецФормы;
Если ТипЗнч(ЭлементУправления) = Тип("ПолеВвода") Тогда
Если Не ПустаяСтрока(ЭлементУправления.Подсказка) Тогда
ТекстПодсказки = ЭлементУправления.Подсказка;
ПозицияСсылки = Найти(ТекстПодсказки, "$QWERTY$");
Если ПозицияСсылки > 0 Тогда
ТекПользователь = ПараметрыСеанса.ТекущийПользователь;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГруппыДоступаНоменклатуры.ГруппаДоступаНоменклатуры КАК ГруппаДоступа
|ИЗ
| РегистрСведений.ГруппыДоступаНоменклатуры КАК ГруппыДоступаНоменклатуры
|ГДЕ
| ГруппыДоступаНоменклатуры.Пользователь = &ТекПользователь";
Запрос.УстановитьПараметр("ТекПользователь", ТекПользователь);
Результат = Запрос.Выполнить().Выгрузить();
МассивГрупп = Результат.ВыгрузитьКолонку("ГруппаДоступа");
СписокГрупп = Новый СписокЗначений;
Для Каждого Стр из МассивГрупп Цикл
СписокГрупп.Добавить(Стр);
КонецЦикла;
ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.ВидСравнения = ВидСравнения.ВСписке;
ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.Значение = СписокГрупп;
ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.Использование = Истина;
ЭлементыФормы.СправочникСписок.НастройкаОтбора.ГруппаДоступаНоменклатуры.Доступность = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;6. Заполнить справочник Группы доступа к номенклатуре, Номенклатура — указать группу в том реквизите который был добавлен, заполнить регистр сведений Группы доступа номенклатуры.
7. Добавить роль ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры пользователю, которому необходимо урезать права на просмотр номенклатуры.
На кнопку подбор аналогично. Детали описаны в файле, если кому некогда будет разбираться.
