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

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 8.3.14 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    49669    28    22    

39

Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

5160 руб.

29.06.2020    22492    32    6    

50

Работа с интерфейсом Программист 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

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

5040 руб.

06.10.2020    12516    8    8    

14

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

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

20.08.2024    41508    mrXoxot    44    

136

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

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    24343    smielka    38    

111

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

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

27.12.2023    22276    1320    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    15905    178    acces969    31    

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

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

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

Могу ещё накидать замечаний, но недосуг.
5. Megaiff 21.02.20 00:02 Сейчас в теме
6. DrAku1a 1775 24.02.20 14:59 Сейчас в теме
Нормально всё написано. Но претензия к другому- название "Свой диалог выбора типа значения" (статья то о другом, здесь сам диалог выбора типа не заменяется). Лучше назовите "Предустановка типа для составного реквизита", или как-то так.
SagittariusA; Восьмой; kabantus; EvgeTrofi; shalupov61; rpgshnik; +6 Ответить
7. user1662444 21.06.24 19:19 Сейчас в теме
Добрый вечер! Не подскажите, как сделать тоже самое только для поля в Таблице значений на форме?
8. user1458640 23.12.24 17:18 Сейчас в теме
(7) Так тоже самое, только элемент тз будет
Для отправки сообщения требуется регистрация/авторизация