Быстрый старт · 9 мин
Как создать строку в табличной части 1С
Как добавить строку в табличную часть документа или справочника 1С: кнопки, горячие клавиши, программные методы Добавить() и типичные ошибки новичков.
Табличная часть — это блок строк внутри документа или справочника: товары в накладной, услуги в акте, сотрудники в приказе. Без хотя бы одной заполненной строки большинство документов 1С не проводится, поэтому умение быстро и правильно создавать строки — базовый навык и для пользователя, и для разработчика.
Способов добавить строку несколько: через интерфейс формы, с клавиатуры, копированием существующей строки и программно — через встроенный язык 1С. Выбор зависит от задачи: разовый ввод удобнее делать мышью, массовое заполнение — обработкой или кодом.
Ниже разобраны все рабочие варианты для управляемых форм (такси-интерфейс 1С:Предприятие 8.3), а также программные методы с примерами кода, проверкой результата и разбором типичных ошибок.
Что такое табличная часть и где она встречается
Табличная часть — это коллекция однотипных строк, хранящаяся внутри объекта вместе с его «шапкой». У документа «Реализация товаров и услуг» это таблицы «Товары» и «Услуги», у справочника «Номенклатура» — например, таблица дополнительных реквизитов.
Каждая строка табличной части имеет свой набор реквизитов (колонок): номенклатура, количество, цена, сумма. Строки нумеруются автоматически, а при записи объекта сохраняются вместе с ним как единое целое — отдельно от документа строка существовать не может.
Важно понимать: пока объект не записан, добавленные строки хранятся только в памяти. Если закрыть форму без записи, введённые строки пропадут.
Добавление строки через интерфейс формы
Самый простой способ — кнопка «Добавить» на командной панели табличной части. Обычно она расположена прямо над таблицей и выглядит как плюс или надпись «Добавить». После нажатия в конец таблицы вставляется пустая строка, и курсор автоматически переходит в первую редактируемую колонку.
Альтернатива — контекстное меню: щёлкните правой кнопкой мыши по любой строке таблицы и выберите «Добавить». В некоторых конфигурациях доступна также кнопка «Подбор», которая открывает форму выбора номенклатуры и добавляет сразу несколько строк — это быстрее при вводе большого документа.
После появления строки заполните обязательные колонки: обычно это номенклатура и количество. Цена и сумма в типовых конфигурациях чаще всего рассчитываются автоматически, но это зависит от настроек конкретной конфигурации.
- 1Откройте документ или создайте новый
- 2Перейдите на вкладку с нужной табличной частью
- 3Нажмите «Добавить» или клавишу Insert
- 4Заполните обязательные колонки строки
- 5Запишите документ кнопкой «Записать» или «Провести»
Горячие клавиши и быстрое копирование строк
Клавиша Insert — самый быстрый способ добавить строку без мыши. Она работает практически во всех табличных частях, пока фокус находится в таблице. Для удаления строки используется Delete (в ряде конфигураций — Shift+Delete, если Delete очищает только ячейку).
Если нужно добавить несколько похожих строк, удобнее копирование: выделите строку и нажмите F9 или выберите «Скопировать» в контекстном меню. Новая строка появится со всеми заполненными колонками — останется изменить только отличающиеся значения, например количество.
Полезные сочетания при работе со строками: Ctrl+стрелки для перемещения по таблице, F2 для перехода в режим редактирования ячейки, Enter для завершения ввода и перехода к следующей колонке. Освоение этих клавиш заметно ускоряет ввод длинных документов.
Программное создание строки методом Добавить()
Во встроенном языке 1С строка табличной части создаётся методом Добавить() коллекции. Метод возвращает ссылку на новую строку, через которую заполняются реквизиты. После заполнения объект нужно записать, иначе изменения не сохранятся в базе.
ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
ДокументОбъект.Дата = ТекущаяДата();
ДокументОбъект.Организация = Организация;
НоваяСтрока = ДокументОбъект.Товары.Добавить();
НоваяСтрока.Номенклатура = НайденнаяНоменклатура;
НоваяСтрока.Количество = 5;
НоваяСтрока.Цена = 1200;
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Для добавления строки в существующий объект сначала получите объект по ссылке методом ПолучитьОбъект(), затем добавьте строку и запишите. Работать напрямую со ссылкой нельзя — ссылка только идентифицирует объект, но не даёт доступа к изменению данных.
Если строк много, добавляйте их в цикле: обходите массив, таблицу значений или результат запроса и для каждой итерации вызывайте Добавить(). Записывайте объект один раз после цикла — запись внутри цикла резко замедляет выполнение.
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = ТекНоменклатура;
НоваяСтрока.Количество = 1;Вставка строки в нужную позицию и заполнение из другой таблицы
Метод Добавить() всегда помещает строку в конец табличной части. Если нужно вставить строку в середину, используйте метод Вставить(Индекс): он принимает позицию, начиная с нуля, и сдвигает остальные строки вниз.
Для массового копирования строк из другой таблицы значений есть метод Загрузить(): он полностью замещает табличную часть содержимым переданной таблицы. Перед вызовом убедитесь, что имена колонок совпадают, иначе часть данных не перенесётся. Если нужно добавить строки, не очищая существующие, обходите таблицу значений циклом и вызывайте Добавить() с заполнением через ЗаполнитьЗначенияСвойств().
// Вставка строки второй позицией
НоваяСтрока = Объект.Товары.Вставить(1);
НоваяСтрока.Номенклатура = ТекНоменклатура;
// Перенос строк из таблицы значений
Для Каждого СтрокаТЗ Из ТаблицаИсточник Цикл
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ);
КонецЦикла;
Проверка результата и типичные ошибки
После добавления строки визуально проверьте: строка появилась в таблице, номер строки присвоен, обязательные колонки заполнены. При программном добавлении проверяйте количество строк через конструкцию Объект.Товары.Количество() до и после операции.
Самая частая ошибка — добавление строки без последующей записи объекта: в форме всё выглядит заполненным, но после закрытия данные теряются. Вторая типичная проблема — попытка заполнить несуществующий реквизит строки: в программном коде это вызывает ошибку «Поле объекта не обнаружено», поэтому сверяйте имена реквизитов с конфигуратором.
Ещё одна ловушка — автоматический пересчёт итогов. В типовых конфигурациях суммы и налоги рассчитываются в обработчиках формы (при изменении количества или цены). При программном заполнении эти обработчики не срабатывают, поэтому суммы нужно рассчитывать в коде самостоятельно или вызывать соответствующие процедуры из общих модулей конфигурации.
Как проверить результат
Появилась новая строка с номером, обязательные поля заполнены
Строка серая, не редактируется или исчезает после записи
Метод Количество() возвращает ожидаемое число после записи
Количество не изменилось — объект не был записан
Суммы по строкам и итог документа совпадают
Строки есть, а итоги нулевые — не выполнен пересчёт
Часто задаваемые вопросы
Почему кнопка «Добавить» в табличной части неактивна?
Чаще всего объект открыт в режиме просмотра, у пользователя нет прав на изменение, либо документ проведён и конфигурация запрещает его редактирование. Проверьте также, не установлена ли дата запрета редактирования и не заблокирован ли объект другим пользователем.
Как добавить строку не в конец, а в середину табличной части?
В форме — выделите строку, над которой нужна новая, и используйте соответствующий пункт контекстного меню, если он предусмотрен конфигурацией. Программно применяйте метод Вставить(Индекс), где индекс отсчитывается с нуля.
Можно ли добавить сразу несколько строк одним действием?
Да. В типовых конфигурациях для этого служит кнопка «Подбор» — она позволяет выбрать несколько позиций номенклатуры, и каждая станет отдельной строкой. Программно массовое добавление делается циклом с вызовом Добавить() на каждой итерации.
Почему после программного добавления строки суммы равны нулю?
Пересчёт сумм в типовых конфигурациях выполняется обработчиками событий формы, которые не вызываются при программном заполнении. Рассчитайте сумму, НДС и итоги в коде вручную или вызовите штатные процедуры пересчёта из общих модулей конфигурации.
Как удалить ошибочно добавленную строку?
В форме выделите строку и нажмите Delete или кнопку удаления на панели таблицы, затем запишите объект. Программно используйте метод Удалить(Строка) или Очистить() для удаления всех строк табличной части.
Строка добавляется, но пропадает после закрытия документа. В чём причина?
Объект не был записан после добавления строки. Строки табличной части существуют только внутри объекта и сохраняются в базе вместе с ним — всегда выполняйте запись или проведение после изменений.
Что важно запомнить
В форме строка добавляется кнопкой «Добавить» или клавишей Insert, копируется клавишей F9. Программно используется метод Добавить() с последующим заполнением реквизитов и обязательной записью объекта. При программном заполнении пересчёт сумм выполняйте в коде — обработчики формы не срабатывают.