1. HIVvich 27.12.16 15:45 Сейчас в теме

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

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

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

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

например:


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

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


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

например:


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

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


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

Или шрифт и др. свойства
4. HIVvich 28.12.16 09:01 Сейчас в теме
Я все поняла, спасибо за развернутые ответы!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Аналитик 1С
Санкт-Петербург
зарплата от 80 000 руб.
Полный день

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

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день