При работе с табличной частью документа или просто произвольной таблицей значений, расположенной в форме, зачастую возникает необходимость выборочной или групповой обработки данных, содержащихся в таблице.
Особенность заключается в том, что для выполнения простейших действий с текущей строкой можно не обращаться к данным (реквизиту формы), а получить нужные значения прямо из элемента формы Таблица. Для этого используется свойство таблицы ТекущиеДанные.
Однако для выполнения более сложных или массовых операций требуется доступ непосредственно к данным формы, то есть к ее реквизиту. Реквизит формы может иметь разный тип – например, в случае табличной части это будет ДанныеФормыКоллекция, а в случае дерева значений – ДанныеФормыДерево. Сути дела это не меняет.
В любом случае реквизит формы является некоторой коллекцией. И когда мы «переходим» от элемента формы, в котором какая-то строка является текущей, к реквизиту, нужно уметь однозначно определить, какой элемент этой коллекции соответствует текущей строке таблицы. И наоборот, зная некоторый элемент коллекции, содержащейся в реквизите, нужно уметь сделать текущей строкой таблицы ту, которая соответствует этому элементу коллекции.
Для решения этой задачи используется идентификатор (рис. 3.136).

Рис. 3.136. Использование идентификатора для получения строки реквизита
Находясь в таблице формы, узнать идентификатор текущей строки просто. Его возвращает свойство таблицы ТекущаяСтрока.
Имея этот идентификатор, найти соответствующий ему элемент коллекции, содержащейся в реквизите, тоже просто. У коллекции есть метод НайтиПоИдентификатору(), который вернет нужный элемент коллекции.
В «обратную сторону» все работает похожим образом (рис. 3.137).

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