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

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 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55303    17    23    

43

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

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63697    44    59    

82

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

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

2400 руб.

29.06.2020    19548    27    6    

42

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

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

1500 руб.

06.10.2020    10768    7    7    

11

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

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

20.08.2024    20815    mrXoxot    44    

128

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

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

27.05.2024    10301    smielka    37    

105

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

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

27.12.2023    17739    1223    elcoan    53    

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

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

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

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