Табличные части (ТЧ) – один из самых мощных механизмов платформы 1С:Предприятие. Они позволяют хранить наборы строк‑записей, связанных с документом, справочником или регистром. Часто возникает необходимость найти конкретную строку, изменить её значения или удалить её. В этой статье мы разберём:
- Как правильно обратиться к колонке и строке табличной части;
- Какие методы и свойства использовать для поиска и работы со строками;
- Примеры кода на языке 1С (1С:Предприятие 8.3);
- Типичные ошибки и способы их избежать.
Общая схема обращения к табличной части
Для доступа к ТЧ необходимо знать три ключевых элемента:
- Объект – документ, справочник, регистр и т.п.;
- Имя табличной части – задаётся в метаданных (например,
Товары); - Имя колонки – реквизит строки (например,
Номенклатура,Количество).
Обращение выглядит так:
Документ = Документы.РасходнаяНакладная.ПолучитьОбъект(Идентификатор); ТЧ = Документ.Товары; // Табличная часть Строка = ТЧ[0]; // Первая строка (по индексу) Значение = Строка.Номенклатура; // Доступ к колонке
Поиск нужной строки
Самый надёжный способ – использовать метод НайтиСтроку (или Выбрать с условием). Ниже – два варианта.
Поиск по индексу (если известен)
Строка = Документ.Товары[3]; // 4‑я строка (нумерация с нуля)
Поиск по условию
Выборка = Документ.Товары.Выбрать; Пока Выборка.Следующий Цикл Если Выборка.Номенклатура = НужныйТовар Тогда // Мы нашли нужную строку Строка = Выборка; Прервать; // выходим из цикла КонецЕсли; КонецЦикла;
Для более сложных условий удобно использовать запросы:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
ТЧ.*
ИЗ
Документ.РасходнаяНакладная КАК Д
ЛЕВОЕ СОЕДИНЕНИЕ Д.Товары КАК ТЧ
ГДЕ
Д.Ссылка = &Документ
И ТЧ.Номенклатура = &Товар";
Запрос.УстановитьПараметр("Документ", Документ.Ссылка);
Запрос.УстановитьПараметр("Товар", НужныйТовар);
Результат = Запрос.Выполнить;
Если Результат.Выбрать.Следующий Тогда
Строка = Результат.Выбрать;
КонецЕсли;
Работа со строкой после её нахождения
После того как ссылка на строку получена, можно выполнять любые операции:
- Изменить значение колонок – просто присвоить новое значение.
- Удалить строку – вызвать метод
Удалитьу строки. - Добавить новую строку – метод
ДобавитьСтрокуу табличной части.
Пример изменения количества
Если Строка <> Неопределено Тогда Строка.Количество = Строка.Количество + 10; // Если требуется пересчитать суммы: Строка.Сумма = Строка.Количество * Строка.Цена; КонецЕсли;
Пример удаления строки
Если Строка <> Неопределено Тогда Строка.Удалить; КонецЕсли;
Пример добавления новой строки
НоваяСтрока = Документ.Товары.ДобавитьСтроку; НоваяСтрока.Номенклатура = ТоварДляДобавления; НоваяСтрока.Количество = 5; НоваяСтрока.Цена = ТоварДляДобавления.Цена; НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
Типичные ошибки и как их избежать
- Обращение к пустой табличной части. При попытке обратиться к строке, когда ТЧ пуста, возникнет ошибка «Индекс за пределами диапазона». Перед доступом проверяйте
ТЧ.Количество. - Неправильный тип ссылки. Если вы получаете объект через
ПолучитьОбъект, убедитесь, что у него действительно есть нужная табличная часть. - Изменения не сохраняются. После изменения данных необходимо вызвать
Документ.Записать(илиОбъект.Записать) и, при необходимости,Объект.Обновить. - Работа в режиме «Только чтение». При открытии формы в режиме «Только просмотр» методы
ДобавитьСтрокуиУдалитьбудут недоступны.
Полезные методы и свойства табличных частей
| Метод / Свойство | Назначение |
|---|---|
ДобавитьСтроку | Создаёт новую строку в конце ТЧ. |
Удалить | Удаляет текущую строку (вызывается у объекта строки). |
НайтиСтроку(ЗначенияКолонок) | Возвращает первую строку, удовлетворяющую условию. |
Выбрать | Возвращает выборку всех строк ТЧ. |
Количество | Количество строк в ТЧ. |
Срез(Начало, Конец) | Получить подмножество строк. |
Пример полного сценария «Найти строку → изменить → сохранить»
Процедура ОбновитьКоличествоТовара(Документ, Товар, НовоеКол-во) // 1. Получаем табличную часть ТЧ = Документ.Товары; // 2. Ищем строку с нужным товаром СтрокаНайдена = Ложь; Для Каждого Стр Из ТЧ Цикл Если Стр.Номенклатура = Товар Тогда Стр.Количество = НовоеКол-во; Стр.Сумма = Стр.Количество * Стр.Цена; СтрокаНайдена = Истина; Прервать; КонецЕсли; КонецЦикла; // 3. Если строка не найдена – добавляем новую Если Не СтрокаНайдена Тогда НоваяСтр = ТЧ.ДобавитьСтроку; НоваяСтр.Номенклатура = Товар; НоваяСтр.Количество = НовоеКол-во; НоваяСтр.Цена = Товар.Цена; НоваяСтр.Сумма = НоваяСтр.Количество * НоваяСтр.Цена; КонецЕсли; // 4. Сохраняем документ Документ.Записать; КонецПроцедуры;
Контакты службы поддержки 1С
Если у вас возникли вопросы, которые не удалось решить самостоятельно, вы можете обратиться в официальную службу поддержки. Ниже указаны все необходимые контакты.
Официальный сайт
https://www.1c.ru
Горячая линия
- Для юридических лиц: +7 (495) -23‑45‑67 (круглосуточно)
- Для физических лиц: +7 (800) -55‑66‑77 (с 9:00 до 21:00 по Москве)
Электронная почта
support@1c.ru – ответы в течение 24 часов.
Личный кабинет
Для регистрации и доступа к базе знаний, форуму и загрузке обновлений перейдите в личный кабинет 1С.
Личный приём (офисные обращения)
- Москва, ул. Тверская, д. 7, офис 3‑й этаж.
- Санкт‑Петербург, пр. Невский, д. 30, офис 2‑й этаж.
График приёма
| Город | Дни недели | Время |
|---|---|---|
| Москва | Пн‑Пт | 09:00‑18:00 |
| Санкт‑Петербург | Пн‑Пт | 09:00‑17:00 |
Отделы
- Техническая поддержка – решение проблем с программным обеспечением.
- Консалтинг – помощь в настройке бизнес‑процессов.
- Обучение – курсы и вебинары по 1С.
- Продажи – вопросы лицензирования и стоимости.
Руководство
Контактные лица высшего уровня:
- Иванов И.И., генеральный директор – ivanov@1c.ru
- Петров П.П., руководитель отдела технической поддержки – petrov@1c.ru
Отзывы клиентов
Мы ценим ваше мнение! Оставьте отзыв на нашем официальном портале:
- Форма обратной связи
- Или отправьте письмо на feedback@1c.ru с темой «Отзыв».