Табличные части (ТЧ) – один из самых часто используемых механизмов в 1С:Предприятие.
Они позволяют хранить набор строк, каждая из которых состоит из нескольких реквизитов.
Вопрос «как получить доступ к полю (колонке) ТЧ» возникает у разработчиков разных уровней: от новичков до опытных администраторов.
Содержание статьи
- Общие сведения о табличных частях
- Имя и структура ТЧ в метаданных
- Обращение к ТЧ в запросах
- Доступ к полям ТЧ из модуля формы
- Работа с ТЧ через объектную модель (Объект, ТаблицаЗначений)
- Полные примеры кода (1С 8.3)
- Полезные рекомендации и типичные ошибки
- Контакты для обращений
Общие сведения о табличных частях
Табличная часть – это отдельный объект метаданных, который храниться в отдельной таблице базы данных.
Каждая строка ТЧ представляет собой запись (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 (по предварительной записи)
- Воскресенье – выходной
Отделы
- Техническая поддержка
- Консалтинг и внедрение
- Разработка типовых решений
- Обучение и сертификация
Руководство
Генеральный директор – Иванов И.И.
Технический директор – Петров П.П.
Отзывы
Мы ценим обратную связь! Оставьте отзыв на официальном форуме forum.1c.ru или отправьте письмо на feedback@1c.ru.