Цель статьи – показать, как программно работать с отдельными строками табличных частей в 1С:Предприятие 8.x, как получить доступ к только‑что добавленной строке и какие подводные камни могут возникнуть.
Содержание - Что такое табличная часть?
- Обращение к элементу табличной части
- Примеры кода
- Типичные ошибки и их решение
- Полезные рекомендации
- Контакты для обращения
Что такое табличная часть?
Табличная часть (ТЧ) – это реквизит‑таблица, который хранит набор строк с полями (колонками). Она используется в документах, справочниках и регистровых объектах. Каждая строка ТЧ представлена объектом СтрокаТабличнойЧасти, а доступ к строкам осуществляется через массив Элементы.<ИмяТЧ> на форме или через реквизит Объект.<ИмяТЧ> в коде бизнес‑логики.
Обращение к элементу табличной части
Существует два основных сценария:
- Пользователь вручную выбирает строку – в этом случае удобно использовать свойство
ТекущиеДанные:
СтрокаТЧ = Элементы.НаименованиеТЧ.ТекущиеДанные; - Строка добавлена программно – необходимо получить объект сразу после вызова
ДобавитьСтрокуили обратиться к последнему элементу массива.
Самый надёжный способ – сохранить возвращаемый объект в переменную:
СтрокаТЧ = Элементы.НаименованиеТЧ.ДобавитьСтроку; После этого можно заполнять её поля:
СтрокаТЧ.Колонка1 = "Значение 1";
СтрокаТЧ.Колонка2 = 123;
СтрокаТЧ.КолонкаДата = ТекущаяДата; Примеры кода Добавление строки в обработчике ПриОткрытии формы Процедура ПриОткрытии(Отказ, СтандартнаяОбработка)
// Добавляем строку
НоваяСтрока = Элементы.ДокументыСотрудника.ДобавитьСтроку;
// Заполняем поля
НоваяСтрока.Наименование = "Новый документ";
НоваяСтрока.Количество = 1;
НоваяСтрока.Дата = ТекущаяДата;
// При необходимости делаем её текущей
Элементы.ДокументыСотрудника.УстановитьТекущуюСтроку(НоваяСтрока);
КонецПроцедуры
Обращение к последней строке без сохранения ссылки
ПриОткрытии формы Процедура ПриОткрытии(Отказ, СтандартнаяОбработка)
// Добавляем строку
НоваяСтрока = Элементы.ДокументыСотрудника.ДобавитьСтроку;
// Заполняем поля
НоваяСтрока.Наименование = "Новый документ";
НоваяСтрока.Количество = 1;
НоваяСтрока.Дата = ТекущаяДата;
// При необходимости делаем её текущей
Элементы.ДокументыСотрудника.УстановитьТекущуюСтроку(НоваяСтрока);
КонецПроцедуры Обращение к последней строке без сохранения ссылки
Если по какой‑то причине ссылка не сохраняется, можно обратиться к последнему элементу массива:
Кол = Элементы.ДокументыСотрудника.Количество;
Если Кол > 0 Тогда
ПоследняяСтрока = Элементы.ДокументыСотрудника[Кол ⏤ 1];
// Заполняем её
ПоследняяСтрока.Наименование = "Заполнено позже";
КонецЕсли; Обратите внимание, что в управляемых формах массив Элементы.<ИмяТЧ> не имеет метода Количество. Вместо него используется свойство Элементы.<ИмяТЧ>.Количество или обращение к Элементы.<ИмяТЧ>.Значение.Количество (см. пример ниже).
Работа с объектом в серверном контексте Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура, Количество
ИЗ Справочник.Номенклатура
ГДЕ ПометкаУдаления = ЛОЖЬ";
Результат = Запрос.Выполнить;
Выборка = Результат.Выбрать;
Пока Выборка.Следующий Цикл
Строка = Объект.ТабличнаяЧасть.Добавить;
Строка.Номенклатура = Выборка.Номенклатура;
Строка.Количество = 1;
КонецЦикла;
Типичные ошибки и их решение
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура, Количество
ИЗ Справочник.Номенклатура
ГДЕ ПометкаУдаления = ЛОЖЬ";
Результат = Запрос.Выполнить;
Выборка = Результат.Выбрать;
Пока Выборка.Следующий Цикл
Строка = Объект.ТабличнаяЧасть.Добавить;
Строка.Номенклатура = Выборка.Номенклатура;
Строка.Количество = 1;
КонецЦикла;| Ошибка | Причина | Решение |
|---|---|---|
Метод Количество не найден | В управляемых формах массив Элементы.<ИмяТЧ> не поддерживает метод Количество. | Использовать свойство Элементы.<ИмяТЧ>.Значение.Количество или Элементы.<ИмяТЧ>.Количество (в зависимости от версии). |
ТекущиеДанные возвращает Неопределено после ДобавитьСтроку | Строка добавлена, но текущая строка формы не меняется автоматически. | Сохранить ссылку в переменную сразу после ДобавитьСтроку или вызвать Элементы.<ИмяТЧ>.УстановитьТекущуюСтроку(Строка). |
Ошибка «Объект не найден» при обращении к Объект.<ИмяТЧ>.Добавить | Объект Объект (например, документ) ещё не записан или не инициализирован. | Убедиться, что объект создан (например, Документ = Документы.РасходнаяНакладная.СоздатьДокумент;) и находится в нужном контексте (клиент/сервер). |
Полезные рекомендации - Всегда сохраняйте ссылку на добавленную строку – это избавит от необходимости искать её позже.
- Если требуется добавить несколько строк, используйте цикл и массив
ТаблицаЗначений для ускорения. - Для массового заполнения лучше использовать
Объект.<ИмяТЧ>.Значение = ТаблицаЗначений; – это один вызов записи. - При работе в управляемых формах помните, что свойства элементов доступны только после их инициализации (обычно в
ПриОткрытии). - Для отладки выводите
Сообщить(Строка.ИмяКолонки) или используйте Отладка в режиме отладки.
Контакты для обращения
ТаблицаЗначений для ускорения.Объект.<ИмяТЧ>.Значение = ТаблицаЗначений; – это один вызов записи.ПриОткрытии).Сообщить(Строка.ИмяКолонки) или используйте Отладка в режиме отладки.Если у вас возникли вопросы, требуется консультация или вы хотите поделиться отзывом – используйте любые из перечисленных способов.
Официальный сайт
https://www.infostart.ru
Горячая линия
8 (800) -55‑33‑22 (круглосуточно)
Номера телефонов - Техническая поддержка: +7 (495) -23‑45‑67
- Отдел продаж: +7 (495) -65‑43‑21
- Сервисный центр: +7 (495) -87‑65‑43
Электронный адрес
support@infostart.ru
Личный кабинет
Для доступа к личному кабинету перейдите по ссылке: https://cabinet.infostart.ru
Личный приём
Приёмные часы специалиста по 1С: Пн‑Пт, 10:00‑12:00. Запись через форму записаться на приём.
График приёма
| День недели | Время |
|---|---|
| Понедельник | 10:00‑12:00, 14:00‑16:00 |
| Вторник | 10:00‑12:00, 14:00‑16:00 |
| Среда | 10:00‑12:00 |
| Четверг | 10:00‑12:00, 14:00‑16:00 |
| Пятница | 10:00‑12:00 |
| Суббота, Воскресенье | — |
Отделы - Отдел разработки – dev@infostart.ru
- Отдел внедрения – implement@infostart.ru
- Отдел обучения – training@infostart.ru
Руководство
Генеральный директор – Иванов И.И.
Технический директор – Петров П.П.
Контактный телефон директора: +7 (495) -11‑22‑33
Отзывы
Мы ценим ваше мнение! Оставьте отзыв на нашем сайте:
- Отзывы клиентов
- Электронная форма: feedback@infostart;ru
Дата публикации: