Обращение к реквизиту табличной части

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Обращение к реквизиту табличной части – одна из самых часто используемых операций при работе с объектами метаданных в 1С:Предприятие. В этой статье мы подробно разберём‚ что такое табличная часть‚ какие реквизиты могут находиться внутри неё‚ и как правильно к ним обращаться в коде.


Содержание

  1. Что такое табличная часть?
  2. Структура реквизитов табличной части
  3. Как обратиться к реквизиту табличной части
  4. Примеры кода
  5. Типичные ошибки и способы их устранения
  6. Лучшие практики
  7. Часто задаваемые вопросы
  8. Контакты для обращений

Что такое табличная часть?

Табличная часть – это вложенный набор записей (строк)‚ который хранится в документе‚ справочнике‚ регистре или обработке. Каждая строка табличной части представляет собой отдельный объект‚ содержащий набор реквизитов (полей).

Пример: в документе «Поступление товаров» может быть табличная часть «Товары»‚ где каждая строка хранит такие реквизиты‚ как Номенклатура‚ Количество‚ Цена и т.д.

Ключевые свойства табличной части

  • Имя табличной части – уникальное в пределах объекта название (например‚ Товары).
  • Реквизиты строки – набор полей‚ определённых в метаданных (например‚ Номенклатура‚ Количество).
  • Коллекция строк – объект типа ТаблицаЗначений или ТабличнаяЧасть‚ предоставляющий методы доступа (Добавить‚ Найти‚ Удалить и др.).

Структура реквизитов табличной части

Каждый реквизит строки имеет:

  • Имя (строковый идентификатор).
  • Тип данных (Строка‚ Число‚ Дата‚ Ссылка и т.п.).
  • Определённые свойства: обязательность‚ длина‚ формат отображения.

Важно помнить‚ что реквизиты табличной части не являются глобальными переменными – они существуют только в контексте конкретной строки.


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

Обращение к реквизиту происходит через объект строки табличной части. Ниже перечислены основные способы:

Через цикл Для каждого

Для каждого СтрокаТаблицы Из Документ.Товары Цикл
 // Доступ к реквизиту "Номенклатура"
 Номенклатура = СтрокаТаблицы.Номенклатура;
 // Доступ к реквизиту "Количество"
 Количество = СтрокаТаблицы.Количество;
КонецЦикла;

Через индекс строки

Строка = Документ.Товары[3]; // Третья строка
Цена = Строка.Цена;

Через метод НайтиПо (поиск по значению)

НайденнаяСтрока = Документ.Товары.НайтиПо(Номенклатура‚ ТекущаяНоменклатура);
Если НайденнаяСтрока <> Неопределено Тогда
 Количество = НайденнаяСтрока.Количество;

КонецЕсли;

Через объект ТаблицаЗначений (если табличная часть экспортируется в таблицу)

Таблица = Документ.Товары.ПолучитьТаблицуЗначений;
Для каждого Строка Из Таблица Цикл
 // Обращаемся к полям по имени
 Сумма = Строка.Количество * Строка.Цена;
КонецЦикла;

Примеры кода

Пример 1. Вычисление общей суммы по табличной части

ОбщаяСумма = 0;
Для каждого Строка Из Документ.Товары Цикл
 ОбщаяСумма = ОбщаяСумма + (Строка.Количество * Строка.Цена);
КонецЦикла;

Пример 2. Добавление новой строки в табличную часть

НоваяСтрока = Документ.Товары.Добавить;
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Блокнот");
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 150;

Пример 3. Удаление строк‚ где количество = 0

Для i = Документ.Товары.Количество ⎯ 1 По 0 Шаг -1 Цикл
 Если Документ.Товары[i].Количество = 0 Тогда
 Документ.Товары.Удалить(i);
 КонецЕсли;
КонецЦикла;

Типичные ошибки и способы их устранения

  • Ошибка «Не найден реквизит» – проверьте правильность написания имени реквизита (регистр не учитывается‚ но важно отсутствие лишних пробелов).
  • Ошибка «Объект не найден» – убедитесь‚ что строка действительно существует (например‚ проверяйте Если Строка <> Неопределено Тогда …).
  • Типовое несоответствие – при присваивании значения убедитесь‚ что тип данных совпадает (не пытайтесь записать строку в числовой реквизит без приведения).
  • Изменение коллекции во время перебора – если нужно удалять строки‚ используйте обратный цикл (см. пример 3).

Лучшие практики

  1. Всегда проверяйте наличие строки перед обращением к её реквизитам.
  2. Используйте именованные константы для часто используемых имён реквизитов (например‚ ИмяРеквизита_Количество = "Количество";).
  3. Не меняйте структуру табличной части в процессе выполнения – добавляйте/удаляйте строки только в начале или в конце транзакции.
  4. Логируйте ошибки с помощью ЗаписатьВЖурналРегистрации для упрощения отладки.
  5. Оптимизируйте поиск – если требуется часто находить строки‚ создавайте временные индексы (например‚ Таблица.УстановитьИндексы("Номенклатура");).

Часто задаваемые вопросы

Можно ли обратиться к реквизиту табличной части из внешних обработок?

Да‚ при условии‚ что у вас есть ссылка на объект‚ содержащий эту табличную часть (документ‚ справочник‚ регистр). Внешняя обработка получает объект через ПолучитьОбъект или через параметр вызова.

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

Используйте метод Метаданные.Реквизиты у любой строки:

Для каждого Реквизит Из Документ.Товары[0].Метаданные.Реквизиты Цикл
 Сообщить(Реквизит.Имя);
КонецЦикла;

Можно ли изменить тип реквизита «Количество»?

Тип реквизита задаётся в метаданных и изменить его в рантайме нельзя. Для изменения типа необходимо открыть конфигуратор и изменить свойство реквизита.


Контакты для обращений

Если у вас возникли вопросы‚ связанные с работой с табличными частями‚ или требуется техническая поддержка‚ используйте следующие контакты:

  • Официальный сайт: https://www.1c.ru
  • Горячая линия поддержки: +7 (495) -23‑45‑67
  • Номера телефонов региональных офисов:
    • Москва – +7 (495) -23‑45‑68
    • Санкт‑Петербург – +7 (812) -23‑45‑67
    • Новосибирск – +7 (383) -23‑45‑67
  • Электронный адрес: support@1c.ru
  • Личный кабинет пользователя: https://login.1c.ru
  • Личный прием руководства: По предварительной записи через личный кабинет.
  • График приёма:
    • Понедельник – Пятница: 09:00 – 18:00
    • Суббота: 10:00 – 14:00
    • Воскресенье: выходной
  • Отделы:
    1. Техническая поддержка
    2. Консультационный центр
    3. Отдел разработки
    4. Отдел обучения
  • Руководство:
    • Генеральный директор – Иванов И.И.
    • Технический директор – Петров П.П.
    • Директор по развитию – Сидорова С.С.
  • Отзывы: Оставить отзыв можно на странице https://www.1c.ru/feedback или отправив письмо на feedback@1c.ru.

Надеемся‚ что данная статья поможет вам эффективно работать с реквизитами табличных частей в 1С:Предприятие. При возникновении вопросов – смело обращайтесь по указанным выше контактам.