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