К статье
Практический материал

Быстрый старт · 10 мин

Как добавить строку в табличную часть документа 1С

Как добавить строку в табличную часть документа 1С в пользовательском режиме и программно: кнопки, горячие клавиши, метод Добавить(), типичные ошибки и проверка результата.

Табличная часть — это список строк внутри документа или справочника 1С: товары в накладной, услуги в акте, сотрудники в ведомости. Добавить строку можно двумя способами: вручную через интерфейс программы и программно — через встроенный язык 1С. Ручной способ нужен при повседневной работе с документами, программный — при доработке конфигурации, обработках и автоматическом заполнении.

Основная сложность у новичков — не само действие, а понимание, почему кнопка добавления неактивна, почему строка не сохраняется или почему программно добавленная строка не видна на форме. Ниже разобраны оба сценария с проверкой результата, типичными ошибками и ограничениями, о которых нужно знать до начала работы.

Как добавить строку в пользовательском режиме 1С

Откройте документ, который находится в статусе «Проведён» или «Не проведён», но доступен для редактирования. Найдите нужную табличную часть — обычно она расположена на отдельной вкладке или под шапкой документа и называется «Товары», «Услуги», «Начисления» и т. п.

Стандартные способы добавить строку:

  • нажать кнопку «Добавить» в командной панели табличной части (значок с зелёным плюсом);
  • нажать клавишу Insert на клавиатуре, когда фокус стоит в табличной части;
  • кликнуть правой кнопкой мыши по табличной части и выбрать «Добавить» в контекстном меню;
  • в «тонком» клиенте и веб-клиенте — использовать меню «Ещё» над таблицей.

После добавления появляется пустая строка, курсор встаёт в первую редактируемую колонку. Заполните обязательные поля — обычно это номенклатура, количество и цена. Проверьте результат: строка должна остаться в таблице после перехода на другую строку, а документ должен записаться без сообщений об ошибках.

Порядок действий в пользовательском режиме
  1. 1
    Откройте документ и перейдите к нужной табличной части
  2. 2
    Нажмите кнопку «Добавить» или клавишу Insert
  3. 3
    Заполните обязательные поля строки: номенклатуру, количество, цену
  4. 4
    Проверьте, что сумма и итоги документа пересчитались
  5. 5
    Нажмите «Записать» или «Провести» и убедитесь в отсутствии ошибок

Копирование и множественное добавление строк

Если нужно добавить строку, похожую на существующую, быстрее скопировать её: выделите строку и нажмите F9 или кнопку «Скопировать» в командной панели. Новая строка появится с теми же значениями — останется изменить только отличающиеся поля.

Для массового добавления в типовых конфигурациях есть специальные механизмы: кнопка «Подбор» открывает форму выбора номенклатуры, где можно отметить несколько позиций сразу, и они добавятся в табличную часть одним действием. В некоторых документах доступна загрузка из файла Excel через встроенную обработку «Загрузка данных из табличного документа».

Копирование через буфер обмена (Ctrl+C / Ctrl+V) тоже работает в табличных частях, но переносит данные только в пределах видимых колонок. Скрытые реквизиты строки при таком способе могут не перенестись — проверяйте результат после вставки.

Почему кнопка «Добавить» неактивна или строка не сохраняется

Самая частая причина — документ проведён, а в конфигурации запрещено редактирование проведённых документов, либо у пользователя нет прав на изменение. Второй типичный случай — документ находится в закрытом периоде: действует дата запрета редактирования, и программа блокирует любые изменения.

Также добавление может быть недоступно, если табличная часть заполняется автоматически по данным другого объекта (например, на основании заказа), и разработчик намеренно отключил ручное редактирование. В этом случае строки добавляются кнопкой «Заполнить» или изменением исходного документа.

Маршрут решения

Как выбрать действие

Кнопка «Добавить» серая и не нажимаетсяПроверьте права пользователя, статус проведения документа и дату запрета редактирования
Строка добавляется, но исчезает после записиПроверьте обязательность заполнения полей и наличие программной очистки табличной части в обработчиках
Табличная часть заполнена, но менять её нельзяВозможно, редактирование отключено разработчиком — используйте команду «Заполнить» или измените документ-основание

Как добавить строку программно: метод Добавить()

При доработке конфигурации или написании внешней обработки строки в табличную часть добавляют методом Добавить(). Метод создаёт новую строку в коллекции и возвращает ссылку на неё, после чего реквизиты строки заполняются обращением через точку.

НоваяСтрока = Объект.Товары.Добавить();

НоваяСтрока.Номенклатура = НайденнаяНоменклатура;

НоваяСтрока.Количество = 5;

НоваяСтрока.Цена = 1200;

НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;

Здесь Объект — это объект документа (например, ДокументОбъект.РеализацияТоваровУслуг или данные формы), а Товары — имя табличной части, заданное в конфигураторе. Имена реквизитов (Номенклатура, Количество, Цена) должны точно соответствовать метаданным конкретной конфигурации — в разных решениях они отличаются.

Если работа идёт в модуле формы, обращение выглядит иначе — через Объект.Товары.Добавить() для управляемых форм, где Объект — реквизит формы. После добавления строк на форме важно вызвать пересчёт итогов, если он реализован в конфигурации отдельной процедурой.

bsl
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = СсылкаНаНоменклатуру;
НоваяСтрока.Количество = 1;
Объект.Записать();

Сохранение изменений и запись объекта

Ключевой момент, который упускают начинающие разработчики: метод Добавить() изменяет объект только в памяти. Чтобы строка сохранилась в базе данных, объект нужно записать — вызвать Объект.Записать() или Объект.Записать(РежимЗаписиДокумента.Проведение), если требуется проведение.

При программном заполнении табличной части существующего документа сначала получите объект из ссылки: ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект();. Работа напрямую со ссылкой не позволит изменить данные — ссылка доступна только для чтения. После добавления строк и заполнения реквизитов обязательно вызовите ДокОбъект.Записать();.

Если документ уже проведён, запись в режиме проведения пересчитает движения по регистрам. Учитывайте это: изменение табличной части проведённого документа изменит данные учёта — остатки, взаиморасчёты, проводки. Перед массовой обработкой сделайте резервную копию базы или сначала проверьте обработку на копии.

Типичные ошибки при добавлении строк

Ошибки встречаются и у пользователей, и у разработчиков. У пользователей чаще всего проблема в незаполненных обязательных полях: программа не даёт записать документ и подсвечивает строку с ошибкой. Решение — заполнить все поля, отмеченные красной рамкой, или удалить лишнюю пустую строку клавишей Delete.

У разработчиков типовые проблемы другие: обращение к несуществующему имени табличной части, запись ссылки вместо объекта, отсутствие вызова Записать(). Ещё одна распространённая ситуация — строка добавляется в коллекцию данных формы, но не отображается, потому что таблица на форме связана с другим реквизитом.

Типичные ошибки
01
Вызов Добавить() без последующего Объект.Записать() — строка существует только в памяти и теряется
02
Попытка изменить данные через ссылку — Ссылка.Товары.Добавить() вызовет ошибку, нужен ПолучитьОбъект()
03
Опечатка в имени табличной части или реквизита — программа сообщит «Поле объекта не обнаружено»
04
Добавление строки без заполнения обязательных реквизитов — документ не проводится из-за контроля заполнения
05
Игнорирование пересчёта сумм и НДС — итоги документа расходятся с данными строк

Проверка результата после добавления строки

После ручного добавления убедитесь, что строка осталась в таблице после записи документа, итоговые суммы в подвале табличной части пересчитались, а при проведении не появилось сообщений о незаполненных полях. Если документ формирует движения, можно открыть отчёт по движениям документа и проверить, что новая позиция отразилась в учёте.

После программного добавления проверьте результат запросом или повторным открытием документа: количество строк в табличной части должно увеличиться, значения реквизитов — соответствовать заданным в коде. Если строка есть в объекте, но не видна на форме, проблема в привязке элемента формы к данным, а не в самом добавлении.

Контрольные точки

Как проверить результат

Строка в табличной части после записи
Норма

Строка сохранилась, поля заполнены, документ записан без ошибок

Тревожный признак

Строка исчезла или документ не записывается с сообщением об ошибке

Итоги документа
Норма

Сумма по документу увеличилась на сумму новой строки

Тревожный признак

Итоги не изменились — возможно, сумма строки не рассчитана

Программное добавление
Норма

После Записать() строка видна при повторном открытии документа

Тревожный признак

Строка отсутствует — не вызван Записать() или работа шла со ссылкой

Частые вопросы

Можно ли добавить строку в проведённый документ?

Да, если у пользователя есть права на редактирование и не установлена дата запрета изменения данных. После добавления строки документ нужно перепровести, чтобы изменения отразились в учёте. Учтите, что перепроведение изменит движения по регистрам.

Как добавить сразу несколько строк?

В пользовательском режиме используйте кнопку «Подбор» — она позволяет выбрать несколько позиций номенклатуры одним действием. Программно вызывайте метод Добавить() в цикле, заполняя реквизиты каждой новой строки, и запишите объект один раз после цикла.

Почему программа пишет «Поле объекта не обнаружено» при добавлении строки?

Эта ошибка означает опечатку в имени табличной части или реквизита. Откройте конфигуратор, найдите документ и сверьте точное имя табличной части и её полей — имена в коде должны совпадать с метаданными, включая регистр букв.

Как удалить случайно добавленную пустую строку?

Выделите строку и нажмите Delete или кнопку «Удалить» в командной панели табличной части. Программно используйте метод Удалить() с указанием строки: Объект.Товары.Удалить(СтрокаТаблицы).

Можно ли добавить строку в закрытом периоде?

Нет, если установлена дата запрета редактирования — программа заблокирует изменение документа. Нужно либо временно сдвинуть дату запрета (требуются соответствующие права), либо вносить корректировку документом текущего периода.

Итог

Что важно запомнить

В пользовательском режиме строку добавляют кнопкой «Добавить» или клавишей Insert, программно — методом Добавить() с обязательной последующей записью объекта. Если кнопка неактивна, проверяйте права, проведение и дату запрета; если строка не сохраняется — обязательные поля и вызов Записать(). Массовые программные изменения проведённых документов выполняйте только после резервного копирования.