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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Подготовка к созданию документа

Для начала работы нам необходимо обратиться к менеджеру документов. Мы используем метод СоздатьДокумент(), который создает объект в памяти сервера. Важно помнить, что объект, созданный таким образом, еще не записан в базу данных, поэтому мы можем свободно манипулировать его реквизитами.

Рассмотрим пример инициализации документа:


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

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

Программное заполнение табличной части

Основная трудность, с которой часто сталкиваются начинающие разработчики, заключается в переносе строк из табличной части формы в табличную часть нового объекта. Для этого мы используем конструкцию Для Каждого, которая позволяет последовательно обойти все строки исходной таблицы.

Разберем процесс заполнения по шагам:

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

Вот как выглядит этот процесс в коде:


// Перебираем строки табличной части, расположенной на форме
Для Каждого СтрокаТЧ Из Объект.ТочкиПрохода Цикл
    // Добавляем новую строку в ТЧ создаваемого документа
    НоваяСтрока = НовыйДокумент.ТочкиПрохода.Добавить();
    
    // Переносим данные из исходной строки в новую
    НоваяСтрока.ТочкаПрохода = СтрокаТЧ.ТочкаПрохода;
КонецЦикла;

Завершение операции: запись документа

После того как все реквизиты и табличные части заполнены, необходимо зафиксировать изменения в базе данных. Для этого мы вызываем метод Записать(). Если вы не вызовете этот метод, все данные, созданные в памяти сервера, будут утеряны после завершения работы процедуры.


// Фиксируем документ в информационной базе
НовыйДокумент.Записать();

Рекомендации по разработке и архитектуре

При реализации собственных алгоритмов создания документов важно учитывать несколько профессиональных аспектов:

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

← На главную