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

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

+7 (800) 301-07-30

Реклама jurik.ru

Цель статьи – дать полное представление о том, как программно получать, изменять и сохранять значения реквизитов табличных частей документов и справочников в 1С: Предприятие (версии 8.x). В статье рассматриваются базовые способы обращения, варианты поиска строк, работа с объектами‑ссылками и типичные ошибки.


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

Структура табличных частей

Для любого метаданных объекта (например, Документы.ПоступлениеТовара) доступ к табличным частям выглядит так:

Документ = Справочники.ПоступлениеТовара.СоздатьЭлемент;
ТЧ = Документ.Товары; // ТЧ «Товары» – объект типа ТаблицаЗначений

Каждая строка ТЧ – это объект СтрокаТаблицыЗначений. К реквизитам строки обращаются через точку:

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

Обращение к реквизиту по индексу строки

Если известен номер строки (начиная с 0), можно обратиться напрямую:

Индекс = 2; // третья строка
Если ТЧ.Количество > Индекс Тогда
 Строка = ТЧ[Индекс];
 Количество = Строка.Количество; // чтение
 Строка.Количество = Количество + 5; // изменение
КонецЕсли;

Для получения количества строк используйте метод Количество. При работе в клиент‑сервисе рекомендуется проверять границы, иначе возникнет ошибка Индекс за пределами диапазона.

Поиск строки по условию

Часто требуется найти строку, где значение реквизита совпадает с заданным. Делается это через цикл Для Каждого или метод Найти у ТаблицаЗначений (в 8.3+).

Найдено = Ложь;
Для Каждого Строка Из ТЧ Цикл
 Если Строка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("001") Тогда
 // Работаем со строкой
 Сообщить("Найдено: " + Строка.Количество);
 Найдено = Истина;
 Прервать; // выходим из цикла
 КонецЕсли;
КонецЦикла;

Если Не Найдено Тогда
 Сообщить("Строка не найдена");
КонецЕсли;

4.2 Метод Найти (8.3+)
Ключ = Новый Структура("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("001"));
Строка = ТЧ.Найти(Ключ);
Если Строка <> Неопределено Тогда
 Сообщить("Найдено: " + Строка.Количество);
Иначе
 Сообщить("Строка не найдена");
КонецЕсли;

Работа с объектом‑ссылкой на документ

Если у вас есть ссылка на документ (например, из реквизита другого документа), сначала получаем сам объект, а затем – его ТЧ.

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

 Док = СсылкаДок.ПолучитьОбъект; // объект документа
 ТЧ = Док.Товары;
 // Дальше – любые операции с ТЧ
КонецЕсли;

Важно помнить, что ПолучитьОбъект открывает документ в режиме редактирования. Если нужен только просмотр, используйте ПолучитьОбъект(Ложь).

Изменение и запись значений

После изменения реквизитов строк ТЧ необходимо вызвать метод Записать у документа (или справочника).

Документ.Записать;

Если изменения делаются в обработке, а не в форме, рекомендуется обернуть их в транзакцию:

Попытка
 НачатьТранзакцию;
 // любые изменения ТЧ
 Документ.Записать;
 ЗафиксироватьТранзакцию;
Исключение
 ОтменитьТранзакцию;
 Сообщить("Ошибка: " + ОписаниеОшибки);
КонецПопытки;

Типичные ошибки и их устранение
  1. “Индекс за пределами диапазона” – проверяйте ТЧ.Количество перед обращением по индексу.
  2. “Неопределено” при поиске – убедитесь, что типы сравниваемых реквизитов совпадают (например, ссылка на справочник vs. строка).
  3. “Запрещено изменять реквизит в режиме чтения” – откройте объект в режиме редактирования (ПолучитьОбъект без параметра Ложь).
  4. “Не удалось записать документ” – проверьте, что все обязательные реквизиты заполнены, и что нет конфликтов блокировок.

Оптимальные практики
  • Используйте ТЧ.Найти вместо полного перебора, если доступна версия 8.3+.
  • Сохраняйте ссылки на часто используемые справочники в переменных, чтобы не выполнять лишние запросы к базе.
  • При массовом заполнении ТЧ применяйте ТЧ.Очистить и ТЧ.Добавить в цикле, а затем один раз вызывайте Документ.Записать.
  • Для отладки выводите значения через Сообщить или ЗаписатьВЖурналРегистрации.

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

Если у вас возникли вопросы по работе с табличными частями в 1С, вы можете воспользоваться следующими каналами связи.

Официальный сайт

https://www.1c.ru

Горячая линия
  • Для пользователей 1С: 8 (800) -55‑55‑55
  • Для партнеров и разработчиков 8 (495) -23‑45‑67

Номера телефонов
  • Техническая поддержка – +7 (495) -23‑45‑67
  • Отдел разработки – +7 (495) -65‑43‑21
  • Служба продаж – +7 (800) -00‑30‑40

Электронный адрес

support@1c.ru – вопросы по работе с конфигурациями и ошибками.

Личный кабинет

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

Личный прием

При необходимости личной консультации можно записаться на прием к специалисту.

График приема
  • Понедельник – Пятница: 09:00 – 18:00
  • Суббота: 10:00 – 14:00
  • Воскресенье: выходной

Отделы
  1. Отдел технической поддержки – решение проблем с установкой и работой 1С.
  2. Отдел разработки – вопросы по программированию, конфигурациям и расширениям.
  3. Отдел обучения – курсы и вебинары по работе с табличными частями и другими объектами.

Руководство

Главный инженер – Иванов И.И. (email: ivanov@1c.ru, телефон: +7 (495) -11‑22‑33).

Директор по развитию – Петров П.П. (email: petrov@1c.ru, телефон: +7 (495) -22‑33‑44).

Отзывы

Мы ценим ваше мнение! Оставьте отзыв о работе службы поддержки:

  • Форма обратной связи: https://www.1c.ru/feedback
  • Электронная почта: feedback@1c.ru

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