Здравствуйте. В обычной форме документа список выбора подразделения происходит вот таким образом (код приложила). У подразделения есть реквизит - тип подразделения, в данном случае нужно чтобы он был равен значению перечисления (Перечисление.ТипПодразделения.СубПодряд). Выбрала это значение в запросе, но при нажатии кнопки открываются все равно все подразделения. Как это исправить?
Если Подразделение = ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновноеПодразделение")
Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НастройкиРабочихМест.Значение КАК Значение,
| Подразделения.Ссылка КАК Ссылка,
| НастройкиРабочихМест.ОбъектНастройки КАК ОбъектНастройки
|ИЗ
| РегистрСведений.НастройкиРабочихМест КАК НастройкиРабочихМест
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Подразделения КАК Подразделения
| ПО НастройкиРабочихМест.Значение = Подразделения.Родитель
|ГДЕ
| (НастройкиРабочихМест.ОбъектНастройки = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеОформленияНаГру ппу)
| ИЛИ НастройкиРабочихМест.ОбъектНастройки = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеВыполненияУслуг НаГруппу)
| И (НастройкиРабочихМест.Пользователь = &Пользователь
| ИЛИ НастройкиРабочихМест.Пользователь В (&Группа))
| И НЕ НастройкиРабочихМест.Значение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка))
| И НастройкиРабочихМест.Значение.ТипПодразделения = ЗНАЧЕНИЕ(Перечисление.ТипПодразделения.СубПодряд)
|ИТОГИ ПО
| ОбъектНастройки,
| НастройкиРабочихМест.Значение.ТипПодразделения КАК ТипПодразделения";
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
Запрос.УстановитьПараметр("Группа", ПараметрыСеанса.ГруппыТекущегоПользователя);
Результат = Запрос.Выполнить();
РезультатДерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для каждого Строка1гоУровня из РезультатДерево.Строки Цикл
Таблица = Строка1гоУровня.Строки;
Если Строка1гоУровня.ОбъектНастройки = ПланыВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеВыполненияУслуг НаГруппу Тогда
ЭлементыФормы.ПодразделениеВыполненияУслуги.Доступность = Истина;
ЭлементыФормы.ПодразделениеВыполненияУслуги.КнопкаСпискаВыбора = Истина;
ЭлементыФормы.ПодразделениеВыполненияУслуги.СписокВыбора.ЗагрузитьЗначения(Таблица.ВыгрузитьКолонку("Ссылка"));
ЭлементыФормы.ПодразделениеВыполненияУслуги.КнопкаВыбора = Ложь;
ьЗначения(Таблица.ВыгрузитьКолонку("Ссылка"));
ЭлементыФормы.ПодразделениеОформленияИнтернетЗаказа.КнопкаВыбора = Ложь
КонецЕсли;
Если Подразделение = ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновноеПодразделение")
Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НастройкиРабочихМест.Значение КАК Значение,
| Подразделения.Ссылка КАК Ссылка,
| НастройкиРабочихМест.ОбъектНастройки КАК ОбъектНастройки
|ИЗ
| РегистрСведений.НастройкиРабочихМест КАК НастройкиРабочихМест
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Подразделения КАК Подразделения
| ПО НастройкиРабочихМест.Значение = Подразделения.Родитель
|ГДЕ
| (НастройкиРабочихМест.ОбъектНастройки = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеОформленияНаГру
| ИЛИ НастройкиРабочихМест.ОбъектНастройки = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеВыполненияУслуг
| И (НастройкиРабочихМест.Пользователь = &Пользователь
| ИЛИ НастройкиРабочихМест.Пользователь В (&Группа))
| И НЕ НастройкиРабочихМест.Значение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка))
| И НастройкиРабочихМест.Значение.ТипПодразделения = ЗНАЧЕНИЕ(Перечисление.ТипПодразделения.СубПодряд)
|ИТОГИ ПО
| ОбъектНастройки,
| НастройкиРабочихМест.Значение.ТипПодразделения КАК ТипПодразделения";
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
Запрос.УстановитьПараметр("Группа", ПараметрыСеанса.ГруппыТекущегоПользователя);
Результат = Запрос.Выполнить();
РезультатДерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для каждого Строка1гоУровня из РезультатДерево.Строки Цикл
Таблица = Строка1гоУровня.Строки;
Если Строка1гоУровня.ОбъектНастройки = ПланыВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеВыполненияУслуг
ЭлементыФормы.ПодразделениеВыполненияУслуги.Доступность = Истина;
ЭлементыФормы.ПодразделениеВыполненияУслуги.КнопкаСпискаВыбора = Истина;
ЭлементыФормы.ПодразделениеВыполненияУслуги.СписокВыбора.ЗагрузитьЗначения(Таблица.ВыгрузитьКолонку("Ссылка"));
ЭлементыФормы.ПодразделениеВыполненияУслуги.КнопкаВыбора = Ложь;
ьЗначения(Таблица.ВыгрузитьКолонку("Ссылка"));
ЭлементыФормы.ПодразделениеОформленияИнтернетЗаказа.КнопкаВыбора = Ложь
КонецЕсли;
По теме из базы знаний
- Использование отчета как печатной формы документа
- Отправка ссылки на документ в обработку вызовом из формы документа, управляемая и обычная формы
- Печатная форма для документа "Списание запасов". УНФ 1.6
- Приобретение товаров (внешняя печатная форма) для документа Приобретение товаров и услуг
- [Расширение] Контроль печатных форм документов для УТ 11/КА 2
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
попробуйте так
Если Подразделение = ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновноеПодразделение") Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НастройкиРабочихМест.Значение КАК Значение,
| Подразделения.Ссылка КАК Ссылка,
| НастройкиРабочихМест.ОбъектНастройки КАК ОбъектНастройки
|ИЗ
| РегистрСведений.НастройкиРабочихМест КАК НастройкиРабочихМест
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Подразделения КАК Подразделения
| ПО НастройкиРабочихМест.Значение = Подразделения.Родитель
|ГДЕ
| (НастройкиРабочихМест.ОбъектНастройки = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеОформленияНаГру ппу)
| ИЛИ НастройкиРабочихМест.ОбъектНастройки = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеВыполненияУслуг НаГруппу)
| И (НастройкиРабочихМест.Пользователь = &Пользователь
| ИЛИ НастройкиРабочихМест.Пользователь В (&Группа))
| И НЕ НастройкиРабочихМест.Значение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка))
| И НастройкиРабочихМест.Значение.ТипПодразделения = ЗНАЧЕНИЕ(Перечисление.ТипПодразделения.СубПодряд)";
Запрос.УстановитьПараметр("Пользователь", Пользователи.ТекущийПользователь());
Запрос.УстановитьПараметр("Группа", ПараметрыСеанса.ГруппыТекущегоПользователя);
Результат = Запрос.Выполнить().Выгрузить();
Парам=Новый Структура;
Парам.Вставить("ОбъектНастройки",ПланыВидовХарактеристик.НастройкиРабочихМест.РазрешитьРедактированиеРеквизитаПодразделениеВыполненияУслуг НаГруппу);
ТзНужныхЗначений=Результат.Скопировать(Парам);
Если ТзНужныхЗначений.Количество()>0 Тогда
ЭлементыФормы.ПодразделениеВыполненияУслуги.РежимВыбораИзСписка = Истина;
ЭлементыФормы.ПодразделениеВыполненияУслуги.Доступность = Истина;
ЭлементыФормы.ПодразделениеВыполненияУслуги.КнопкаСпискаВыбора = Истина;
Для Каждого СтрСсылка из ТзНужныхЗначений цикл
ЭлементыФормы.ПодразделениеВыполненияУслуги.СписокВыбора.ДобавитьЗначение(СтрСсылка.Ссылка);
КонецЦикла;
ЭлементыФормы.ПодразделениеВыполненияУслуги.КнопкаВыбора = Ложь;
ЭлементыФормы.ПодразделениеОформленияИнтернетЗаказа.КнопкаВыбора = Ложь
КонецЕсли;
КонецЕсли;
Показать
и да только заметил у вас в конце вот такое есть
ЭлементыФормы.ПодразделениеВыполненияУслуги.КнопкаВыбора = Ложь;
ЭлементыФормы.ПодразделениеОформленияИнтернетЗаказа.КнопкаВыбора = Ложь;
Проверьте, тот ли элемент смотрите, для которого устанавливается список
ЭлементыФормы.ПодразделениеВыполненияУслуги.КнопкаВыбора = Ложь;
ЭлементыФормы.ПодразделениеОформленияИнтернетЗаказа.КнопкаВыбора = Ложь;
Проверьте, тот ли элемент смотрите, для которого устанавливается список
Воспользуйтесь отладчиком, проверьте все ли свойства элемента формы устанавливаются корректно.
Если да, то создайте свой обработчик "НачалоВыбора" (именно его а не "НачалоВыбораИзСписка" т.к. с какой-то версии платформы 8.3 он более не вызывается и существует только для совместимости со старыми версиями) и проверьте значения свойств при входе в этот обработчик
Если да, то создайте свой обработчик "НачалоВыбора" (именно его а не "НачалоВыбораИзСписка" т.к. с какой-то версии платформы 8.3 он более не вызывается и существует только для совместимости со старыми версиями) и проверьте значения свойств при входе в этот обработчик
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот