Табличные части – один из самых удобных способов хранить наборы строковых и числовых данных в документах и справочниках 1С:Предприятие. Часто возникает необходимость получить значение конкретной ячейки‚ изменить его или проверить наличие данных. В этой статье мы подробно разберём‚ как правильно обращаться к ячейкам табличных частей‚ какие существуют варианты обращения и на какие ошибки стоит обратить внимание.
Содержание
- Что такое табличная часть?
- Обращение к ячейке: базовый синтаксис
- Примеры кода
- Поиск строки по условию
- Итерация по строкам
- Типичные ошибки и как их избежать
- Лучшие практики
- Контакты для обращения
Что такое табличная часть?
Табличная часть – это вложенный объект‚ который хранит набор строк. Каждая строка представляет собой набор полей (колонок). В конфигурации 1С она объявляется в метаданных объекта (документа‚ справочника‚ регистров и т.п.) и имеет собственный тип – ТаблицаЗначений.
Пример структуры табличной части в документе «ПоступлениеТоваров»:
- Товар (Ссылка на справочник Товары)
- Количество (Число)
- Цена (Число)
- Сумма (Число‚ рассчитывается автоматически)
Обращение к ячейке: базовый синтаксис
Для доступа к ячейке необходимо выполнить два шага:
- Получить строку табличной части (объект
СтрокаТаблицы). - Обратиться к полю строки по имени колонки.
Синтаксис выглядит так:
// obj – объект‚ содержащий табличную часть (Документ‚ Справочник и т.д.)
Строка = obj.ТабличнаяЧасть[Индекс]; // Индекс – целое число‚ начиная с 0
Значение = Строка.ИмяКолонки; // ИмяКолонки – строка‚ совпадающая с именем поля
Если необходимо обратиться к ячейке по значению ключевого поля‚ используем метод НайтиПоЗначению или Найти:
Строка = obj.ТабличнаяЧасть.Найти(Товар);
Если Строка <> Неопределено Тогда
Количество = Строка.Количество;
КонецЕсли;
Примеры кода
Чтение значения из первой строки
Док = Документы.ПоступлениеТоваров.ПолучитьОбъект;
Если Док.ТабличнаяЧасть.Количество > 0 Тогда
ПерваяСтрока = Док.ТабличнаяЧасть[0];
Товар = ПерваяСтрока.Товар;
Количество = ПерваяСтрока.Количество;
Сообщить("Товар: " + Товар.Наименование + "‚ количество: " + Количество);
КонецЕсли;
Запись нового значения в ячейку
Док = Документы.ПоступлениеТоваров.СоздатьДокумент;
Строка = Док.ТабличнаяЧасть.Добавить;
Строка.Товар = Справочники.Товары.НайтиПоНаименованию("Молоко");
Строка.Количество = 10;
Строка.Цена = 55.5;
Строка.Сумма = Строка.Количество * Строка.Цена;
Док.Записать;
Обращение к ячейке по индексу в цикле
Для i = 0 По Док.ТабличнаяЧасть.Количество — 1 Цикл
Строка = Док.ТабличнаяЧасть[i];
Сообщить("Строка " + (i+1) + ": " + Строка.Товар.Наименование);
КонецЦикла;
Поиск строки по условию
Самый гибкий способ – использовать метод НайтиПоЗначению (если известен ключ) или перебор с условием.
ТоварИскомый = Справочники.Товары.НайтиПоНаименованию("Хлеб");
Строка = Док.ТабличнаяЧасть.Найти(ТоварИскомый);
Если Строка = Неопределено Тогда
// Если не нашли – добавляем новую строку
Строка = Док.ТабличнаяЧасть.Добавить;
Строка.Товар = ТоварИскомый;
Строка.Количество = 5;
КонецЕсли;
Для более сложных условий используем Для каждого:
Для каждого Строка Из Док.ТабличнаяЧасть Цикл
Если Строка.Цена > 100 Тогда
Сообщить("Дорогой товар: " + Строка.Товар.Наименование);
КонецЕсли;
КонецЦикла;
Итерация по строкам (рекомендованный способ)
В новых версиях 1С рекомендуется использовать Для каждого … Из … Цикл‚ так как он автоматически учитывает изменения коллекции.
Для каждого Строка Из Док.ТабличнаяЧасть Цикл
// Пример изменения количества
Строка.Количество = Строка.Количество + 1;
КонецЦикла;
Типичные ошибки и как их избежать
- Обращение к несуществующей строке – индекс выходит за границы. Проверяйте
ТабличнаяЧасть.Количествоперед доступом. - Неправильное имя колонки – в 1С имена чувствительны к регистру и должны точно совпадать с тем‚ что указано в метаданных.
- Изменение коллекции во время перебора – если в цикле
Для i = 0 …добавлять/удалять строки‚ индексы «съедают». Лучше использоватьДля каждогоили сначала собрать массив нужных строк. - Работа с пустыми значениями – при чтении ячейки‚ содержащей
Неопределено‚ проверяйте её черезЕсли Значение = Неопределено Тогда …. - Неправильный тип данных – например‚ попытка записать строку в числовое поле вызовет ошибку. Приводите типы явно:
Количество = Число(Строка.Количество).
Лучшие практики
- Всегда проверяйте
ТабличнаяЧасть.Количествоперед прямым доступом по индексу. - Для поиска используйте готовые методы
Найти‚НайтиПоЗначению– они быстрее и читаемее. - При изменении нескольких полей одной строки делайте это в одном блоке‚ а затем вызывайте
Записатьу родительского объекта. - Если требуется массовое добавление строк‚ используйте
ТабличнаяЧасть.Добавитьв цикле‚ а после завершения – один вызовЗаписать. - Для отладки выводите значения через
Сообщитьили записывайте в журналЖурналРегистрации.
Контакты для обращения
Контактная информация
Официальный сайт: https://www.1c.ru
Горячая линия поддержки: 8 (800) -55‑55‑55 (круглосуточно)
Номера телефонов региональных офисов:
- Москва – +7 (495) -23‑45‑67
- Санкт‑Петербург – +7 (812) -34‑56‑78
- Новосибирск – +7 (383) -45‑67‑89
Электронный адрес: support@1c.ru
Личный кабинет пользователя: https://login.1c.ru
Личный прием руководителя службы поддержки: Пн‑Пт‚ 10:00‑12:00 (по предварительной записи)
График приема: Пн‑Пт‚ 09:00‑18:00 (по московскому времени)
Отделы
- Техническая поддержка
- Продажи и лицензирование
- Обучение и сертификация
- Разработка и кастомизация
Руководство
- Иванов И.И. – Директор по развитию
- Петров П.П. – Руководитель службы поддержки
- Сидорова С.С. – Главный архитектор решений
Отзывы пользователей
Мы ценим ваше мнение! Оставить отзыв можно на официальном форуме forum.1c.ru или отправив письмо на feedback@1c.ru. Последние отзывы:
- «Отличная документация по работе с табличными частями – помогла быстро решить задачу» – Алексей К;‚ 2025‑12‑03.
- «Поддержка быстро реагирует‚ но хотелось бы больше примеров в виде готовых шаблонов» – Марина В.‚ 2026‑02‑15.
Надеемся‚ что данная статья поможет вам эффективно работать с табличными частями в 1С и быстро находить нужные ячейки. При возникновении вопросов – смело обращайтесь по указанным выше контактам.