Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Табличная часть
Дальше: Ввод данных по колонкам

Глава 3.17. Работа с таблицей в форме

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

Особенность заключается в том, что для выполнения простейших действий с текущей строкой можно не обращаться к данным (реквизиту формы), а получить нужные значения прямо из элемента формы Таблица. Для этого используется свойство таблицы ТекущиеДанные.

Однако для выполнения более сложных или массовых операций требуется доступ непосредственно к данным формы, то есть к ее реквизиту. Реквизит формы может иметь разный тип – например, в случае табличной части это будет ДанныеФормыКоллекция, а в случае дерева значений – ДанныеФормыДерево. Сути дела это не меняет.

В любом случае реквизит формы является некоторой коллекцией. И когда мы «переходим» от элемента формы, в котором какая-то строка является текущей, к реквизиту, нужно уметь однозначно определить, какой элемент этой коллекции соответствует текущей строке таблицы. И наоборот, зная некоторый элемент коллекции, содержащейся в реквизите, нужно уметь сделать текущей строкой таблицы ту, которая соответствует этому элементу коллекции.

Для решения этой задачи используется идентификатор (рис. 3.136).

Рис. 3.136. Использование идентификатора для получения строки реквизита

Находясь в таблице формы, узнать идентификатор текущей строки просто. Его возвращает свойство таблицы ТекущаяСтрока.

Имея этот идентификатор, найти соответствующий ему элемент коллекции, содержащейся в реквизите, тоже просто. У коллекции есть метод НайтиПоИдентификатору(), который вернет нужный элемент коллекции.

В «обратную сторону» все работает похожим образом (рис. 3.137).

Рис. 3.137. Использование идентификатора для установки текущей строки таблицы

Имея некоторый элемент коллекции, содержащейся в реквизите, мы можем получить его идентификатор с помощью его метода ПолучитьИдентификатор(). Останется только присвоить этот идентификатор текущей строке таблицы, чтобы спозиционироваться на нужной строке.

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

Назад: Табличная часть
Дальше: Ввод данных по колонкам