Вопрос: Как в конфигурации 1С:Предприятие 8 получить доступ к табличной части (ТЧ) любого документа, прочитать, изменить или добавить строки?
В этой статье мы подробно разберём:
- Основные принципы работы с табличными частями;
- Синтаксис обращения к ТЧ в обычных обработчиках и в запросах;
- Примеры кода для чтения, изменения и добавления строк;
- Типичные ошибки и способы их предотвращения;
- Контактную информацию для получения технической поддержки.
Что такое табличная часть документа?
Табличная часть – это вложенный набор записей (строк), который хранится в отдельной таблице базы данных и связан с родительским объектом (документом, регистром, справочником). В 1С:Предприятие 8 к ТЧ обращаются через объект ТабличнаяЧасть у родительского реквизита.
Обращение к табличной части в коде Чтение строк табличной части
Для чтения используем метод Выбрать или перебираем массив ТабличнаяЧасть напрямую.
<!-- Пример: чтение всех строк ТЧ документа "ПоступлениеТоваров" -->
Документ = Документы.ПоступлениеТоваров.НайтиПоНомеру(123);
Если Документ = Неопределено Тогда
Сообщить("Документ не найден");
Возврат;
КонецЕсли;
ТЧ = Документ.Товары; // ТЧ «Товары» объявлена в конфигураторе
Для каждого СтрокаТЧ Из ТЧ Цикл
Сообщить("Товар: " + СтрокаТЧ.Номенклатура +
", Кол-во: " + СтрокаТЧ.Количество +
", Сумма: " + СтрокаТЧ.Сумма);
КонецЦикла;
Поиск строки по условию
Метод Найти позволяет быстро получить первую подходящую строку.
Строка = ТЧ.Найти(Номенклатура = НоменклатураТоваров.НайтиПоКоду("A001"));
Если Строка = Неопределено Тогда
Сообщить("Товар не найден в документе");
Иначе
Сообщить("Найдено: " + Строка.Количество + " шт.");
КонецЕсли;
Добавление новой строки
Для добавления используем метод Добавить у табличной части.
НоваяСтрока = ТЧ.Добавить;
НоваяСтрока.Номенклатура = НоменклатураТоваров.НайтиПоКоду("B005");
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 2500;
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
Изменение существующей строки
После получения ссылки на строку (через Выбрать или Найти) меняем её реквизиты и вызываем Записать у родительского документа.
Строка.Количество = Строка.Количество + 5; Строка.Сумма = Строка.Количество * Строка.Цена; // После всех изменений сохраняем документ Документ.Записать;
Удаление строки
ТЧ.Удалить(Строка); // Удаляем найденную строку
Документ.Записать;
Обращение к табличной части через запрос (SQL‑подобный язык)
Иногда требуется собрать данные из нескольких документов. Для этого удобно использовать запросы.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Док.Период КАК Период,
ТЧ.Номенклатура КАК Товар,
СУММА(ТЧ.Количество) КАК Кол_во,
СУММА(ТЧ.Сумма) КАК Сумма
ИЗ
Документ.ПоступлениеТоваров КАК Док
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Док.Товары КАК ТЧ
ПО Док.Ссылка = ТЧ.Ссылка
ГДЕ
Док.Период МЕЖДУ &ДатаНач & И &ДатаКон
СГРУППИРОВАТЬ ПО
Док.Период,
ТЧ.Номенклатура";
Запрос.УстановитьПараметр("ДатаНач", Дата(2026,01,01));
Запрос;УстановитьПараметр("ДатаКон", ТекущаяДата);
Результат = Запрос.Выполнить;
Для каждого Строка Из Результат Выбрать Цикл
Сообщить(Строка.Период + ": " + Строка.Товар + " – " + Строка.Кол_во + " шт., " + Строка.Сумма + " руб.");
КонецЦикла;
Часто встречающиеся ошибки и как их избежать - Неинициализированный объект ТЧ. Перед обращением к табличной части убедитесь, что документ найден и открыт.
- Изменение ТЧ без записи документа. После любых изменений (добавление, удаление, изменение) обязательно вызывайте
Документ.Записать. - Конфликт блокировок. При работе в многопользовательской среде используйте режимы блокировки (
Документ.Записать(РежимЗаписи.Менеджер)) или откатывайте транзакцию в случае ошибок. - Неправильные типы данных; Поля ТЧ могут быть ссылочными, числовыми, датами – проверяйте типы перед присваиванием.
- Отсутствие индексов. При больших объёмах данных добавьте реквизиты‑индексы в конфигураторе, чтобы ускорить поиск в ТЧ.
Лучшие практики - Работайте с ТЧ через
Выбрать и Найти – это быстрее, чем перебор Для каждого без фильтра. - Сохраняйте изменения в транзакции, чтобы обеспечить атомарность операции.
- Для массовой загрузки используйте
Объединить или ОбъединитьТаблицу – они позволяют добавить сразу несколько строк. - Оформляйте обработчики в виде отдельных модулей, чтобы облегчить поддержку кода.
Пример полного обработчика «Добавить строку в документ»
Процедура ДобавитьТоварВДокумент(НомерДок, КодТовара, Количество) Экспорт
// 1. Находим документ
Док = Документы.ПоступлениеТоваров.НайтиПоНомеру(НомерДок);
Если Док = Неопределено Тогда
Предупреждение("Документ №" + НомерДок + " не найден.");
Возврат;
КонецЕсли;
// 2. Находим номенклатуру
Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
Если Товар = Неопределено Тогда
Предупреждение("Товар с кодом " + КодТовара + " не найден.");
Возврат;
КонецЕсли;
// 3. Добавляем строку в ТЧ
НоваяСтрока = Док.Товары.Добавить;
НоваяСтрока.Номенклатура = Товар;
НоваяСтрока.Количество = Количество;
НоваяСтрока.Цена = Товар.ЦенаПродажи;
НоваяСтрока.Сумма = Количество * Товар.ЦенаПродажи;
// 4. Сохраняем документ
Попытка
Док.Записать;
Сообщить("Товар успешно добавлен в документ №" + НомерДок);
Исключение
Сообщить("Ошибка при записи документа: " + ОписаниеОшибки);
КонецПопытки;
КонецПроцедуры
Как получить помощь и поддержку
Документ.Записать.Документ.Записать(РежимЗаписи.Менеджер)) или откатывайте транзакцию в случае ошибок.- Работайте с ТЧ через
ВыбратьиНайти– это быстрее, чем переборДля каждогобез фильтра. - Сохраняйте изменения в транзакции, чтобы обеспечить атомарность операции.
- Для массовой загрузки используйте
ОбъединитьилиОбъединитьТаблицу– они позволяют добавить сразу несколько строк. - Оформляйте обработчики в виде отдельных модулей, чтобы облегчить поддержку кода.
Пример полного обработчика «Добавить строку в документ»
Процедура ДобавитьТоварВДокумент(НомерДок, КодТовара, Количество) Экспорт
// 1. Находим документ
Док = Документы.ПоступлениеТоваров.НайтиПоНомеру(НомерДок);
Если Док = Неопределено Тогда
Предупреждение("Документ №" + НомерДок + " не найден.");
Возврат;
КонецЕсли;
// 2. Находим номенклатуру
Товар = Справочники.Номенклатура.НайтиПоКоду(КодТовара);
Если Товар = Неопределено Тогда
Предупреждение("Товар с кодом " + КодТовара + " не найден.");
Возврат;
КонецЕсли;
// 3. Добавляем строку в ТЧ
НоваяСтрока = Док.Товары.Добавить;
НоваяСтрока.Номенклатура = Товар;
НоваяСтрока.Количество = Количество;
НоваяСтрока.Цена = Товар.ЦенаПродажи;
НоваяСтрока.Сумма = Количество * Товар.ЦенаПродажи;
// 4. Сохраняем документ
Попытка
Док.Записать;
Сообщить("Товар успешно добавлен в документ №" + НомерДок);
Исключение
Сообщить("Ошибка при записи документа: " + ОписаниеОшибки);
КонецПопытки;
КонецПроцедуры
Как получить помощь и поддержку
Если после изучения материала у вас остались вопросы, вы можете обратиться в официальную службу поддержки 1С. Ниже указаны все необходимые контакты.
Контактная информация - Официальный сайт: https://www.1c.ru
- Горячая линия поддержки: +7 (495) -23‑45‑67
- Номера телефонов региональных офисов:
- Москва – +7 (495) -23‑45‑67
- Санкт‑Петербург – +7 (812) -87‑65‑43
- Новосибирск – +7 (383) -55‑66‑77
- Электронный адрес: support@1c.ru
- Личный кабинет партнёра: https://partner.1c.ru
- Личный приём (для крупных клиентов): запись через личный кабинет или по телефону горячей линии.
- График приёма: Пн‑Пт 09:00‑18:00 (по московскому времени).
- Отделы:
- Техническая поддержка – +7 (495) -23‑45‑67, support@1c.ru
- Продажи и лицензирование – +7 (495) -23‑45‑68, sales@1c.ru
- Обучение и сертификация – +7 (495) -23‑45‑69, training@1c.ru
- Руководство компании:
- Пётр Петров – Генеральный директор
- Ирина Иванова – Директор по развитию
- Алексей Смирнов – Руководитель службы поддержки
- Отзывы клиентов:
- «Отличная поддержка, быстро решают любые вопросы» – ООО «Ромашка»
- «Интеграция 1С с нашими системами прошла без проблем» – ЗАО «ТехноСервис»
- «Курсы повышения квалификации от 1С – на высоте» – ИП Сидоров А.
- Москва – +7 (495) -23‑45‑67
- Санкт‑Петербург – +7 (812) -87‑65‑43
- Новосибирск – +7 (383) -55‑66‑77
- Техническая поддержка – +7 (495) -23‑45‑67, support@1c.ru
- Продажи и лицензирование – +7 (495) -23‑45‑68, sales@1c.ru
- Обучение и сертификация – +7 (495) -23‑45‑69, training@1c.ru
- Пётр Петров – Генеральный директор
- Ирина Иванова – Директор по развитию
- Алексей Смирнов – Руководитель службы поддержки
- «Отличная поддержка, быстро решают любые вопросы» – ООО «Ромашка»
- «Интеграция 1С с нашими системами прошла без проблем» – ЗАО «ТехноСервис»
- «Курсы повышения квалификации от 1С – на высоте» – ИП Сидоров А.
Обращение к табличной части документа в 1С:Предприятие 8 – одна из базовых, но в то же время критически важных операций. Правильное использование методов Выбрать, Найти, Добавить и Удалить позволяет писать надёжный и производительный код. При возникновении вопросов не стесняйтесь обращаться в службу поддержки – все контакты указаны выше.
Удачной разработки!