Типа динамический список в обычных формах

1. 27.12.16 15:45 Сейчас в теме
Ребята, я пытаюсь сделать динамический список в обычных формах. В форму списка справочника одно поле (а конкретно Владелец) будет браться из регистра сведений, ну т.е. оно изменяемое и мне именно его и нужно отображать зрителям. Я сделала так:
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
	
  ОтборВл = Новый Структура;
	
	Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
		
		ЗначениеКолонка = ОформлениеСтроки.Ячейки.Наименование.Текст;
		
		ОтборВл.Вставить("Скважина", Справочники.Скважина.НайтиПоНаименованию(ЗначениеКолонка));
		
 		РегВладелец = РегистрыСведений.ВладельцыСкважин.ПолучитьПоследнее(ТекущаяДата(), ОтборВл).Водозабор;
		Если РегВладелец <> Справочники.Водозабор.ПустаяСсылка() Тогда
			ОформлениеСтроки.Ячейки.Владелец.Значение = РегВладелец; 
		КонецЕсли; 
        				
	КонецЦикла;

 КонецПроцедуры
Показать

Но ругается, конечно, на то, что я пытаюсь ссылке присвоить значение. Но прикол в том, что список же будет меняется данным из регистра и применять ПолучитьОбъект(), чтобы насильно "засандалить" нового владельца не очень хочется, как быть в такой ситуации? Обычные формы.
Найденные решения
2. ice-net 20 27.12.16 20:37 Сейчас в теме
(1)
Совсем не айс..
1. что мешает добавить новую колонку и в нее записывать нужное значение? (будет 2 колонки, а при сильном желании, основную можно так же программно скрыть)
2. гораздо производительнее будет переписать алгоритм так, что бы в цикле запрос не фигурировал.

например:


Колонки = ЭлементыФормы.ИмяЭлементаСпискаЗначений.Колонки;
Колонка = Колонки.Добавить("Водозабор", , "Водозабор")"; //Добавляем новую
Колонки.Владелец.Видимость = ложь; //скрываем старую

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать т.Скважина, т.Водозабор ИЗ РегистрыСведений.ВладельцыСкважин.СрезПоследних(,Скважина В (&МассивСкважин) И Водозабор <> Значение(Справочники.Водозабор.ПустаяСсылка)) КАК т"; 
//Если не предполагается что в регистр записи могут попадать будущим числом - отбор по периоду можно не ставить.


Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
	
	МассивСкважин = новый Массив;
	
	Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
		МассивСкважин.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка);
	КонецЦикла;
	
	Запрос.УстановитьПараметр("МассивСкважин",МассивСкважин);
	Результат = Выборка.Выполнить();
	
	Если НЕ Результат.Пустой() Тогда
		ТЗ = Результат.Выгрузить();
		
		Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
			СтрокаВТЗ = ТЗ.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка, "Скважина");
			Если СтрокаВТЗ <> Неопределено Тогда
				ОформлениеСтроки.Ячейки.Владелец.УстановитьТекст(СтрокаВТЗ.Водозабор);
			КонецЕсли; 
		КонецЦикла; 
	КонецЕсли;
	
КонецПроцедуры
Показать
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ice-net 20 27.12.16 20:37 Сейчас в теме
(1)
Совсем не айс..
1. что мешает добавить новую колонку и в нее записывать нужное значение? (будет 2 колонки, а при сильном желании, основную можно так же программно скрыть)
2. гораздо производительнее будет переписать алгоритм так, что бы в цикле запрос не фигурировал.

например:


Колонки = ЭлементыФормы.ИмяЭлементаСпискаЗначений.Колонки;
Колонка = Колонки.Добавить("Водозабор", , "Водозабор")"; //Добавляем новую
Колонки.Владелец.Видимость = ложь; //скрываем старую

Запрос = Новый Запрос;
Запрос.Текст = "Выбрать т.Скважина, т.Водозабор ИЗ РегистрыСведений.ВладельцыСкважин.СрезПоследних(,Скважина В (&МассивСкважин) И Водозабор <> Значение(Справочники.Водозабор.ПустаяСсылка)) КАК т"; 
//Если не предполагается что в регистр записи могут попадать будущим числом - отбор по периоду можно не ставить.


Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
	
	МассивСкважин = новый Массив;
	
	Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
		МассивСкважин.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка);
	КонецЦикла;
	
	Запрос.УстановитьПараметр("МассивСкважин",МассивСкважин);
	Результат = Выборка.Выполнить();
	
	Если НЕ Результат.Пустой() Тогда
		ТЗ = Результат.Выгрузить();
		
		Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
			СтрокаВТЗ = ТЗ.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка, "Скважина");
			Если СтрокаВТЗ <> Неопределено Тогда
				ОформлениеСтроки.Ячейки.Владелец.УстановитьТекст(СтрокаВТЗ.Водозабор);
			КонецЕсли; 
		КонецЦикла; 
	КонецЕсли;
	
КонецПроцедуры
Показать
3. pvlunegov 153 27.12.16 21:34 Сейчас в теме
ОформлениеСтроки.Ячейки.Владелец.Значение = РегВладелец;
В оформлении строк нельзя менять Владельца ячейки, так как оформление строк - подчиненный строкам объект, который реализует оформление данных строк (логично следует из названия).
Все что можно менять в объекте ОформлениеСтроки - это свойства оформления - цвета, шрифты, текст и т.п.
Владельца менять нельзя, потому что оформление привязано к конкретной ячейке, нет смысла менять привязку, все оформление "поплывет".
Изначально, ОформлениеСтроки задумано как объект, в котором будут доп. свойства ячеек Табличного документа в зависимости от контекста, в котором он выводится (на экран или на принтер).
Если вы поймете такие простые вещи, у вас больше не возникнет мысли менять привязку ячеек объекта ОформлениеСтроки к ячейкам Табличного документа.
А свойство поменять можно и нужно.
Например, текст
ОформлениеСтроки.Ячейки.Владелец.УстановитьТекст(СтрокаВТЗ.Водозабор);

Или шрифт и др. свойства
4. HIVvich 28.12.16 09:01 Сейчас в теме
Я все поняла, спасибо за развернутые ответы!
Оставьте свое сообщение
Вакансии
Ведущий разработчик 1С (Внутренний учет)
Москва
зарплата от 200 000 руб.
Полный день

Инженер - программист 1С/разработчик 1С (middle)
Иркутск
зарплата от 100 000 руб. до 180 000 руб.
Полный день

Программист 1С
Иркутск
зарплата от 100 000 руб. до 180 000 руб.
Полный день

Ведущий разработчик 1С
Новосибирск
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Ведущий Консультант/Аналитик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день