Создание нового документа в 1с 8.3. Как программно заполнить и открыть форму нового документа

Всем доброго дня!
Думаю, что информация в данной теме будет очень полезна многим посетителям этого форума.
Долгое время не мог решить задачу – как открыть форму нового документа так, чтобы она открылась не пустая, а уже частично заполненная программно, при этом сам документ еще не записан в базу? Очень много времени потратил на поиски решения данной проблемы в интернете, посетил много форумов, на которых поднимался данный вопрос, но лишь на немногих из них попадались варианты решения. Самый простой из них – сначала программно создать новый документ, программно заполнить нужные его реквизиты, записать документ в базу, и потом уже открыть его пользователю. А что, если пользователь не захочет его сохранять? Что, если он передумает, и закроет открытую форму? В этом случае уже записанный документ так и останется в базе данных. А кому нужны в базе лишние документы?
А если же не сохранять документ, то самый популярный вариант – использовать метод ПолучитьФорму(«Документы.НужныйВидДокумента.ФормаДокумента»). Но в этом случае можно получить пустую форму документа и просто вывести на экран методом Открыть(). Это тоже не вариант…
Спустя какое-то время задачу удалось решить с помощью функции глобального контекста «ЗаполнитьЗначенияСвойств».

Глобальный контекст
ЗаполнитьЗначенияСвойств (FillPropertyValues)
Синтаксис:
ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <Список свойств>, <Исключая свойства>)
Описание:
Копирует значения свойств <Источника> в свойства <Приемника>. Сопоставление производится по именам свойств.

На примере своей задачи хотел бы объяснить, как можно использовать эту функцию для заполнения формы нового документа. Задача была в следующем – Имеется один документ (Заказ-наряд), реквизитом табличной части которого является другой документ (Оказание услуг). Так вот, нужно было сделать так, чтобы при добавлении в табличную часть «Заказ-наряда» нового документа «Оказание услуг», на экран выводилась форма нового документа «Оказание услуг» с уже заполненными реквизитами, взятыми из того заказ-наряда, из которого было вызвано создание. При этом, чтобы сам новый документ, на момент появления его формы на экране, еще не был записан в базу. Это нужно было сделать, если пользователь вдруг решит не заполнять документ и просто закроет форму.
Вот фрагмент кода с решением задачи:

&НаКлиенте Процедура ВвестиЗапись() ФормаЗаписи = ПолучитьФорму("Документ.ОказаниеМедУслуг.ФормаОбъекта"); ЗаполнитьЗначенияСвойств(ФормаЗаписи.Объект,Объект,"Дата,Специалист,Специализация,МедСестра,СтатусИсполнения",); // Заполняем значения реквизитов, имена которых совпадают в обоих документах ТекСтр = Элементы.Прием.ТекущиеДанные; //Данные текущей строки документа-источника СтруктураСвойств = Новый Структура; // Структура содержит значения тех реквизитов, которые нужно заполнить на форме нового документа, но которых нет в документе-источнике СтруктураСвойств.Вставить("НарядЗапись",Объект.Ссылка); СтруктураСвойств.Вставить("ВремяПриема",ТекСтр.ВремяПриема); ЗаполнитьЗначенияСвойств(ФормаЗаписи.Объект,СтруктураСвойств,"НарядЗапись,ВремяПриема",); ФормаЗаписи.Открыть(); КонецПроцедуры

То есть, все операции делаем непосредственно на клиенте, без обращения к серверу, в пределах одной самостоятельно созданной процедуры. По сути, таким способом можно заполнить и открыть форму как любого документа, так и справочника. Сначала я заполнил реквизиты из одной формы в другую, используя объекты форм, а затем, с помощью объекта «Структура», в который вставил недостающие реквизиты, заполнил еще некоторые реквизиты открываемой формы, а затем открыл форму.
Надеюсь, что эта темя сэкономит время многим, кто столкнулся с подобной задачей!

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

Открывается окно, в котором следует заполнить нужную информацию. Отметим, что в поле «Имя» нельзя оставлять пробелы. Если название документа состоит из нескольких слов, используйте нижнее подчеркивание. Поле «Синоним» служит для более читабельного вида названия нового документа. Здесь пробелы допустимы, и данное поле заполняется автоматически. Также, полезно будет заполнить поле «Представление списка», если вы хотите, чтобы новый документ «Накладная» в списке документов отображался как «Накладные». Вкладка «Подсистемы» служит для настройки нужных категорий пользователей, для которых будет отображаться данный документ 1с.


Пожалуй, самая важная вкладка при создании нового документа 1с 8.2 — это «Данные». Здесь требуется указать все реквизиты, которые нужны в документе. При необходимости, можно добавить табличные части. Вкладка «Нумерация» позволяет вести нумерацию документов. Здесь можно использовать внешний нумератор, или сделать нумерацию только документов этого вида. При этом, существует возможность выбора времени обнуления нумерации, например, в пределах года или месяца. Чтобы создать форму документа в 1с, перейдите на вкладку «Формы». Здесь вы сможете настроить внешний вид нового документа и его списка.


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

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

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

Создание документа в конфигураторе 1С

И так приступим. Создаем новую базу и заходим в конфигуратор. При первом запуске новой базы необходимо открыть конфигурацию. Для этого в окне ищем значек конфигурации и кликаем на него.

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

Открылось окно Документа тут очень много различных вкладок о них пока говорить не буду так как мы с вами создаем простой документ. Заполняем на вкладке Основные имя документа например напишем Приход товара. Кстати писать нужно все слитно и с большой буквы. Остальные поля пока оставляем пустыми.

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

Теперь необходимо создать табличную часть. Так кликаем на плюсик и пишем в поле имя Материалы. Остальное пока не трогаем.

Теперь необходимо в нашу таблицу Материалы добавить колонки а именно Наименование, Количество, Цена и Сумма. Для этого на таблице материалы кликаем правой кнопкой и Выбираем Добавить Реквизиты табличной части.

В окне Свойств пишем Имя, Тип оставляем Строка а вот длину немного увеличим до 50 знаков так.

Таким же образом создаем остальные элементы (Количество, Цена, Сумма) только в поле Тип выбираем число.

Теперь перейдем на вкладку Формы и создадим форму нажав на плюс и в открывшемся окне кликаем Готово.

Ну вот в принципе и все документ 1С создан осталось только запустить 1С и проверить что получилось. Для этого в окне конфигуратора кликаем на значек Начать отладку.

После того как 1С запуститься смотрим что у нас получилось. Я немного заполнил поля что бы документ приобрел более презентабельный вид.

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