[Шпаргалка] Предустановка типа для составного реквизита

30.09.21

Разработка - Работа с интерфейсом

Для реквизита составного типа необходимо ограничить список выбора типов.

Добрый день, Коллеги!

Задача

Смоделируем задачу: необходимо ограничить список выбора типов поля формы до необходимого количества и определить тип по умолчанию.

Пример

Есть реквизит «Водитель», составной тип: СправочникСсылка.Пользователи, СправочникСсылка.ФизическиеЛица, СправочникСсылка.Сотрудники и Строка. Необходимо реализовать диалог выбора из списка типов с ограничением до двух: СправочникСсылка.Сотрудники и Строка.

Тестовый стенд

Конфигурация 1C:ERP 2.4.6.230

Платформа 8.3.12.1714

и

Конфигурация 1C:ERP 2.4.11.56

Платформа 8.3.15.1700

Решение

Реквизит формы «ВыборТипа» (тип: Булево) – хранит состояние вызова диалога выбора типа.

Реквизит формы «Водитель» содержит составной типа, описанный в примере, для его элемента формы «Водитель» необходимо установить свойство «КнопкаОчистки» в состояние «Истина» и определим события: НачалоВыбора и Очистка.

 
 Код модуля формы

 


&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ВыборТипа = ЛОЖЬ;
	
	//Определяем тип по умолчанию
	Элементы.Водитель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Сотрудники");
	
	//Если тип по умолчанию не нужен, можно использовать:
	//СброситьТипы();
	
КонецПроцедуры

&НаКлиенте
Процедура СброситьТипы()
	ВыборТипа = ИСТИНА;
	//++ это делается для того, чтобы появилась кнопочка "..." выбора типа :)
	ДоступныеТипы = Новый Массив;
	ДоступныеТипы.Добавить("Строка");
	ДоступныеТипы.Добавить("СправочникСсылка.Сотрудники");
	Элементы.Водитель.ОграничениеТипа = Новый ОписаниеТипов(ДоступныеТипы);
	//--
КонецПроцедуры

&НаКлиенте
Процедура ВодительОчистка(Элемент, СтандартнаяОбработка)
	СброситьТипы();
КонецПроцедуры

&НаКлиенте
Процедура ВодительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Если НЕ ЗначениеЗаполнено(Водитель) И ВыборТипа Тогда
		СтандартнаяОбработка = ЛОЖЬ;
		сзТипы = Новый СписокЗначений();
		сзТипы.Добавить(0,"Сотрудники");
		сзТипы.Добавить(1,"Строкой");
		ооВыборЗначенияТипа = Новый ОписаниеОповещения("ВыборЗначенияТипа",ЭтотОбъект);
		сзТипы.ПоказатьВыборЭлемента(
			ооВыборЗначенияТипа,	//Вызов процедуры оповещения
			"Выберите справочник",	//Заголовок диалогового окна выбора типа
			сзТипы[1]				//Первоначально позиционирование на значение выбора
			);
		ВыборТипа = ЛОЖЬ;
	КонецЕсли;		
	
КонецПроцедуры

&НаКлиенте
Процедура ВыборЗначенияТипа(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = Неопределено Тогда Возврат КонецЕсли;
	
	Если Результат.Значение = 0 Тогда	
		Элементы.Водитель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Сотрудники");
	ИначеЕсли Результат.Значение = 1 Тогда
		Элементы.Водитель.ОграничениеТипа = Новый ОписаниеТипов("Строка");
	КонецЕсли;	
	
КонецПроцедуры

 

Результат

 

Резюме

Использовать данный вариант диалога выбора типов можно не только при ограничении списка, но также при задании своего порядка. Пример:

 

Удачного кодинга!

Выбор типа значения значение типы элемент UX UI дизайн интерфейс

См. также

Управление дашбордами

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    17303    23    4    

37

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    11876    780    elcoan    47    

109

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    10347    157    acces969    31    

120

Модель состояния для MVC

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    4298    kalyaka    4    

31

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С. Также подсистему возможно использовать для ограничения доступа к реквизитам формы для определенных пользователей (или групп пользователей).

6000 руб.

18.01.2022    9175    1    2    

6

Программный интерфейс для доработки форм

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

25.11.2021    10191    AtamanovYS    19    

142
Отзывы
6. DrAku1a 1727 24.02.20 14:59 Сейчас в теме
Нормально всё написано. Но претензия к другому- название "Свой диалог выбора типа значения" (статья то о другом, здесь сам диалог выбора типа не заменяется). Лучше назовите "Предустановка типа для составного реквизита", или как-то так.
EvgeTrofi; shalupov61; rpgshnik; +3 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4752 18.02.20 11:05 Сейчас в теме
Следующая стадия - статьи на тему "как вывести сообщение пользователю" с тремя демо-роликами и 20 скриншотами)

Но даже такую примитивную задачу автор решил кривовато. Можно было проще и изящнее.
user1558998; user797130; +2 1 Ответить
2. rpgshnik 3728 18.02.20 11:06 Сейчас в теме
(1) Поделитесь изящным решением
3. Yashazz 4752 18.02.20 11:13 Сейчас в теме
(2) Одна тыща рублей и оно ваше)

Хотя если чисто теоретически... Во-первых, не забывайте в явном виде делать Поле=ОписТипа.ПривестиЗначение(), потому что Элементы.Поле.ОграничениеТипа это далеко не всё, у вас там может быть нетипизированная или неверно типизированная пустота, или мусор от предыдущего типа, и в работе формы выйдет лажа. Во-вторых, в значения списка выбора проще сразу пихать сами типы, а не числовые коды.
4. Yashazz 4752 18.02.20 11:20 Сейчас в теме
(2) А, и ещё: хардкодить допустимые типы в списке выбора - некомильфо. Их в ПриСозданииНаСервере надо было прочитать из метаданных, из типов реквизита (или из типизации реквизита формы, ежели он локальный), а дальше уже этот список кастомизировать. Иначе вы при изменени состава в метаданных запаритесь менять списки в модулях форм)

Могу ещё накидать замечаний, но недосуг.
5. Megaiff 21.02.20 00:02 Сейчас в теме
6. DrAku1a 1727 24.02.20 14:59 Сейчас в теме
Нормально всё написано. Но претензия к другому- название "Свой диалог выбора типа значения" (статья то о другом, здесь сам диалог выбора типа не заменяется). Лучше назовите "Предустановка типа для составного реквизита", или как-то так.
EvgeTrofi; shalupov61; rpgshnik; +3 Ответить
Оставьте свое сообщение