Для 8.2:
Открыть форму нового документа и предоставить пользователю самому интерактивно записать данные объекта в базу данных:
проще всего использовать метод глобального контекста ОткрытьФорму(). Это можно сделать на клиенте.
1 |
ОткрытьФорму("Документ.ПриходнаяНакладная.ФормаОбъекта"); |
При этом создается новый документ и открывается для редактирования основная форма этого документа.
Если нужно какое-то предварительное заполнение документа начальными данными, то это можно сделать либо с помощью свойств реквизитов документа ЗначениеЗаполнения, ЗаполнятьИзДанныхЗаполнения либо в обработчике события документа ОбработкаЗаполнения.
Создать новый документ программно, программно заполнить его данными и программно записать. Затем, если нужно, показать его пользователю:
можно программно создать документ на сервере, заполнить данными, если это нужно в обработчике события ОбработкаЗаполнения, записать, и передать ссылку на новый документ в метод глобального контекста ОткрытьЗначение(), который откроет форму этого документа. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
&НаКлиенте Процедура ПриходнаяНакладная(Команда) СсылкаНаДокумент = СоздатьНовыйДокумент(); ОткрытьЗначение(СсылкаНаДокумент); КонецПроцедуры &НаСервере Функция СоздатьНовыйДокумент() НовыйДокумент = Документы.ПриходнаяНакладная.СоздатьДокумент(); НовыйДокумент.Номер = "111"; НовыйДокумент.Дата = ТекущаяДата(); НовыйДокумент.Записать(); Возврат НовыйДокумент.Ссылка; КонецФункции |
Подробнее об использовании методов ОткрытьЗначение() и ОткрытьФорму() можно прочитать в синтакс-помощнике: Глобальный контекст — Процедуры и функции для интерактивной работы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// ЕЩЕ ПРИМЕР: &НаКлиенте Процедура СоздатьНовыйДокумент(Команда) // Вставить содержимое обработчика. Если СоздатьНовыйДокументНаСервере() = 0 Тогда Сообщить("Не удалось создать новый документ"); КонецЕсли; КонецПроцедуры &НаСервере Функция СоздатьНовыйДокументНаСервере() Перем НоваяРасходнаяНакладная; Перем СтрокаТЧ; НоваяРасходнаяНакладная=ДокРасходнаяНакладная.СоздатьДокумент(); //Заполняем реквизиты шапки НоваяРасходнаяНакладная.Дата= ТекущаяДата(); НоваяРасходнаяНакладная.Фирма =Справочники.Фирмы.ОсновнаяФирма; НоваяРасходнаяНакладная.Контрагент=Справочники.Контрагенты.НайтиПоКоду("000000001"); НоваяРасходнаяНакладная.Склад=Справочники.Склады.ОсновнойСклад; //Заполняем табличную часть СтрокаТЧ=НоваяРасходнаяНакладная.ТЧТовары.Добавить(); СтрокаТЧ.Товар=Справочники.Номенклатура.НайтиПоКоду("000000002"); СтрокаТЧ.Цена=СтрокаТЧ.Товар.РозничнаяЦена; СтрокаТЧ.Количество= 2; СтрокаТЧ.Сумма=СтрокаТЧ.Цена*СтрокаТЧ.Количество; Попытка НоваяРасходнаяНакладная.Записать(); Возврат 1; Исключение Возврат 0; КонецПопытки; КонецФункции |
Для 8.1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
//Создаем документ Выплата, Документ будет создан и показан пользователю, Но НЕ ЗАПИСАН НовДок = Документы.ЗарплатаКВыплатеОрганизаций.ПолучитьФормуНовогоДокумента(); НовДок.Дата=ТекущаяДата(); НовДок.Организация=Организация; НовДок.ПериодРегистрации=ПериодРегистрации; НовДок.ответственный= глЗначениеПеременной("глТекущийПользователь"); НовДок.Комментарий="Выплата за "+МесяцСтрока; НовДок.ЭлементыФормы.Комментарий.Доступность=Ложь; Для Каждого ТекущаяСтрока Из ТаблицыЗначений Цикл // заполним табличную часть документа, из ТаблицыЗначений НС=НовДок.зарплата.добавить(); нс.Авторасчет=истина; нс.Физлицо = ТекущаяСтрока.Физлицо; нс.ВыплаченностьЗарплаты=Перечисления.ВыплаченностьЗарплаты.НеВыплачено; нс.сумма=ТекущаяСтрока.Результат; КонецЦикла; НовДок.Открыть(); //Для создания и записи документа используется следующий код: НовДок = Документы.РасходнаяНакладная.СоздатьДокумент(); НовДок.Дата=ТекущаяДата(); НовыйДок.УстановитьНовыйНомер(); НовДок.Организация=Организация; НовДок.ПериодРегистрации=ПериодРегистрации; НовДок.ответственный= глЗначениеПеременной("глТекущийПользователь"); НовДок.Комментарий="Выплата за "+МесяцСтрока; НовДок.ЭлементыФормы.Комментарий.Доступность=Ложь; Для Каждого ТекущаяСтрока Из ТаблицыЗначений Цикл // заполним табличную часть документа, из ТаблицыЗначений НС=НовДок.зарплата.добавить(); нс.Авторасчет=истина; нс.Физлицо = ТекущаяСтрока.Физлицо; нс.ВыплаченностьЗарплаты=Перечисления.ВыплаченностьЗарплаты.НеВыплачено; нс.сумма=ТекущаяСтрока.Результат; КонецЦикла; НовДок.Записать(); //Или так: НовыйДок = Документы.ПеремещениеТоваров.СоздатьДокумент(); НовыйДок.Дата = ПолеВводаДаты; НовыйДок.УстановитьВремя(); НовыйДок.УстановитьНовыйНомер(); // Формирование табличной части Для Н=1 По N Цикл НоваяСтрока = НовыйДок.Товары.Добавить(); НоваяСтрока.Номенклатура = СтрокаДанных.Номенклатура; // формируются другие реквизиты табличной части КонецЦикла; НовыйДок.Записать(); СписокДокументов.Добавить(НовыйДок.Ссылка); |