Примеры работы с табличным полем в 1С 8

Приветствую вас, уважаемые коллеги! Сегодня я продолжу тему о работе с табличным полем. Уже упоминалось о том, как открыть форму записи регистра сведений из строки табличного поля, которая показывает некоторые приемы работы с табличным полем. Но сейчас давайте поговорим об основных приемах работы с элементом управления табличное поле. Поехали!

Содержание

  1. Как отобразить данные в элементе управления ТабличноеПоле?
  2. Как при разворачивании формы на весь экран сделать, чтобы табличное поле изменяло свой размер?
  3. Как программно установить видимость колонки табличного поля?
  4. Как программно активизировать строку табличного поля с типом значения РегистрСведенийСписок?
  5. Как создать контекстное меню для табличного поля?
  6. Как в табличном поле с типом значения справочник, отображать только группы?
  7. Как изменить значение ячейки табличного поля?
  8. Как сделать текущим значение колонки табличного поля и присвоить этой колонке тип?
  9. Как в табличном поле установить флажок элементом управления для колонки?
  10. Как программно создать колонку табличного поля с элементом управления «Флажок»?
  11. Как реализовать событие двойного клика по строке табличного поля?
  12. Как узнать существует ли колонка табличного поля?
  13. Как из табличного поля получить значение ячейки, если известно имя колонки?
  14. Как активизировать ячейку табличного поля?

Как отобразить данные в элементе управления ТабличноеПоле?

ЭлементыФормы.ТабличноеПоле.Значение=ТаблицаЗначений1;
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();

Примеры реализации данного метода вы можете посмотреть здесь и тут.

Как при разворачивании формы на весь экран сделать, чтобы табличное поле изменяло свой размер?

Если вставить на форму элемент управления табличное поле, тогда автоматически формируются необходимые привязки для этого табличного поля. Бывает, что привязки сбрасываются из-за каких-то наших действий. Из-за того табличное поле перестает масштабироваться или растягиваться по форме. Поэтому привязки табличного поля необходимо настроить.

Нажмём на табличном поле правой кнопкой мыши и выберем пункт меню «Установить привязки…». В открывшейся форме мы увидим настройки привязок табличного поля. Чтобы облегчить себе труд и быть уверенными в правильности привязок, создайте новую форму и скопируйте Ваше табличное поле со старой формы в новую. На новой форме, нажмём на табличном поле правой кнопкой мыши и выберем пункт меню «Установить привязки…»

Как видим на новой форме привязки автоматически настроились так, чтобы табличное поле масштабировалось или растягивалось по форме. Запомним эти привязки, чтобы использовать для нашего табличного поля на старой форме. Нажмём на табличном поле старой формы правой кнопкой мыши и выберем пункт меню «Установить привязки…». Установим привязки аналогично тому, что мы увидели на новой форме. Готово!

Как программно установить видимость колонки табличного поля?

ЭлементыФормы.РегистрСведенийСписок.Колонки.Период.Видимость = Истина;

Где, «Период» — колонка табличного поля «ЭлементыФормы.РегистрСведенийСписок».

Как программно активизировать строку табличного поля с типом значения РегистрСведенийСписок?

В 1С:Предприятии 8 для активизации строки конкретного табличного поля следует выполнить установку свойства ТекущаяСтрока соответствующего элемента управления. Этому свойству присваивается значение, идентифицирующее строку, которую необходимо активизировать. Тип значения зависит от типа данных, с которыми связано табличное поле.

Например, для списка справочника это будет ссылка на элемент справочника, а для табличной части — строка табличной части. Если тип значения РегистрСведенийСписок, тогда свойству ТекущаяСтрока присваивается значение типа — РегистрСведенийКлючЗаписи. Пример:

Отбор1 = Новый Структура;
Отбор1.Вставить("Период", ДатаТекущегоТарифа);
Отбор1.Вставить("Владелец", ОсновнаяОрганизация);
Отбор1.Вставить("Вес", 0.3);
Рег = РегистрыСведений.Тарифы;
КлючЗаписи = Рег.СоздатьКлючЗаписи(Отбор1);//Тип: РегистрСведенийКлючЗаписи
// РегистрСведенийСписок - табличное поле для отображения списка 
// записей регистра сведений
ЭлементыФормы.РегистрСведенийСписок.ТекущаяСтрока = КлючЗаписи;

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

Как создать контекстное меню для табличного поля?

  1. Создать на форме невидимую командную панель, т.е. убрать флажок «Видимость» в свойствах командной панели.
  2. В свойствах табличного поля убрать флажок «АвтоКонтекстноеМеню».
  3. Из выпадающего списка «КонтекстноеМеню» выбрать только что созданную командную панель.

Теперь можно добавлять разные команды в командную панель. Они будут отображаться в контекстном меню табличного поля.

Как в табличном поле с типом значения справочник, отображать только группы?

Откроем свойства табличного поля и найдем свойство «ПросмотрГруппИЭлементов». В выпадающем списке выберем «Группы». Готово!

Как изменить значение ячейки табличного поля?

Предположим, необходимо добавить РНН контрагента в ячейку, находящуюся рядом с ячейкой контрагента.

Процедура ПриПолученииДанных(Элемент, ОформленияСтрок)
	Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
		ОформлениеСтроки.Ячейки.РНН.Значение =
			ОформлениеСтроки.ДанныеСтроки.Контрагент.РНН;
	КонецЦикла;
КонецПроцедуры

Как сделать текущим значение колонки табличного поля и присвоить этой колонке тип?

Предположим, что колонке «СубконтоДоходовБУ3» нужно присвоить тип «СправочникСсылка.ПодразделенияОрганизаций».

СтрокаТабличнойЧасти = ЭлементыФормы.Услуги.ТекущиеДанные;
ЭлементыФормы.Услуги.ТекущаяКолонка = ЭлементыФормы.Услуги.Колонки.СубконтоДоходовБУ3;
СтрокаТабличнойЧасти.СубконтоДоходовБУ3 = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();

Как в табличном поле установить флажок элементом управления для колонки?

ТекКолонка = ЭлементыФормы.ТабличноеПоле.Колонки["Загружать"];
ТекКолонка.УстановитьЭлементУправления(Тип("Флажок"));

Как программно создать колонку табличного поля с элементом управления «Флажок»?

ТекКолонка = ЭлементыФормы.ТаблицаНакладных.Колонки["Загружать"];
ТекКолонка.УстановитьЭлементУправления(Тип("Флажок"));
ТекКолонка.ДанныеФлажка = "Загружать";
ТекКолонка.Ширина = 3;
ТекКолонка.ТекстШапки = "";
ТекКолонка.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
ТекКолонка.ЭлементУправления.ПрозрачныйФон = Истина;

Свойство «РежимРедактирования» определяет режим редактирования ячейки табличного поля, если его не установить в «РежимРедактированияКолонки.Непосредственно» придется дополнительно кликать мышью, чтобы изменить флажок.

Свойство «ЭлементУправления» содержит элемент управления в данном случае флажок, через это свойство можно «достучаться» к свойствам и событиям флажка.
Свойство «ПрозрачныйФон» является свойством элементом управления флажка.

Кроме того, чтобы отображался только флажок без текста ДаНет необходимо в обработчике события табличного поля «ПриВыводеСтроки» написать следующее:

Процедура ТаблицаНакладныхПриВыводеСтроки(Элемент, ОформлениеСтроки)
	ОформлениеСтроки.Ячейки.Загружать.ОтображатьТекст = Ложь;
КонецПроцедуры

Как реализовать событие двойного клика по строке табличного поля?

Табличное поле имеет событие «Выбор». В обработчике этого события напишите:

Процедура СписокДелВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	// И последующий код для обработки двойнного клика на строке
КонецПроцедуры

Здесь можно посмотреть пример реализации данного метода.

Как узнать существует ли колонка табличного поля?

Если СписокДел.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
     ...
КонецЕсли;

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

Как из табличного поля получить значение ячейки, если известно имя колонки?

В обработчике события «Выбор» доступно имя колонки табличного поля и текущая строка. Чтобы получить значение ячейки нужно воспользоваться функцией табличного поля «ОформлениеСтроки», как показано ниже:

Процедура ТаблицаНоменклатурыВыбор(Элемент, ВыбСтрока, Колонка, СтандартнаяОбработка)
    Если Найти(Колонка.Имя, "СерияНоменклатуры") > 0 Тогда
	// из свойства «Ячейки» получаем коллекцию значений «ОформлениеЯчейки» для строки
	Ячейки = ЭлементыФормы.СправочникНоменклатура.ОформлениеСтроки(ВыбСтрока).Ячейки;
	//  теперь по имени колонки получим значение ячейки
	Серия = Ячейки[Колонка.Имя].Значение;
    КонецЕсли;
КонецПроцедуры

Как активизировать ячейку табличного поля?

// Для обычных форм
Процедура АктивизироватьЯчейку(Кнопка)
	ТекущийЭлемент = ЭлементыФормы.ТабличноеПолеДокумента;
	ТекущийЭлемент.ТекущаяОбласть = ТекущийЭлемент.Область("R2C2");
КонецПроцедуры

// Для управляемых форм
&НаКлиенте
Процедура АктивизироватьЯчейку(Команда)
	ТабличныйДокумент = Объект.Таблица;   
	Элементы.Таблица.ТекущаяОбласть = ТабличныйДокумент.Область("R2C1");	
КонецПроцедуры

Пример обработки вы можете скачать по ссылке.

ПОДПИСКА

1 ответить
  1. Softmaker говорит:

    Ответ на новый вопрос: Как из табличного поля получить значение ячейки, если известно имя колонки?

Комментарии закрыты.