Привет, меня зовут Дмитрий, я разработчик 1С в Programming Store.
Иногда существует необходимость использования табличного документа в качестве элемента управляемой формы. Табличный документ позволяет реализовать более широкие возможности по оформлению таблицы, чем таблица значений. При этом в табличном документе достаточно просто можно организовать интерактивную работу с данными.
Содержание:
- Управление данными в табличных документах.
- Использование перетаскивания.
- Использование примечаний.
- Использование расшифровок.
- Использование группировки.
- Возможность фиксации области табличного документа программно.
- Выводы.
Управление данными в табличных документах
Данные в ячейках табличного документа могут храниться в одном из двух свойств ячейки: «Текст» или «Значение». Использованием этих свойств управляет свойство «СодержитЗначение», если в нем установлено значение «Истина», то данные можно записать в свойство «Значение», при этом свойство «Текст» становится недоступным для использования, тогда как в значении «Ложь» свойство «Текст» доступно для записи, а свойство «Значение» становится недоступным. Свойство «Текст» позволяет хранить данные только с типом «Строка», в свойство «Значение» можно записывать ссылочные типы и примитивные типы.
Данные, отображаемые в табличном документе, могут быть преобразованы в таблицу значений (например, для загрузки в табличную часть) посредством построителя запроса:
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДокумент.Область());
ТаблицаЗначений = Построитель.Результат.Выгрузить();
Для ячеек с установленным свойством «СодержитЗначение = Истина» можно использовать встроенные элементы управления (поле ввода, флажок). При этом если видимость встроенного элемента управления установлена в значении «Ложь», то элемент управления будет отображаться в ячейке, только когда активирован режим редактирования.
В событии табличного документа «Выбор» (которое наступает при двойном клике на ячейке) можно реализовать код проверки координат ячейки.
&НаКлиенте
Процедура ТабличныйДокументВыбор(Элемент, Область, СтандартнаяОбработка)
// Координаты ячейки
НомерСтроки = Область.Верх;
НомерКолонки = Область.Лево;
// Получение данных ячейки
Если Область.СодрежитЗначение = Истина Тогда
Значение = Область.Значение;
Иначе
Текст = Область.Текст;
Конецесли;
КонецПроцедуры
Иногда требуется определить количество колонок в таблице табличного документа. Это можно сделать с помощью свойства «ШиринаТаблицы», при этом свойство «ВысотаТаблицы» показывает количество строк в таблице.
Данные свойства можно использовать для организации обхода таблицы в циклах.
В случае если требуется динамически устанавливать для отдельных строк режим «Только просмотр» в зависимости от данных в строке, лучше использовать событие поля табличного документа «ПриАктивизацииОбласти». В данный обработчик события передается параметр «Элемент», содержащий поле табличного документа. Используя свойство поля табличного документа «ТекущаяОбласть», можно получить координаты области (строки и колонки) и по ним данные из нужных колонок строки.
Для поля табличного документа доступно перетаскивание, позволяющее мышью переносить значения в табличный документ или из табличного документа. Этой возможностью управляют два свойства: «РазрешитьНачалоПеретаскивания» и «РазрешитьПеретаскивание». Первое свойство позволяет управлять источником данных при перетаскивании, второе – приемником данных. При перетаскивании генерируются события: в источнике — «НачалоПеретаскивания», «ПроверкаПеретаскивания» и в приемнике — «Перетаскивание» и «ОкончаниеПеретаскивания».
Табличные документы также имеют следующие дополнительные возможности:
- группировки,
- примечания,
- расшифровки.
У области ячеек документа существует свойство «Примечание», которое имеет тип «РисунокТабличногоДокумента». Благодаря такому типу, существует возможность редактирования внешнего вида примечания (цвет текста, фона, выбор шрифта). Наличие примечания в ячейке отображается красным треугольником в правом верхнем углу ячейки. Текст примечания можно задать программно, с помощью свойства «текст»:
ОбластьЯчеек.Примечание.Текст = "Текст примечания";
Расшифровки доступны в режиме «Только просмотр» и в режиме защиты. При использовании табличного документа на управляемой форме становятся доступны события «ОбработкаРасшифровки» и «ОбработкаДополнительнойРасшифровки». «ОбработкаРасшифровки» поля табличного документа возникает, когда пользователь пытается вызвать расшифровку. Данный обработчик события позволяет переопределить стандартную расшифровку, в него в качестве формальных параметров передаются поле табличного документа, значение расшифровки, а также флаг стандартной обработки расшифровки. Обработчик «ОбработкаДополнительнойРасшифровки» вызывается, когда пользователь нажимает правую кнопку мыши на ячейке табличного документа (вызывается меню расшифровки). Этот обработчик позволяет переопределить контекстное меню расшифровки.
В табличном документе сгруппировать можно и строки, и колонки. Для программного управления группировками используются методы «Сгруппировать()» и «Разгруппировать()».
Возможность фиксации области табличного документа программно
Табличный документ позволяет программно фиксировать области сверху и слева. Для этого используется следующий код:
ТабличныйДокумент.ФиксацияСверху = 5;
ТабличныйДокумент.ФиксацияСлева = 1;
Использование табличного документа в качестве элемента формы позволяет реализовать случаи, когда требуется технология работы «как в экселе», при этом табличный документ обеспечивает широкий спектр возможностей оформления.
Вступайте в нашу телеграмм-группу Инфостарт