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