1с перебрать строки таблицы формы

Если реквизит объекта «вытащен» на форму, то реквизит формы можно получить через объект ЭлементыФормы , который содержит коллекцию элементов формы, сканируя ее в цикле:

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

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

Если реквизит формы имеет тип «ТабличноеПоле», то можно такой элемент просканировать во вложенном цикле и узнать имена колонок таблицы:

Как получить значение отдельного реквизита формы?

Чаще требуется получать не массив реквизитов формы, а значение отдельных конкретных реквизитов формы. Например реквизиты «Шапки» или «Подвала» формы документа.

Реквизиты шапки могут иметь различные типы: Дата, СправочникСсылка, ЧекБокс, элемент раскрывающегося списка и др.

Доступ к табличной части формы через объект

Доступ к табличной части формы (например: Товары) можно получить через объект:

Здесь ДокОбъект.Товары — это табличная часть «Товары» объекта. Далее в цикле табличная часть построчно сканируется!
В каждой итерации цикла можно получить доступ к любому полю строки указав через точку имя этого поля:

Доступ к табличной части формы через ЭлементыФормы

Табличная часть объекта и табличная часть формы объекта — это не одно и то же!

Для того, чтобы код работал правильно, надо чтобы колонка формы табчасти объекта в свойстве данные ссылалась на реквизит табличной части объекта. Этим определяется тип колонки таб части формы.

То есть должна быть установлена связь между реквизитом табчасти объекта и реквизитом табчасти формы. Форм у объекта метаданных может быть много мы знаем. Табличную часть формы объекта можно получить через объект ЭлементыФормы :

Объект ЭлементыФормы используется для доступа к элементам управления, расположенным на форме, в частности к таб части документа.

Результат для документа Авансовый отчет:

Это табличное поле!! Товары
Количество строк: 4
Женские ботфорты коричневые
Ботинки женские демисезонные
Ботинки женские натуральная кожа
Женские босоножки

Если надо получить значение всех колонок всех строк, то организуем дважды вложенный цикл:
Во внешнем цикле сканируются строки, во внутреннем — колонки:

Результат для документа Авансовый отчет:

Это табличное поле!! ВыданныеАвансы
=======================
НомерСтроки 1
ДокументАванса Расходный кассовый ордер ТК000000004 от 15.02.2007 19:24:03
СуммаДокументаАванса 300
ВалютаДокументаАванса USD
Выдано 300
Сумма 174

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

Как перебрать все строки в таблице документа 1С? Без использования запроса.

Как перебрать все строки в таблице документа 1С? Без использования запроса.
Ранее мы выводили данные из табличной части документа при помощи запроса.
В этой статье рассмотрим операторы Цикла.
Циклы применяются для выполнения каких либо повторяющихся действий.
Задача: Требуется перебрать все строки в таблице документа.

1. Перебираем строки с помощью цикла Для каждого.
Записывается:

ТекСтрока — переменная,
КоллекцияСтрок — коллекция значений.
Тогда наш пример запишем так:

ВыбДокумента- реквизит на форме. То есть конкрентный выбранный документ.
Товары — табличная часть выбранного документа.

2. Перебираем строки с помощью цикла Пока.
Записывается:

л — счетчик, который увеличивается на 1.
КолСтрок — максимальное количество итераций.

Тогда наш пример запишем так:

где:
ВыбДокумента- реквизит на форме. То есть конкрентный выбранный документ.
Товары — табличная часть выбранного документа.
3. Перебираем строки с помощью цикла Для.
Записывается:

л — счетчик, увеличивается на 1.
КолСтрок — максимальное количество итераций.
Тогда наш пример запишем так:

Обход строк табличной части проще всего реализуется с помощью цикла Для Каждого СтрокаТЧ Из ТабЧасть Цикл.

При этом переменной цикла будет являться не номер строки, а вся строка как объект. Если нужен еще номер строки, то можно использовать свойство НомерСтроки или добавить переменную и инкрементировать ее в теле цикла.

Есть также возможность использовать обычный цикл Для . По . Цикл, но необходимо помнить, что индекс 1-го элемента коллекции всегда равен 0 (нулю).

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: