- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
Процедура ПараметрНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка=Ложь;
ПараметрВладелец=Справочники.ПараметрыНоменклатуры.ПустаяСсылка();
ТипМетаданных = Метаданные.НайтиПоТипу(ТипЗнч(Элемент.Значение));
ОткрываемаяФорма = ПолучитьФорму(ТипМетаданных.ПолноеИмя()+".ФормаВыбора");
Отборы = Новый Структура("ТипПараметра,Подчинен",ВидНоменклатуры[Элемент.Имя],ПараметрВладелец);
Для Каждого ЭлементСтруктуры из Отборы Цикл
ЭлементОтбора = ОткрываемаяФорма.Отбор.Найти(ЭлементСтруктуры.Ключ);
Если Не ЭлементОтбора = Неопределено Тогда
ЭлементОтбора.Установить(ЭлементСтруктуры.Значение);
КонецЕсли;
КонецЦикла;
ОткрываемаяФорма.НачальноеЗначениеВыбора = Элемент.Значение;
ОткрываемаяФорма.ОткрытьМодально();
ЭтотОбъект[Элемент.Имя] = ОткрываемаяФорма.ТекущийЭлемент.ТекущаяСтрока;
ПараметрПриИзменении(Элемент);
КонецПроцедуры
Процедура НачалоВыбора в конфе одного из клиентов. Что-то смущает, но не могу понять что.
nixel 02.12.2013 20:37 # +1
CHSN 07.02.2014 15:07 # +1
"ПараметрВладелец=Справочники.ПараметрыН оменклатуры.ПустаяСсылка();"
И кругом ещё работа с метаданными идёт, очевидно, кто-то хотел сделать, что-то мегауниверсальное
nixel 07.02.2014 15:15 # 0
nixel 07.02.2014 15:18 # 0
use managed forms, Luke!
mrbus 11.02.2014 18:24 # 0
Чем не устроило Элемент.Значение = , тем более, что двумя строками выше устроило.
= ОткрываемаяФорма.ТекущийЭлемент.ТекущаяС трока;
- ага, а если я закрою форму не двойным кликом по списку, а нажатием на "Закрыть" или "Ок" или еще что, то ТекущийЭлемент формы что будет? Разве есть у кнопки свойство ТекущаяСтрока? ПРАВИЛЬНО ТАК: Элемент.Значение = ОткрываемаяФорма.ОткрытьМодально();
mrbus 11.02.2014 18:25 # 0
- млин, а я вот взял и назвал свою форму выбора "ВормаФыбора". Всё, не откроется. Более правильным было бы обратиться к менеджеру за методом ПолучитьФормуВыбора() (напр. Справочники.ИмяСправочника.ПолучитьФорму Выбора()), но тут проблема в платформе: из метаданных получить менеджер не получится. Очень бы не помешал какой-нибудь метод типа ТипМетаданных.ПолучитьМенеджер(). А так придется пробегаться по видам (Справочник, Документ, планы там всякие), типа:
Если Метаданные.Справочники.Содержит(ТипМетад анных) тогда Справочники[ТипМетаданных.Имя].ПолучитьФормуВыбора()
ну и так далее.
ПараметрПриИзменении(Элемент); - насколько я помню, событие "при изменении" и так произойдет, несмотря на СтандартнаяОбработка = Ложь.
А вот цикл с отборами - грамотно сделано, легко дорабатывается при необходимости (нужно изменить только первую строку).
Исходя из этой смеси, делаю вывод, что возможно, прогромист повыдирал куски кода из других мест (тааак... вот здесь работает примерно так, как мне нужно.... скопипастю-ка я код). В пользу этого еще говорит тот факт, что в одних местах знак "равно" обернут пробелами с обоих сторон, а в других местах написан слитно.
guest 29.11.2016 08:39 # 0
AnalniyTerzatel 29.11.2016 22:49 # 0