Табличные части в 1С: как получить доступ к полям

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

+7 (800) 301-07-30

Реклама jurik.ru

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

Содержание статьи

  1. Общие сведения о табличных частях
  2. Имя и структура ТЧ в метаданных
  3. Обращение к ТЧ в запросах
  4. Доступ к полям ТЧ из модуля формы
  5. Работа с ТЧ через объектную модель (Объект, ТаблицаЗначений)
  6. Полные примеры кода (1С 8.3)
  7. Полезные рекомендации и типичные ошибки
  8. Контакты для обращений

Общие сведения о табличных частях

Табличная часть – это отдельный объект метаданных, который храниться в отдельной таблице базы данных.
Каждая строка ТЧ представляет собой запись (record) со своими реквизитами (колонками).
При работе с документом в коде вы оперируете ТабличнаяЧасть – это объект типа ТаблицаЗначений.

Ключевые свойства ТЧ

  • ИмяТЧ – уникальное имя, задаваемое в метаданных (например, Товары).
  • РеквизитыТЧ – список колонок (например, Номенклатура, Количество, Цена).
  • Ссылка – ссылка на родительский объект (документ, справочник и т.п.).

Имя и структура ТЧ в метаданных

Откройте конфигуратор, найдите нужный документ и посмотрите его табличные части:

Документ.ЗаказПокупателя
 Табличные части:
 Товары (ИмяТЧ = "Товары")
 Реквизиты:
 Номенклатура (Тип = СправочникСсылка.Номенклатура)
 Количество (Тип = Число)
 Цена (Тип = Число)

Имя, которое вы увидите в колонке «ИмяТЧ», будет использоваться в запросах и в коде.

Обращение к ТЧ в запросах

Как обратиться к ТЧ как к отдельной таблице

В запросе можно указать ТЧ через оператор ТабличнаяЧасть:

ВЫБРАТЬ
 ДокументЗаказПокупателя.Дата,
 Товары.Номенклатура,
 Товары.Количество,
 Товары.Цена
ИЗ
 Документ.ЗаказПокупателя КАК ДокументЗаказПокупателя
 ЛЕВОЕ СОЕДИНЕНИЕ Товары КАК Товары
 ПО Товары.Ссылка = ДокументЗаказПокупателя.Ссылка
ГДЕ
 ДокументЗаказПокупателя.Ссылка = &СсылкаДокумента;

Здесь Товары – это имя табличной части, а Товары.Ссылка – ссылка на родительский документ.

Как обратиться к текущей строке ТЧ в запросе

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

Запрос = Новый Запрос;
Запрос.Текст = 
 "ВЫБРАТЬ
 Товары.Номенклатура,
 Товары.Количество,
 Товары.Цена
 ИЗ
 &ТЧ КАК Товары";
Запрос.УстановитьПараметр("ТЧ", ТекущаяСтрока.ТабличнаяЧасть);
Результат = Запрос.Выполнить;

Доступ к полям ТЧ из модуля формы

Через элемент формы «Таблица»

На форме документа обычно размещается элемент Таблица. Чтобы получить значение ячейки текущей строки, используйте:

ТекСтрока = Элементы.ТаблицаТовары.ТекущаяСтрока;
Номенклатура = ТекСтрока.Номенклатура;
Количество = ТекСтрока.Количество;
Цена = ТекСтрока.Цена;

Через объект документа

Если требуется работать с ТЧ без привязки к элементу формы (например, в обработке), используйте объект документа:

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

Работа с ТЧ через объектную модель (ТаблицаЗначений)

Создание новой ТЧ

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

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

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

Найдено = ТЧ.Выбрать;
Пока Найдено.Следующий Цикл
 Если Найдено.Количество > 5 Тогда
 // Делаем что‑то
 КонецЕсли;
КонецЦикла;

Полные примеры кода (1С 8.3)

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

Пример 2. Заполнение ТЧ результатом запроса

Процедура ЗаполнитьТЧИзЗапроса
 Запрос = Новый Запрос;
 Запрос.Текст = 
 "ВЫБРАТЬ
 Номенклатура,
 СУММА(Количество) КАК Количество,
 СУММА(Сумма) КАК Сумма
 ИЗ
 РегистрНакопления.Продажи
 ГДЕ
 Дата МЕЖДУ &ДатаНач И &ДатаКон
 СГРУППИРОВАТЬ ПО
 Номенклатура";

 Запрос.УстановитьПараметр("ДатаНач", НачалоГода(ТекущаяДата));
 Запрос.УстановитьПараметр("ДатаКон", ТекущаяДата);

 Результат = Запрос.Выполнить;
 Выборка = Результат.Выбрать;

 Док = Документы.ОтчетОПродажах.СоздатьДокумент;
 ТЧ = Док.Товары; // ТаблицаЗначений

 Пока Выборка.Следующий Цикл
 НоваяСтрока = ТЧ.Добавить;
 НоваяСтрока.Номенклатура = Выборка.Номенклатура;
 НоваяСтрока.Количество = Выборка.Количество;
 НоваяСтрока.Сумма = Выборка.Сумма;
 КонецЦикла;

 Док.Записать;
 Сообщить("Отчет сформирован");
КонецПроцедуры

Полезные рекомендации и типичные ошибки

  • Не путайте имена ТЧ и имена реквизитов. В запросе Товары.Количество – это колонка ТЧ, а Документ.Количество – реквизит документа.
  • Всегда проверяйте, что ссылка на ТЧ не пустая. При работе с новыми документами ТЧ может быть Неопределено.
  • При работе с запросом используйте параметризацию. Это избавит от SQL‑инъекций и ускорит планирование запросов.
  • Не забывайте про индексы. Если в ТЧ часто ищут по полю Номенклатура, создайте соответствующий индекс в метаданных.
  • Для больших ТЧ используйте постраничный вывод. Запрос ВЫБРАТЬ ... СКОЛЬКО 1000 и цикл Пока Выборка.Следующий помогут избежать переполнения памяти.

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

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

https://1c.ru

Горячая линия поддержки

Тел.: 8 (800) -55‑33‑33 (круглосуточно)

Номера телефонов региональных центров

  • Москва – +7 (495) -23‑45‑67
  • Санкт‑Петербург – +7 (812) -87‑65‑43
  • Новосибирск – +7 (383) -55‑66‑77

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

support@1c.ru

Личный кабинет партнёра

URL: https://partner.1c.ru

Личный приём (для крупных клиентов)

Время работы: Пн‑Пт 09:00‑18:00

Адрес: г. Москва, ул. Тверская, д. 7, офис 12

График приёма

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

Отделы

  1. Техническая поддержка
  2. Консалтинг и внедрение
  3. Разработка типовых решений
  4. Обучение и сертификация

Руководство

Генеральный директор – Иванов И.И.

Технический директор – Петров П.П.

Отзывы

Мы ценим обратную связь! Оставьте отзыв на официальном форуме forum.1c.ru или отправьте письмо на feedback@1c.ru.