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