К основному контенту

СписокВыбора. Показать Представление вместо Значения

Вводная

Если на форме есть элемент управления со списком выбора, в моем конкретном примере это Колонка Значение (Число (3,0)) с настроенным списком выбора. По умолчанию платформа отображает именно строковое значения, а не текст представления  из списка выбора (когда как при выборе значения из списка показываются именно представления).

Решение

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

Для Управляемых Форм
Пример кода
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
     
    Для Каждого Значение Из Элементы.ТабличнаяЧастьЗначение.СписокВыбора.ВыгрузитьЗначения() Цикл
        Объект.ТабличнаяЧасть.Добавить().Значение = Значение;
    КонецЦикла;
     
    ДобавитьУсловноеОформлениеТекстаДляСпискаВыбора(Элементы.ТабличнаяЧастьЗначение);
         
КонецПроцедуры
  
  
// Добавит правила условного оформления для всех значений списка выбора элемента
// для отображения вместо значений текст из представления из списка выбора элемента
//
// Параметры:
//  Элемент - ПолеФормы - Элемент управления
//       для которого следует установить правила оформления на основании выбранного (установленного) значения
//
Процедура ДобавитьУсловноеОформлениеТекстаДляСпискаВыбора(Элемент, Отказ = Ложь)
     
    Перем Форма;
     
    Форма = ПолучитьФормуЧерезЭлементУправления(Элемент, Отказ);
     
    Для Каждого ЭлементСпискаВыбора Из Элемент.СписокВыбора  Цикл
        // Новое правило оформления
        ЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
        ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", ЭлементСпискаВыбора.Представление);
        // Условие
        ЭлементУсловия  = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементУсловия.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(Элемент.ПутьКДанным);
        ЭлементУсловия.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно;
        ЭлементУсловия.ПравоеЗначение=ЭлементСпискаВыбора.Значение;
        // Поле
        ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элемент.Имя);
    КонецЦикла;
     
КонецПроцедуры // УстановитьУсловноеОформлениеДляСпискаВыбораЭлементаУправления()
  
  
// Вернет управляемую форму на которой размещен элемент управления
//
// Параметры:
//  Элемент - ПолеФормы - Элемент управления
//  Отказ - Булево - будет содержать признак отказа выполнения метода
//
// Возвращаемое значение:
//  - УправляемаяФорма -
Функция ПолучитьФормуЧерезЭлементУправления(Элемент, Отказ = Ложь)
     
    Перем Родитель;
     
    Родитель = Элемент.Родитель;
    Пока ТипЗнч(Родитель) <> Тип("УправляемаяФорма") Цикл
        Родитель = Родитель.Родитель;
    КонецЦикла;
    Возврат Родитель;
     
КонецФункции // ПолучитьФормуЧерезЭлементУправления()
Для обычного приложения - http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=621925
Процедура ТабличнаяЧасть1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   ОформлениеСтроки.Ячейки["Колонка1"].Текст = ЭлементыФормы.ТабличнаяЧасть1.Колонки.Колонка1.ЭлементУправления.СписокВыбора.НайтиПоЗначению(ДанныеСтроки.Колонка1).Представление;
КонецПроцедуры


Комментарии

Популярные сообщения из этого блога

Табличный Документ. Разная ширина колонки в строках

Когда нужно в макете (табличном документе) изменить ширину колонки  для конкретных строк: 1. Выделить всю строку (строки). Именно всю, фокус для выделенной области не работает. 2. Нажимаем и не отпускает Ctrl 3. С помощью мыши изменяют ширину любой из колонок - будет задан вопрос об создании нового формата строк - соглашаемся. Как же прекрасен мир, где для модификаций не достаточно просто использовать контекстное меню и диалог редактора свойств, где нужно знать заветные слова и таинства танца. 90ые, моё почтение. UPD Программно, тоже самое, можно сделать через ТабДок = Новый ТабличныйДокумент(); ТабДок.Область(1,,1,).СоздатьФорматСтрок(); ТабДок.Область(1,1).ШиринаКолонок = 70; ТабДок.Область(1,2).ШиринаКолонок = 30; ТабДок.Область(2,,2,).СоздатьФорматСтрок(); ТабДок.Область(2,1).ШиринаКолонок = 30; ТабДок.Область(2,2).ШиринаКолонок = 70; ТабДок.Показать();

Расширение конфигурации + Связанные документы (Режим совместимости 8.3.12)

Вводная: реализовать ввод Заказа поставщику на основании Заказа на Ремонт. решить через расширения конфигурации. Хочу обратить ваше внимание, не нужно добавлять в расширение критерий отбора, для 8.3.12 нам не доступно добавление\изменение состава критерия. Более того может зависать конфигуратор (столкнулся с последней версией 8.3.14 + ERP) Разработку рекомендую вести с применением хранилища и для расширения. Иначе устанете потом выгребать чего лишнего включили в расширение при добавлении таких или схожих обектов с составными типами и подобное. Все текущие типовые решения сейчас идут в режиме совместимости 8.3.12, в прочем и для 8.3.14 (и даже 8.3.15 ничего не поменялось). Что нам нужно было бы сделать при отказе от поддержки: 1) добавить наш документ в Критерий отбора (состав, реквизиты); 2) в раздел Ввод на основании целевого документа. И что с целью сохранения поддержки. Как сделать это же для расширения: 1) Добавить реквизит расширения Документы.ЗаказПоставщику._За