Заказать звонок

УФ Как в колонке таблицы показывать одно из полей в зависимости от значений

28.09.2016

Рассмотрим задачу, когда в колонке таблицы на управляемой форме нужно показывать одно из двух полей в зависимости от значений. Рассмотрим на примере, когда по номенклатуре ведется учет по упаковкам и выбрана упаковка, тогда показывать значение упаковки, а когда упаковка не выбрана, тогда показывать значение единицы измерения номенклатуры.

 

Потребуются изменения в следующих объектах:

  1. Документ

    1. Реквизиту Упаковка задать значение свойства Связи параметров выбора Номенклатура – Не изменять

  2. Форма документа

    1. Добавить в таблицу на форме группу колонок со значением Группировка - В ячейке. Добавить в эту группу колонку Упаковка и Номенклатура.ЕдиницаИзмерения

  3. Модуль формы документа

    1. Добавить в описание события формы ПриСозданииНаСервере вызов процедуры по установке условного оформления для отображения нужного поля в колонке

    2. Добавить в описание события формы ПослеЗаписиНаСервере вызов процедуры по установке условного оформления для отображения нужного поля в колонке

    3. Добавить процедуру по установке условного оформления для отображения нужного поля в колонке


 

Подробнее на примере (конфигурация ERP 2.0):

Часть 1. Доработка реквизитов документа.

Добавляем реквизит табличной части Упаковка с типом СправочникСсылка.УпаковкиНоменклатуры и устанавливаем свойству Связи параметров выбора значение Номенклатура – Не изменять (рис. 1).

Рис. 1. Свойства реквизита табличной части

Часть 2. Доработка формы документа.

Открываем форму документа. Добавляем группу колонок в элемент формы табличной части и устанавливаем свойствуГруппировка значение В ячейке (рис. 2).

Рис. 2. Свойства группы колонок

Переносим в новую группу колонок поле ТоварыКПолучениюУпаковка и добавляем новое поле из реквизита табличной части Номенклатура.ЕдиницаИзмерения (рис. 3).

Рис. 3. Добавление полей в группу колонок

Часть 3. Доработка модуля формы документа.

Открываем модуль формы документа. Определяем следующие процедуры:

3.1. ПриСозданииНаСервере()

У формы документа определяем событие ПриСозданииНаСервере:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

УстановитьУсловноеОформление();

КонецПроцедуры

3.2. ПослеЗаписиНаСервере()

У формы документа определяем событие ПослеЗаписиНаСервере:

&НаСервере

Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

УстановитьУсловноеОформление();

КонецПроцедуры

    1. Определяем процедуру по установке условного оформления (если заполнено значение колонки Упаковка, то не отображать колонку ЕдиницаИзмерения):

&НаСервере

Процедура УстановитьУсловноеОформление()

 

Если Не ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры") Тогда

Возврат;

КонецЕсли;

 

ИмяПоляВводаЕдиницИзмерения = "ТоварыКПолучениюЕдиницаИзмерения";

ПутьКПолюОтбора = "Объект.ТоварыКПолучению.Упаковка";

 

УО = ЭтаФорма.УсловноеОформление;

ЭлементыФормы = ЭтаФорма.Элементы;

 

ЭлементУсловногоОформления = УО.Элементы.Добавить();

 

ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();

ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементыФормы[ИмяПоляВводаЕдиницИзмерения].Имя);

 

ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКПолюОтбора);

ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;

 

ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);

 

КонецПроцедуры


 

Теперь можно открыть конфигурацию в режиме Предприятие и проверить внесенные изменения. При добавлении номенклатуры в колонке Упаковка, Единица хранения будет отображаться единица хранения номенклатуры (т.к. полеУпаковка еще не заполнено), но в колонке можно будет выбрать упаковку.

 

Автор

 

Королева Дина


Возврат к списку

Наши услуги и вакансии

Разработчики
на full-time
Программист 1С на 8 часов в день
от 1 600 руб/час
Позадачная
разработка 1С
Доработки и развитие любых решений на платформе 1С
Стоимость по оценке
Карьера в Neti

Вакансии разработчиков и консультантов 1С
З.П. от 100 000 рублей