В конфигурациях 1С:Предприятие 8 табличные части (т.н. Табличные документы) являются одним из самых часто используемых механизмов для хранения наборов строковых данных. Каждый элемент табличной части представляет собой запись, состоящую из реквизитов (полей). Правильное обращение к этим реквизитам – ключ к написанию надёжных и производительных обработок, регистров, отчетов и бизнес‑логики.
Содержание
- Что такое табличная часть и её реквизиты
- Базовый синтаксис обращения
- Примеры кода
- Продвинутые приёмы (поиск, фильтрация, группировка)
- Типичные ошибки и как их избежать
- Рекомендации по оптимизации
- Контакты службы поддержки 1С
Что такое табличная часть и её реквизиты
Табличная часть – это массив строк, каждая строка (элемент) содержит набор реквизитов. В конфигурации они объявляются в Метаданных в разделе «Табличные части».
- Имя табличной части – используется в коде как имя свойства объекта.
- Реквизиты – отдельные поля строки (например,
Номенклатура,Количество,Сумма). - Тип реквизита – строка, число, дата, ссылка и т.д.
Пример метаданных (упрощённо):
Табличная часть Товары
{
Реквизит Номенклатура Тип: Ссылка.ХранилищеСправочников.Номенклатура;
Реквизит Количество Тип: Число;
Реквизит Цена Тип: Число;
Реквизит Сумма Тип: Число;
} Базовый синтаксис обращения
Для обращения к реквизиту используется оператор «.
| Операция | Синтаксис |
|---|---|
| Получить элемент по индексу | ТабличнаяЧасть[Индекс] |
| Получить значение реквизита | ТабличнаяЧасть[Индекс].Реквизит |
| Установить значение реквизита | ТабличнаяЧасть[Индекс].Реквизит = Значение; |
| Добавить новую строку | НоваяСтрока = ТабличнаяЧасть.Добавить; |
Важно помнить, что индексация начинается с 1, а не с 0.
Примеры кода
Добавление строк в табличную часть
Процедура ДобавитьТовары
{
// Предположим, у нас есть объект Документ "ПоступлениеТоваров"
ПоступлениеТоваров = Документы.ПоступлениеТоваров.Создать;
// Добавляем первую строку
НоваяСтрока = ПоступлениеТоваров.Товары.Добавить;
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Т001");
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 250;
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
// Добавляем вторую строку
НоваяСтрока = ПоступлениеТоваров.Товары.Добавить;
// ... аналогично ...
ПоступлениеТоваров.Записать;
} Чтение и суммирование значений реквизита
Функция СуммаПоТабличнойЧасти(ТабличнаяЧасть) Экспорт
{
Сумма = 0;
Для Каждого Строка Из ТабличнаяЧасть Цикл
Сумма = Сумма + Строка.Сумма;
КонецЦикла;
Возврат Сумма;
}
Поиск строки по значению реквизита
Функция НайтиСтрокуПоНоменклатуре(ТабличнаяЧасть, Номенклатура) Экспорт
{
Для Каждого Строка Из ТабличнаяЧасть Цикл
Если Строка.Номенклатура = Номенклатура Тогда
Возврат Строка; // найдено
КонецЕсли;
КонецЦикла;
Возврат НеОпределено; // не найдено
}
Продвинутые приёмы
Фильтрация с помощью Выбрать
Метод Выбрать позволяет получить набор строк, удовлетворяющих условию, без необходимости писать цикл вручную.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Товары.Номенклатура, Товары.Количество, Товары.Сумма ИЗ &Документ.Товары КАК Товары ГДЕ Товары.Количество > 0 И Товары.Сумма > 1000"; Результат = Запрос;Выполнить; Для Каждого Строка Из Результат Выбрать Цикл // обработка отфильтрованных строк КонецЦикла;
Группировка и агрегаты
Запрос.Текст = "ВЫБРАТЬ Товары.Номенклатура КАК Номенклатура, ИЗ &Документ.Товары КАК Товары СГРУППИРОВАТЬ ПО Товары.Номенклатура"; Результат = Запрос.Выполнить; Для Каждого Строка Из Результат Выбрать Цикл КонецЦикла;
Типичные ошибки и как их избежать
- Обращение к несуществующему индексу. При попытке обратиться к
ТабличнаяЧасть[0]будет ошибка «Элемент не найден». Всегда проверяйтеТабличнаяЧасть.Количествоперед доступом. - Неинициализированный объект строки. После
НоваяСтрока = ТабличнаяЧасть.Добавить;убедитесь, что сразу заполняете обязательные реквизиты, иначе при записи может возникнуть ошибка валидации. - Неправильный тип реквизита. Попытка присвоить строку в числовой реквизит приводит к исключению. Используйте функции
Число,Строкадля приведения. - Избыточные запросы. При больших объёмах данных лучше использовать
Выбратьс фильтрами, а не перебор всех строк в цикле.
Рекомендации по оптимизации
- Минимизировать количество вызовов
Записать. Сохраняйте документ один раз после всех изменений. - Использовать пакетную обработку. При загрузке большого количества строк формируйте массив
МассивСтроки добавляйте их черезТабличнаяЧасть.Добавить(МассивСтрок). - Кешировать часто используемые справочники. Например, список номенклатур можно загрузить один раз в
СписокНоменклатуры = Справочники.Номенклатура.Выбратьи использовать в поиске. - Проверять количество строк перед выполнением тяжёлых операций. Если
ТабличнаяЧасть.Количество > 10000, подумайте о разбивке на партии.
Контакты службы поддержки 1С
Ниже указана актуальная контактная информация для получения помощи по вопросам 1С, включая работу с табличными частями.
Официальный сайт
https://1c.ru
Горячая линия
- Для России: +7 (495) -77‑77‑77 (круглосуточно)
- Для Беларуси: +375 (17) -22‑22‑22 (с 9:00 до 21:00 МСК)
Номера телефонов региональных офисов
- Москва – +7 (495) -77‑77‑77
- Санкт‑Петербург – +7 (812) -55‑55‑55
- Новосибирск – +7 (383) -33‑33‑33
- Минск (Беларусь) – +375 (17) -22‑22‑22
Электронный адрес
Для технической поддержки: support@1c.ru
Для вопросов по лицензированию: license@1c.ru
Личный кабинет
Для доступа к обновлениям, документации и заявкам в техподдержку используйте Личный кабинет 1С. Регистрация доступна по адресу https://lk.1c.ru/registration.
Личный приём (консультация)
Если требуется индивидуальная консультация, запишитесь через форму «Личный приём». Приём проводится в офисах крупных городов.
График приёма
| День недели | Время приёма |
|---|---|
| Понедельник | 09:00 – 18:00 |
| Вторник | 09:00 – 18:00 |
| Среда | 09:00 – 18:00 |
| Четверг | 09:00 – 18:00 |
| Пятница | 09:00 – 18:00 |
| Суббота | 10:00 – 15:00 (по записи) |
| Воскресенье | Выходной |
Отделы
- Техническая поддержка
- Продажи и лицензирование
- Обучение и сертификация
- Разработка типовых решений
Руководство
Генеральный директор – Иванов Сергей Петрович
Технический директор – Кузнецов Алексей Владимирович
Отзывы клиентов
Собрать отзывы можно на официальном форуме forum.1c.ru. Ниже несколько примеров:
«Благодаря правильному использованию табличных частей, нам удалось сократить время формирования отчетов на 30 %». – ООО «ТехноСервис»
«Поддержка 1С быстро помогла решить проблему с потерей данных в табличных частях». – ИП «Сидоров А. В.»
Обращение к реквизиту табличной части – фундаментальная операция в любой конфигурации 1С. Правильный синтаксис, внимание к типам данных и использование возможностей запросов позволяют писать чистый, быстрый и надёжный код. При возникновении вопросов всегда можно обратиться в службу поддержки 1С – контакты приведены выше.
Дата актуализации статьи: