|
Список выбора типа данных для реквизита документа. УФ. | ☑ | ||
---|---|---|---|---|
0
Wirtuozzz
17.05.16
✎
14:01
|
Форумчане добрый день.
Есть реквизит документа составного типа. Реквизит может принимать значение, как некоторых документов, так и справочников. Требуется добавить в форму выбора типа (при выборе реквизита) еще одно значение, назовем его «ФиксированноеЗначениеРеквизита», при выборе этого значения, оно должно подставляться в реквизит. Я правильно понимаю, что мне надо при НачалоВыбора реквизита самому собрать видимый пользователю список доступных значений, а в процедуре ОбработкаВыбора реквизита написать код, который присвоит моему реквизиту выбранное фиксированное значение, а для каждого ссылочного типа, прописать, что будет открываться список выбора того или иного типа ? Если нет, прошу поправить меня. Всем спасибо! ps Формы управляемые. |
|||
1
aleks_default
17.05.16
✎
14:18
|
Да, надо эмулировать самому форму выбора типа.
Я делал через ВыбратьЭлемент() |
|||
2
Wirtuozzz
17.05.16
✎
14:23
|
(1) Можно пример кода или подсказку что там указывать когда добавляешь в список значений значения?
|
|||
3
aleks_default
17.05.16
✎
14:31
|
&НаКлиенте
Процедура ПредметИскаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) Отказ = Истина; СписокТиповДокументов = ПолучитьСписокТиповДокумента(); ВыбТип = СписокТиповДокументов.ВыбратьЭлемент("Выберите тип документа!"); Если ВыбТип<>Неопределено тогда ИмяДокумента = ПолучитьИмяДокументаПоТипу(ВыбТип.Значение); Отбор = Новый Структура("Организация,Контрагент",Объект.Организация,Объект.Контрагент); ПараметрыФормы = Новый Структура("Отбор",Отбор); ОткрытьФорму("Документ."+ИмяДокумента+".ФормаВыбора",ПараметрыФормы,Элемент); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьСписокТиповДокумента() СписокТиповДокументов = Новый СписокЗначений; СписокТиповДокументов.ЗагрузитьЗначения(Метаданные.Документы.СудебныйИск.ТабличныеЧасти.ПредметИска.Реквизиты.Документ.Тип.Типы()); Возврат СписокТиповДокументов; КонецФункции &НаСервереБезКонтекста Функция ПолучитьИмяДокументаПоТипу(Тип) Возврат Метаданные.НайтиПоТипу(Тип).Имя; КонецФункции |
|||
4
aleks_default
17.05.16
✎
14:32
|
Тут немного другая ситуация. Здесь форма выбора типа открывается при начале добавления строки в таб. части.
|
|||
5
Wirtuozzz
17.05.16
✎
14:42
|
Спасибо большое добрый человек! Спасибо!
|
|||
6
Wirtuozzz
17.05.16
✎
14:59
|
(3) какой четкий код написан! Класс, прямо супер!
|
|||
7
Wirtuozzz
17.05.16
✎
16:42
|
Может кому пригодится и он ищет подобное без модальности, то
&НаКлиенте Процедура ПредметНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; СписокВыбора = ПолучитьСписокВыбора(); СписокВыбора.ПоказатьВыборЭлемента(Новый ОписаниеОповещения("ОработатьРезультатВыгрузки", ЭтотОбъект, ),"Выберите тип данных",); КонецПроцедуры &НаКлиенте Процедура ОработатьРезультатВыгрузки(ВыбранныйЭлемент,ДополнительныеПараметры) Экспорт Если ВыбранныйЭлемент = Неопределено Тогда Возврат; КонецЕсли; Если ВыбранныйЭлемент.Значение = Тип("Строка") Тогда Если ВыбранныйЭлемент.Представление = "График погашения" Тогда УстановитьЗначениеРевквизитаНаСервере(ВыбранныйЭлемент.Представление); ЭтаФорма.Модифицированность = Истина; КонецЕсли; ИначеЕсли ВыбранныйЭлемент.Значение = Тип("СправочникСсылка.МаркетинговыеМероприятия") ИЛИ ВыбранныйЭлемент.Значение = Тип("СправочникСсылка.Проекты") ИЛИ ВыбранныйЭлемент.Значение = Тип("СправочникСсылка.СделкиСКлиентами") Тогда ИмяОбъекта = ПолучитьИмяПоТипу(ВыбранныйЭлемент.Значение); Отбор = Новый Структура(); ПараметрыФормы = Новый Структура("Отбор",Отбор); ОткрытьФорму("Справочник."+ИмяОбъекта+".ФормаВыбора",ПараметрыФормы,Элементы.Предмет); ИначеЕсли ВыбранныйЭлемент.Значение = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее") ИЛИ ВыбранныйЭлемент.Значение = Тип("ДокументСсылка.ЗапланированноеВзаимодействие") ИЛИ ВыбранныйЭлемент.Значение = Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее") ИЛИ ВыбранныйЭлемент.Значение = Тип("ДокументСсылка.ТелефонныйЗвонок") ИЛИ ВыбранныйЭлемент.Значение = Тип("ДокументСсылка.Встреча") Тогда ИмяОбъекта = ПолучитьИмяПоТипу(ВыбранныйЭлемент.Значение); Отбор = Новый Структура(); ПараметрыФормы = Новый Структура("Отбор",Отбор); ОткрытьФорму("Документ."+ИмяОбъекта+".ФормаВыбора",ПараметрыФормы,Элементы.Предмет); КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьСписокВыбора() СписокВыбора = Новый СписокЗначений; СписокВыбора.Добавить(Тип("Строка"), "График погашения"); СписокВыбора.Добавить(Тип("СправочникСсылка.МаркетинговыеМероприятия"),"Маркетинговые мероприятия"); СписокВыбора.Добавить(Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее"), "Электронное письмо исходящее"); СписокВыбора.Добавить(Тип("ДокументСсылка.ЗапланированноеВзаимодействие"),"Запланированное взаимодействие"); СписокВыбора.Добавить(Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее"), "Электронное письмо входящее"); СписокВыбора.Добавить(Тип("ДокументСсылка.ТелефонныйЗвонок"),"Телефонный звонок"); СписокВыбора.Добавить(Тип("ДокументСсылка.Встреча"),"Встреча"); СписокВыбора.Добавить(Тип("СправочникСсылка.СделкиСКлиентами"),"Сделки с клиентами"); СписокВыбора.Добавить(Тип("СправочникСсылка.Проекты"), "Проекты"); Возврат СписокВыбора; КонецФункции &НаСервере Функция ПолучитьИмяПоТипу(Тип) Возврат Метаданные.НайтиПоТипу(Тип).Имя; КонецФункции &НаСервере Процедура УстановитьЗначениеРевквизитаНаСервере(Значение) Объект.Предмет = ""; Объект.Предмет = Значение; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |