Универсальный ввод значений

25.04.25

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

Универсальная форма для ввода нескольких значений различных типов, заполнения структур, соответствий или массивов.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Универсальный ввод значений
.epf 11,72Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Введение

Иногда требуется от пользователя интерактивно ввести несколько значений при выполнении какой-либо операции, обычно для этого создается специальная форма ввода как альтернатива последовательного вызова ПоказатьВводЗначения подобных функций. Если это требуется сделать из общей команды - то создается общая форма. Раньше с этим мирился, хотя идея создать универсальную форму ввода периодически посещала. При разработке самописной конфигурации столкнулся с необходимостью заполнения структур в разных местах программы, причем состав структур и типы значений заранее неизвестны. Ну вот и пришло время для осуществления идеи.

 

Функционал

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

 

Инструкция

Использование формы

Форма поставляется во внешней обработке. Для ее использования можно включить обработку в конфигурацию/расширение или копированием/вставкой перенести форму из внешней обработки в нужный объект конфигурации или в общие формы. Для вызова формы нужно передать ей коллекцию со значениями и определить обработчик закрытия формы - в него будет возвращен результат и при необходимости определенные разработчиком дополнительные параметры. В самом простом варианте заголовок элемента формы соответствует ключу элемента коллекции (для массива будет использован индекс), а тип берется из значения. В примере имена ключей названы так для наглядности и с типом значения никак не связанны.

&НаКлиенте
Процедура Протестировать(Команда)
	Данные = Новый Структура;
	Данные.Вставить("Строка", "");
	Данные.Вставить("Число", 0);
	Данные.Вставить("Булево", Ложь);
	Данные.Вставить("Дата", '20250101');
	Данные.Вставить("Период", Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц));
	Данные.Вставить("Произвольный", Неопределено);// Произвольный тип
	
	ПараметрыОткрытия = Новый Структура("Заголовок, Данные", "Тестовое заполнение", Данные);
	ОписаниеОповещения = Новый ОписаниеОповещения("ПолучитьРезультат", ЭтотОбъект);
	//            vvvvvvvvvv Зависит от расположения формы
	ОткрытьФорму("ОбщаяФорма.ВводЗначений", ПараметрыОткрытия,,,,, ОписаниеОповещения);
КонецПроцедуры

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

Если передали заполненное значение - то оно используется как значение по умолчанию.

Для использования ссылочного типа нужно передать пустую или рабочую ссылку. Естественно, в этом случае значение должно быть возвращено с сервера или передаваемая структура должна быть заполнена на сервере.

Если нужен заголовок элемента "не в стиле переменных 1С", то передавать форме можно и соответствие или дополнительно указать заголовок.

 

 

 

Указание описания типов и свойств элементов

Свойства элементов формы задаются дополнительной коллекцией с одноименными ключами.

	Свойства = Новый Соответствие;
	Свойства.Вставить("Строка", Новый Структура("Заголовок, ПроверкаЗаполнения, Подсказка, ТипЗначения",
				"ФИО", Истина, "В формате 'Фамилия И.О.'",
				Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(35))));
	Свойства.Вставить("Число", Новый Структура("Заголовок, ПроверкаЗаполнения", "Табельный №", Истина));
	Свойства.Вставить("Булево", Новый Структура("Заголовок", "Вахта"));
	Свойства.Вставить("Дата", Новый Структура("Заголовок, ТипЗначения", "Дата рождения",
				Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Дата))));
	Свойства.Вставить("Произвольный", Новый Структура("Заголовок, ТипЗначения, МногострочныйРежим",
				"Комментарий", Новый ОписаниеТипов("Строка"), Истина));
	
	ПараметрыОткрытия = Новый Структура("Заголовок, Данные, Свойства",
				 "Тестовое заполнение", Данные, Свойства);

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

Передавать свойства можно и в структуре, но тогда в передаваемых данных не должно быть соответствий с ключами "не в стиле переменных 1С" и массивов.

Так же имеется некоторое ограничение на свойства элементов: указать можно только свойства, значения которых соответствуют простым типам. Иначе получаем исключение по отсутствию отображения типа, несмотря на то что он доступен и на клиенте и на сервере. Обойти ограничение можно если заполнить такие свойства на сервере и поместить полученное соответствие во временное хранилище, а форме передать его адрес.

 

 

Группировка и прочие украшательства

Форма поддерживает вложенные друг в друга коллекции и автоматически их группирует для удобства. Есть ограничение: ключи должны быть уникальными, даже если находятся на разных уровнях вложенности. При задании свойств вложенность повторять не нужно. Для изменения свойств основной группы используется ключ "__root_group__". Для обхода ограничений отображения типа будем формировать список свойств на сервере.

&НаКлиенте
Процедура Протестировать(Команда)
	Основное = Новый Структура;
	Основное.Вставить("Наименование", "");
	Основное.Вставить("Код", 0);
	Основное.Вставить("ДатаРождения", Неопределено);
	Основное.Вставить("Период", Новый СтандартныйПериод(ВариантСтандартногоПериода.ЭтотМесяц));
	Основное.Вставить("Комментарий", "");
	
	ДниНедели = Новый Массив;
	ДниНедели.Добавить(Истина);
	ДниНедели.Добавить(Истина);
	ДниНедели.Добавить(Истина);
	ДниНедели.Добавить(Истина);
	ДниНедели.Добавить(Истина);
	ДниНедели.Добавить(Ложь);
	ДниНедели.Добавить(Ложь);
	
	График = Новый Структура;
	График.Вставить("Вахта", Ложь);
	График.Вставить("Режим", "1/1");
	График.Вставить("РабочиеДни", ДниНедели);
	
	ПрочийМассив = Новый Массив;
	ПрочийМассив.Добавить("Стр");
	ПрочийМассив.Добавить("3,14");
	ПрочийМассив.Добавить(Новый Структура("Ст1, Ст2"));
	ПрочийМассив.Добавить(Новый Структура("Ст3, Ст4"));
	
	Прочее = Новый Соответствие;
	Прочее.Вставить("Цвет", Новый Цвет);
	Прочее.Вставить("Шрифт", Новый Шрифт);
	Прочее.Вставить("Свернутый массив", ПрочийМассив);
	
	Данные = Новый Структура;
	Данные.Вставить("Основное", Основное);
	Данные.Вставить("График", График);
	Данные.Вставить("Прочее", Прочее);
	
	ПараметрыОткрытия = Новый Структура("Заголовок, Данные, Свойства",
			 "Тестовое заполнение", Данные, ПолучитьСвойства());
	ОписаниеОповещения = Новый ОписаниеОповещения("ПолучитьРезультат", ЭтотОбъект);
	ОткрытьФорму("ВнешняяОбработка.УниверсальныйВводЗначений.Форма.ВводЗначений", ПараметрыОткрытия,,,,, ОписаниеОповещения);
КонецПроцедуры

&НаСервере
Функция ПолучитьСвойства()
  Свойства = Новый Соответствие;
  Свойства.Вставить("__root_group__", Новый Структура("Группировка", ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда));
  Свойства.Вставить("Основное", Новый Структура("Отображение, ОтображатьЗаголовок", ОтображениеОбычнойГруппы.Нет, Ложь));
  Свойства.Вставить("Наименование", Новый Структура("Заголовок, ПроверкаЗаполнения, Подсказка, ТипЗначения",
			"ФИО", Истина, "В формате 'Фамилия И.О.'",
			Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(35))));
  Свойства.Вставить("Код", Новый Структура("Заголовок, ПроверкаЗаполнения", "Табельный №", Истина));
  Свойства.Вставить("Вахта", Новый Структура("Заголовок, Вид", "Вахта", ВидПоляФормы.ПолеФлажка));
  Свойства.Вставить("ДатаРождения", Новый Структура("Заголовок, ТипЗначения", "Дата рождения",
			Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Дата))));
  Свойства.Вставить("Комментарий", Новый Структура("Заголовок, ТипЗначения, МногострочныйРежим", "Комментарий",
			Новый ОписаниеТипов("Строка"), Истина));
  Свойства.Вставить("РабочиеДни", Новый Структура("Заголовок", "Рабочие дни"));
  Свойства.Вставить("РабочиеДни[0]", Новый Структура("Заголовок, Вид", "Пн.", ВидПоляФормы.ПолеФлажка));
  Свойства.Вставить("РабочиеДни[1]", Новый Структура("Заголовок, Вид", "Вт.", ВидПоляФормы.ПолеФлажка));
  Свойства.Вставить("РабочиеДни[2]", Новый Структура("Заголовок, Вид", "Ср.", ВидПоляФормы.ПолеФлажка));
  Свойства.Вставить("РабочиеДни[3]", Новый Структура("Заголовок, Вид", "Чт.", ВидПоляФормы.ПолеФлажка));
  Свойства.Вставить("РабочиеДни[4]", Новый Структура("Заголовок, Вид", "Пт.", ВидПоляФормы.ПолеФлажка));
  Свойства.Вставить("РабочиеДни[5]", Новый Структура("Заголовок, Вид", "Сб.", ВидПоляФормы.ПолеФлажка));
  Свойства.Вставить("РабочиеДни[6]", Новый Структура("Заголовок, Вид", "Вс.", ВидПоляФормы.ПолеФлажка));
	
  Свойства.Вставить("Свернутый массив", Новый Структура("Поведение, Свернута, Заголовок, ЗаголовокСвернутогоОтображения",
			ПоведениеОбычнойГруппы.Свертываемая, Истина, "[-] Свернутый массив", "[+] Свернутый массив"));
  Список = Новый СписокЗначений;
  Список.Добавить("1/1");
  Список.Добавить("2/2");
  Список.Добавить("2/3");
  Свойства.Вставить("Режим", Новый Структура("РежимВыбораИзСписка, СписокВыбора", Истина, Список));
	
  Возврат ПоместитьВоВременноеХранилище(Свойства);
КонецФункции

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.174.30

обработка ввод значений интерфейс

См. также

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

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

9600 руб.

27.03.2025    990    3    5    

8

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

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

6000 руб.

14.01.2016    56264    19    25    

45

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

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

2400 руб.

29.06.2020    20496    30    6    

46

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

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

6000 руб.

16.01.2015    64609    45    60    

83

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

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

20.08.2024    27971    mrXoxot    44    

133

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

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

27.05.2024    14827    smielka    37    

105

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

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

27.12.2023    19228    1250    elcoan    53    

128

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

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

3 стартмани

10.04.2023    13544    172    acces969    31    

130
Оставьте свое сообщение