Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 21:48

Добавление поля в форму списка справочника

Автор rpervak, 02 окт 2015, 11:40

0 Пользователей и 1 гость просматривают эту тему.

rpervak

Здравствуйте !
1С:Предприятие 8.2 (8.2.18.102)
УПП 1.3.39.1

Кто может помочь добавить колонку в форму списка справочника "ДоговорыКонтрагентов" из ЭлементаФормы - Панели Свойство (Значение)

Спасибо !

vitasw

Стисняюсь спросить, у вас "свойства" - это таблица. Если там будет много записей, то что выводить в форму списка?

rpervak

Цитата: vitasw от 02 окт 2015, 11:48
Стисняюсь спросить, у вас "свойства" - это таблица. Если там будет много записей, то что выводить в форму списка?
Да, это таблица. Извините, уточняю. Меня интересует только значение первой строки.

cska-fanat-kz

в форму списка добавляется колонка
далее в ПриПолученииДанных() из текущей строки, которая является ссылкой на договор запросом получаем значение свойства
и присваиваем его в
    ОформлениеСтроки.Ячейки.НоваяКолонка.Текст = ЗначениеСвойства;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

rpervak

Можно как-то указать параметру "Объект", что это текущий элемент ? Этот код в ФормеЭлемента справочника: ДоговорыКонтрагентов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Объект,
| ЗначенияСвойствОбъектов.Свойство,
| ЗначенияСвойствОбъектов.Значение
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Объект = &Объект";

Запрос.УстановитьПараметр("Объект", ??? );
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    Пока РезультатЗапроса.Следующий() Цикл
    Сообщить(РезультатЗапроса.Значение);
КонецЦикла;

cska-fanat-kz

что-то вроде
    ЭлементыФормы.СправочникСписок.ТекущаяСтрока
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

rpervak

Всем спасибо ! Тему закрываю. Помогли добрые люди. Вот процедура:
Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ЭлементыФормы.СправочникСписок.Колонки.ПредметДоговора.Видимость = Истина Тогда
  Запрос = Новый Запрос;
  Запрос.Текст = "
  | ВЫБРАТЬ РАЗРЕШЕННЫЕ
  | Рег.Значение КАК Значение
  | ИЗ
  |   РегистрСведений.ЗначенияСвойствОбъектов КАК Рег ГДЕ (Рег.Объект = &Объект)и(Рег.Свойство = &Свойство)";
  Запрос.Параметры.Вставить("Объект",ДанныеСтроки.Ссылка);
  Запрос.Параметры.Вставить("Свойство",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00000000008"));
  Выборка = Запрос.Выполнить().Выбрать();
  Выборка.Следующий();
  ОформлениеСтроки.Ячейки.ПредметДоговора.УстановитьТекст(Выборка.Значение);
КонецЕсли;
КонецПроцедуры

vitasw

Ну я б прям вот так сразу не спешил бы. Текущий вариант реализации мне кажется самым неудачным из всех возможных. В таком виде на каждую строку списка вызывается отдельный запрос, т.е. будет наблюдаться "запрос в цикле" - а это есть не очень хорошо.
Вариант решения 1: Повесить вывод на обработчик события "ПриПолученииДанных" - позволит создать запрос на массив объектов, видимых на экране. Позволит получить прирост в производительности, если конечно не использовать прокрутку вверх/вниз.
Вариант решения 2: При открытии формы списка выгребать нужное свойство всех объектов. А в обработчике события "ПриВыводеСтроки" доставать значение из ТЗ. По идее должен быть самым производительным вариантом.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск