Каталог решений - Передача параметра из формы документа в форму выбора. 1С: 8.2, обычные формы

Передача параметра из формы документа в форму выбора. 1С: 8.2, обычные формы

Передача параметра из формы документа в форму выбора. 1С: 8.2, обычные формы

В наличии

Установить принудительный отбор по номенклатуре в форме выбора при добавлении из определенного вида документа. В моем примере ограничение к номенклатуре только из документа Установка цен номенклатуры.

Категория:

Описание

Организовано через принудительные отборы

1. Добавлен справочник группы доступа к номенклатуре, он добавлен реквизитом на форму справочника номенклатура.

2. Добавлен РС Группы доступа номенклатуры непереодический, независимый с двумя измерениями Пользователь, Группа доступа номенклатуры с соответствующими ссылками на эти справочники.

3. Добавлена роль ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры

4. В форме документа установка цен номенклатуры:

в обработчике ТаблицаЦенНоменклатураНачалоВыбора добавить код

Процедура ТаблицаЦенНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)

                Если РольДоступна("ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры") тогда

                               Элемент.Подсказка = Элемент.Подсказка + "$QWERTY$" + ЗначениеВСтрокуВнутр(Ссылка);

                КонецЕсли;

КонецПроцедуры

(Если обработчик не будет срабатывать, необходимо в процедуру УстановитьНедостающиеПараметры() установить необходимые параметры номенклатуры, но это если срабатывать не будет, такое бывает очень редко).

5. В справочник Номенклатура, в форму выбора процедура ПриОткрытии

ЭлементУправления = ЭтаФорма.ВладелецФормы;

                Если ТипЗнч(ЭлементУправления) = Тип("ПолеВвода") Тогда

                               Если  Не ПустаяСтрока(ЭлементУправления.Подсказка) Тогда

                                               ТекстПодсказки = ЭлементУправления.Подсказка;

                                               ПозицияСсылки = Найти(ТекстПодсказки, "$QWERTY$");

                                               Если ПозицияСсылки > 0 Тогда

                                                               ТекПользователь = ПараметрыСеанса.ТекущийПользователь;

                                                              

                                                               Запрос = Новый Запрос;

                                                               Запрос.Текст =

                                                               "ВЫБРАТЬ

                                                               |             ГруппыДоступаНоменклатуры.ГруппаДоступаНоменклатуры КАК ГруппаДоступа

                                                               |ИЗ

                                                               |             РегистрСведений.ГруппыДоступаНоменклатуры КАК ГруппыДоступаНоменклатуры

                                                               |ГДЕ

                                                               |             ГруппыДоступаНоменклатуры.Пользователь = &ТекПользователь";

                                                              

                                                               Запрос.УстановитьПараметр("ТекПользователь", ТекПользователь);

                                                              

                                                               Результат = Запрос.Выполнить().Выгрузить();

                                                              

                                                               МассивГрупп = Результат.ВыгрузитьКолонку("ГруппаДоступа");

                                                              

                                                               СписокГрупп = Новый СписокЗначений;

                                                              

                                                               Для Каждого Стр из МассивГрупп Цикл

                                                                              СписокГрупп.Добавить(Стр);

                                                               КонецЦикла;

                                                              

                                                               ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.ВидСравнения = ВидСравнения.ВСписке;

                                                               ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.Значение = СписокГрупп;

                                                               ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.Использование = Истина;

                                                               ЭлементыФормы.СправочникСписок.НастройкаОтбора.ГруппаДоступаНоменклатуры.Доступность = Ложь;

                                               КонецЕсли;

                               КонецЕсли;

                КонецЕсли;

6. Заполнить справочник Группы доступа к номенклатуре, Номенклатура — указать группу в том реквизите который был добавлен, заполнить регистр сведений Группы доступа номенклатуры.

7. Добавить роль ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры пользователю, которому необходимо урезать права на просмотр номенклатуры.

На кнопку подбор  аналогично. Детали описаны в файле, если кому некогда будет разбираться.

has been added to your cart:
Оформление заказа