Разработка и Конфигурация · 11 мин
Как открыть табличную часть в 1С
Как открыть табличную часть документа или справочника в 1С: через форму объекта, список выбора, запрос и программно. Разбор ошибок, примеры кода и ответы на вопросы.
Табличная часть — это вложенная таблица внутри документа, справочника или другого объекта конфигурации 1С, например перечень товаров в накладной или состав комиссии в приказе. «Открыть табличную часть» может означать разные задачи: просто увидеть её на форме, вывести в отдельном окне, получить к ней доступ программно или выгрузить содержимое для анализа. Способ зависит от того, кто вы — пользователь, который работает в режиме «Предприятие», или разработчик, дорабатывающий конфигурацию.
Проблема чаще всего возникает в двух ситуациях. Первая: табличная часть не видна на форме документа — она скрыта настройками интерфейса, свёрнута в закладку или недоступна из-за прав. Вторая: нужно обратиться к данным табличной части из кода, запроса или внешней обработки, а объектная модель вызывает вопросы. Оба сценария решаются штатными средствами платформы без вмешательства в структуру базы.
Ниже разобраны все основные способы: от работы мышью в форме документа до программного обращения через метод Выгрузить() и запросы. Отдельно показано, как проверить, что данные получены корректно, и какие ошибки встречаются чаще всего.
Что такое табличная часть и где её искать
Табличная часть хранится внутри конкретного объекта: у каждого документа «Реализация товаров» свой набор строк, и они не существуют отдельно от него. В конфигураторе табличные части видны в дереве объекта — ветка «Табличные части» у документов, справочников, обработок и некоторых других типов. У одного объекта их может быть несколько: например, «Товары», «Услуги» и «Серии» в одном документе.
В пользовательском режиме табличная часть обычно отображается как таблица на форме объекта. Чтобы её увидеть, достаточно открыть сам документ или элемент справочника двойным щелчком из списка. Если документ большой и состоит из нескольких вкладок, табличная часть может находиться на отдельной странице формы — проверьте закладки вверху или сбоку окна.
Как открыть табличную часть в режиме пользователя
Стандартный путь: откройте список документов через главное меню (например, «Продажи → Реализация (акты, накладные)»), найдите нужный документ и откройте его двойным щелчком. Табличная часть с товарами будет видна на форме сразу или на одной из вкладок. Для редактирования строки достаточно кликнуть в нужную ячейку.
Если табличной части на форме нет, сначала проверьте настройки формы. В типовых конфигурациях на управляемых формах есть команда «Ещё → Изменить форму»: в открывшемся списке найдите нужную таблицу и включите её видимость. Также проверьте, не свёрнута ли группа — на форме могут быть сворачиваемые панели.
- 1Откройте документ или элемент справочника из списка
- 2Осмотрите закладки и свёрнутые группы на форме
- 3Откройте «Ещё → Изменить форму» и проверьте видимость таблицы
- 4Если таблицы нет даже в настройках — уточните права доступа у администратора
- 5Проверьте результат: строки табличной части отображаются и доступны для чтения
Для просмотра содержимого табличной части без открытия формы документа удобны отчёты. Например, универсальный отчёт или консоль запросов позволяют вывести строки сразу многих документов. Кроме того, во многих конфигурациях доступна печатная форма документа — по сути, это готовое представление табличной части на бумаге.
Как программно обратиться к табличной части
Во встроенном языке 1С табличная часть доступна как свойство объекта, имя которого совпадает с именем табличной части в конфигураторе. Если вам нужно перебрать строки, используйте цикл Для Каждого; если нужна отдельная таблица значений для дальнейшей обработки — метод Выгрузить().
ДокОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Номер, Дата).ПолучитьОбъект();
Для Каждого СтрокаТовара Из ДокОбъект.Товары Цикл
Сообщить(СтрокаТовара.Номенклатура);
КонецЦикла;
// Выгрузка в таблицу значений
ТаблицаЗначений = ДокОбъект.Товары.Выгрузить();
Важное различие: если работать через ссылку (Док.Товары без ПолучитьОбъект()), платформа вернёт табличную часть только для чтения, и попытка изменить строки вызовет ошибку. Для редактирования обязательно получайте объект методом ПолучитьОбъект(), а после изменений вызывайте Записать(). В модуле формы документа обращение идёт через Объект.Товары — здесь объект уже открыт, и дополнительное получение не требуется.
ТЗ = Объект.Товары.Выгрузить();
ТЗ.Свернуть("Номенклатура", "Количество, Сумма");Как открыть табличную часть запросом
Запрос — самый быстрый способ получить данные табличной части без открытия формы и без получения объекта целиком. В конструкторе запросов табличные части представлены как отдельные таблицы с точкой в имени: Документ.РеализацияТоваровУслуг.Товары. Каждая строка такой таблицы содержит поле Ссылка — указатель на документ-владелец.
ВЫБРАТЬ
Товары.Ссылка КАК Документ,
Товары.Номенклатура,
Товары.Количество,
Товары.Сумма
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК Товары
ГДЕ
Товары.Ссылка = &Документ
Запрос удобен, когда нужно проанализировать строки сразу по многим документам: например, собрать все позиции определённой номенклатуры за период. Для разового просмотра подойдёт консоль запросов (в типовых конфигурациях на БСП — обработка «Консоль запросов» из состава инструментов разработчика), для регулярной работы — отчёт на СКД.
Как открыть табличную часть в отдельной форме
Иногда табличную часть нужно показать пользователю в отдельном окне — например, для подбора строк в обработке. Для этого данные выгружают в реквизит формы типа «ТаблицаЗначений» или «ДинамическийСписок» и размещают на форме обработки как табличное поле. В управляемой форме типовая схема такая: создать реквизит формы, перетащить его в дерево элементов, затем заполнить программно.
&НаСервере
Процедура ЗаполнитьТаблицу(ДокументСсылка)
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг.Товары ГДЕ Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
ТаблицаНаФорме.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
Альтернатива без программирования — кнопка «Вывести список» в командной панели табличной части (значок с таблицей или пункт в меню «Ещё»). Она выводит строки в табличный документ, который можно сохранить в Excel или распечатать. Это быстрый способ «открыть» содержимое табличной части вне формы документа.
Способы получить данные табличной части
Подходит для ручного просмотра и редактирования. Ограничение: один документ за раз, нужны права на открытие.
Лучший вариант для чтения по многим документам. Ограничение: только чтение, только записанные данные.
Универсально для обработки в коде, позволяет менять строки. Ограничение: медленнее запроса при массовой обработке.
Быстрый экспорт строк в табличный документ без кода. Ограничение: только текущий открытый документ.
Почему табличная часть не открывается: типичные причины
Если табличная часть не отображается или недоступна, причина обычно одна из четырёх. Первая — настройки формы: таблица отключена в «Изменить форму» или скрыта функциональной опцией (например, табличная часть «Серии» видна только при включённом учёте серий). Вторая — права: у роли пользователя может не быть права «Просмотр» на табличную часть, тогда она скрывается целиком.
Третья причина — программные ошибки при обращении из кода. Обращение к несуществующему имени табличной части (Объект.Товар вместо Объект.Товары) вызывает ошибку «Поле объекта не обнаружено». Попытка изменить табличную часть через ссылку без ПолучитьОбъект() — ошибку о недоступности изменения. Четвёртая — попытка прочитать табличную часть у нового, ещё не записанного объекта через запрос: запрос вернёт пустой результат.
Как проверить результат и безопасные границы работы
После любого способа открытия убедитесь, что вы видите именно те данные. Контрольные точки: количество строк совпадает с ожидаемым, итоговая сумма табличной части сходится с суммой документа, ссылка в запросе указывает на нужный документ. При программной обработке полезно вывести Объект.Товары.Количество() — ноль строк при ожидаемых данных означает, что вы смотрите не тот объект или документ не записан.
Безопасная граница самостоятельной работы — чтение и просмотр. Запросы, выгрузка в таблицу значений и «Вывести список» не меняют данные. Риск появляется при программной модификации строк с последующим Записать(): ошибочная обработка может массово испортить документы. Перед такой обработкой сделайте резервную копию базы или сначала выполните код в тестовой копии и на одном документе.
Как проверить результат
Совпадает с числом строк в форме документа
Пусто или меньше — проверьте ссылку и запись документа
Сумма по табличной части равна сумме документа
Расхождение — выгружены не все строки или не те колонки
Указывает на нужный документ
Пустая ссылка или другой документ — ошибка в параметре отбора
Частые вопросы
Можно ли открыть табличную часть без открытия самого документа?
Да, через запрос к таблице вида Документ.ИмяДокумента.ИмяТабличнойЧасти — например, в консоли запросов или отчёте. Данные будут прочитаны напрямую из базы без открытия формы документа. Ограничение: так доступны только записанные данные и только для чтения.
Почему я не вижу табличную часть в документе, хотя коллега видит?
Скорее всего, различаются права или настройки формы. Проверьте «Ещё → Изменить форму» и включите видимость таблицы. Если таблицы нет и там — обратитесь к администратору: у вашей роли может не быть права просмотра на эту табличную часть, либо она скрыта функциональной опцией.
Как выгрузить табличную часть в Excel?
Откройте документ, в командной панели табличной части нажмите «Вывести список» (или «Ещё → Вывести список»), отметьте нужные колонки. Полученный табличный документ сохраните через «Файл → Сохранить как» в формате Excel. Альтернатива — скопировать строки через буфер обмена.
Чем отличается Выгрузить() от обращения к строкам напрямую?
Метод Выгрузить() создаёт независимую таблицу значений — копию данных, которую можно сортировать, сворачивать и менять без влияния на объект. Прямой перебор строк работает с живыми данными объекта: изменения строк сохранятся при записи документа.
Как обратиться к табличной части справочника?
Точно так же, как у документа: Справочники.Имя.НайтиПоКоду(Код).ПолучитьОбъект().ИмяТабличнойЧасти. В запросе — Справочник.Имя.ИмяТабличнойЧасти. Например, табличная часть «КонтактнаяИнформация» у контрагентов доступна как Справочник.Контрагенты.КонтактнаяИнформация.
Ошибка «Поле объекта не обнаружено» при обращении к табличной части — что делать?
Проверьте точное имя табличной части в конфигураторе — оно чувствительно к написанию. Также убедитесь, что переменная содержит именно объект нужного типа, а не ссылку другого документа: полезно вывести ТипЗнч(Переменная) для диагностики.
Что важно запомнить
Пользователю табличная часть открывается на форме документа; если её не видно — проверьте «Изменить форму», закладки и права. Разработчику доступны три пути: обращение к свойству объекта с методом Выгрузить(), запрос к таблице Документ.Имя.ТабличнаяЧасть и вывод в реквизит формы. Чтение безопасно всегда; перед массовым изменением строк делайте копию базы.