Программное добавление реквизитов-картинок на управляемую форму

1. frkbvfnjh 787 11.12.18 14:52 Сейчас в теме
Доброго времени суток. Просьба помочь, люди добрые... Может кто нибудь привести пример как программно на управляемую форму добавить неограниченное количество реквизитов, для отображения картинок. К примеру, в элементе справочника в табличной части хранятся картинки. На фоме элемента есть группа в виде вкладки. В эту вкладку нужно вывести все картинки, количество картинок заранее не известно, расположение картинок горизонтальное (что бы появился скроль для перемотки). Заранее спасибо!
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 11.12.18 15:10 Сейчас в теме
Принцип такой: Помещаете картинки во временное хранилище. Создаёте строковые реквизиты формы, в которые передаёте адреса картинок во временном хранилище. На форме создаёте элементы, связанные с этими реквизитами — поля с видом Поле картинки. Но я бы сделал через таблицу формы с колонкой, в которой будут выводиться картинки.
3. frkbvfnjh 787 12.12.18 06:15 Сейчас в теме
(2) А как мне добавить реквизит на форму?
Сейчас пишу так, но говорит, что ти не определен "ПолеКартинки":

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Для Каждого СтрокаТабЧасти Из Объект.Картинки Цикл 
		 ИмяРеквизита = "Картинка" + СтрокаТабЧасти.НомерСтроки;
	     Элемент = ЭтаФорма.Элементы.Добавить(ИмяРеквизита, Тип("ПолеКартинки"), Элементы.СтраницаПросмотрКартинок);
	     Элемент.Вид = ВидПоляФормы.ПолеКартинки;
		 
	КонецЦикла;
КонецПроцедуры
Показать
4. frkbvfnjh 787 12.12.18 06:58 Сейчас в теме
Все, разобрался, всем спасибо!
5. frkbvfnjh 787 12.12.18 06:59 Сейчас в теме
Кому интересно:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Для Каждого СтрокаТабЧасти Из Объект.Картинки Цикл
		Картинка = ОбменДаннымиСервер.ПолучитьКартинку(СтрокаТабЧасти.ИдентификаторКартинки);
		Если ТипЗнч(Картинка) = Тип("Картинка") Тогда
			ИмяРеквизита = "Картинка" + СтрокаТабЧасти.НомерСтроки;
			
			ДобавляемыеРеквизиты = Новый Массив;
			МассивТипов = Новый Массив;
			МассивТипов.Добавить(Тип("Строка"));
			Реквизит = Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов(МассивТипов), , , Истина);
			ДобавляемыеРеквизиты.Добавить(Реквизит);
			ИзменитьРеквизиты(ДобавляемыеРеквизиты);
			
			ЭлементФормы = Элементы.Добавить(ИмяРеквизита, Тип("ПолеФормы"), Элементы.СтраницаПросмотрКартинок);
			ЭлементФормы.ПутьКДанным = ИмяРеквизита;
			ЭлементФормы.Вид = ВидПоляФормы.ПолеКартинки; //ВидПоляФормы.ПолеВвода;
			ЭлементФормы.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
			
			ЭтаФорма[ИмяРеквизита] = ПоместитьВоВременноеХранилище(Картинка);
		КонецЕсли;
		
	КонецЦикла;
КонецПроцедуры
Показать


Замечания приветствуются!
starovton; GonziK_KIV; user591389_aska_rabota; +3 Ответить
6. SiAl 76 20.11.20 06:23 Сейчас в теме
(5)
ИмяРеквизита = "Картинка" + СтрокаТабЧасти.НомерСтроки;

Как только номер картинки станет больше 999, так сразу выскочит ошибка. Все числа, которые используются в именах объектов, ВСЕГДА надо форматировать к виду без разделителей разрядов и без дробной части.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот