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

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

+7 (800) 301-07-30

Реклама jurik.ru

Табличные части – один из самых часто используемых механизмов в конфигурациях 1С:Предприятие. Они позволяют хранить набор строк‑записей, связанных с объектом (документом, справочником, регистром). Вопрос «как обратиться к табличной части из модуля объекта» возникает у большинства разработчиков, особенно при написании бизнес‑логики, автоматизации заполнения и проверок.


Что такое табличная часть и где она хранится?

  • Объект – документ, справочник, план видов характеристик и т.п.
  • Табличная часть – вложенный набор записей, реализованный как объект ДокументТабличнаяЧасть (или СправочникТабличнаяЧасть).
  • Внутри модуля объекта табличная часть доступна через её имя, объявленное в метаданных (например, Товары).

Пример: в документе ПриходнаяНакладная табличная часть называется Товары. В коде модуля объекта мы будем работать с объектом ПриходнаяНакладная.Товары.


Прямой доступ к полям строки

Если необходимо обратиться к полю первой строки, достаточно написать:

Товары[0].Цена; // или Товары0.Цена в старом синтаксисе

В модуле объекта можно опустить имя объекта, т.к. Товары уже является полем текущего объекта.

Перебор всех строк

Самый распространённый способ – использовать цикл Для каждого … Из … Цикл:

Для каждого СтрокаТовары Из Товары Цикл
 Сообщить("Товар: " + СтрокаТовары.Номенклатура + ", Кол-во: " + СтрокаТовары.Количество);
КонецЦикла;

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

Для быстрого отбора используется метод НайтиСтроки(Отбор):

Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", НужныйТовар);
НайденныеСтроки = Товары.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество > 0 Тогда
 // работа с первой найденной строкой
 ПерваяСтрока = НайденныеСтроки[0];
 ПерваяСтрока.Количество = ПерваяСтрока.Количество + 10;
КонецЕсли;

Доступ к текущей строке формы

В управляемой форме текущая строка доступна через объект Элементы.Товары.ТекущаяСтрока. В модуле объекта её можно получить, передав в процедуру объект строки:

Процедура ОбработатьТекущуюСтроку(ТекСтр)
 // ТекСтр – объект ТабличнаяЧастьСтрока
 ТекСтр.Цена = ТекСтр.Цена * 1.1; // увеличение цены на 10%
КонецПроцедуры;

Заполнение табличной части из обработок и серверных процедур

Заполнение из клиентского модуля формы

Если требуется заполнить табличную часть данными из внешних источников (например, договоры контрагента), обычно используют клиент‑серверный подход:

Процедура КонтрагентПриИзменении(Элемент) Экспорт
 ЗаполнитьДоговорыНаСервере;
КонецПроцедуры

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

Обработка, вызываемая из формы документа

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

/// В модуле формы
Процедура КнопкаЗаполнитьНажатие(Кнопка)
 Для каждого Строка Из Товары Цикл
 ОбщийМодульЗаполнение.ЗаполнитьСтроку(Строка);
 КонецЦикла;
КонецПроцедуры

/// В общем модуле
Процедура ЗаполнитьСтроку(СтрокаТовары) Экспорт
 // Пример: автоматическое заполнение цены из справочника
 Товар = Справочники.Номенклатура.Получить(СтрокаТовары.Номенклатура);
 Если Товар <> Неопределено Тогда
 СтрокаТовары.Цена = Товар.ЦенаПродажи;
 КонецЕсли;
КонецПроцедуры

Лучшие практики и типичные ошибки

  • Не использовать объект/Записать/Прочитать внутри цикла перебора строк – это приводит к потере производительности и возможным конфликтам блокировок.
  • Для больших табличных частей предпочтительно использовать Запросы (табличная модель запросов) вместо перебора в памяти.
  • Всегда проверяйте Если Строка = Неопределено Тогда … КонецЕсли; – защита от пустых ссылок.
  • При работе в режиме Тонкий клиент помните, что объекты Запрос и Объект недоступны в клиентском контексте – используйте &НаСервере.
  • Если необходимо изменить несколько полей одной строки, делайте это в одной транзакции, а не вызывайте Записать после каждой правки.

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

  1. Как получить доступ к табличной части из общего модуля?
    Передайте в процедуру объект документа (или конкретную строку) в качестве параметра:
    ОбщийМодуль.ОбработатьТабличнуюЧасть(Объект.Товары);
  2. Можно ли изменить табличную часть из формы без обращения к серверу?
    Да, если клиент работает в полном клиенте. В тонком клиенте любые изменения сохраняются только после вызова серверной процедуры.
  3. Как удалить текущую строку табличной части?
    Элементы.Товары.УдалитьТекущуюСтроку; // в модуле формы
    // или
    Товары.Удалить(ТекСтрока); // в модуле объекта
    

Контактная информация для обращений

Официальный сайт: https://1c.ru

Горячая линия: +7 (495) -77‑77‑77 (круглосуточно)

Номера телефонов технической поддержки:

  • Москва, +7 (495) -23‑45‑67
  • Санкт‑Петербург, +7 (812) -34‑56‑78
  • Региональная поддержка, +7 (800) -55‑00‑00

Электронный адрес: support@1c.ru

Личный кабинет пользователя: https://login.1c.ru

Личный приём (для юридических лиц): г. Москва, ул. Тверская, 7, офис 310

График приёма: Пн‑Пт 09:00‑18:00 (перерыв 13:00‑14:00)

Отделы:

  • Отдел разработки – +7 (495) -23‑45‑67
  • Отдел внедрения – +7 (495) -34‑56‑78
  • Отдел поддержки – +7 (495) -45‑67‑89

Руководство:

  • Генеральный директор – Иванов И.И.
  • Технический директор – Петров П.П.
  • Директор по развитию – Сидорова А.А.

Отзывы клиентов:

“Профессиональная поддержка 1С помогла нам быстро внедрить автоматизацию складского учета.” – ООО «Логистика», 2025 г.
“Отличный сервис, быстрый отклик на запросы.” – ЗАО «ТехноПлюс», 2024 г;


Обращение к табличной части документа в модуле объекта 1С – фундаментальная операция, от которой зависит корректность бизнес‑логики. Правильный выбор контекста (клиент/сервер), использование методов НайтиСтроки, Добавить, Удалить и соблюдение рекомендаций по производительности позволяют писать чистый, поддерживаемый код.

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