Как создать документ, заполнить и добавить в ТЧ другого документа
1С 8.3 КА 2.4 (упр. формы)
Добрый день, есть проблема, которую никак не удается решить. Есть документ Заявка в ней ТЧ_Перевозки, по кнопке создаю документ Перевозка, пользователь заполняет форму и проводит документ. Этот документ должен добавиться в ТЧ_Перевозки.
Создаю документ так:
После этого пытался ПриСозданииНаСервере отловить ссылку, и добавить туда свежесозданный документ, но ничего не вышло. Я уверен есть более правильное решение. Подскажите пожалуйста, или киньте пример подобной ситуации.
Добрый день, есть проблема, которую никак не удается решить. Есть документ Заявка в ней ТЧ_Перевозки, по кнопке создаю документ Перевозка, пользователь заполняет форму и проводит документ. Этот документ должен добавиться в ТЧ_Перевозки.
Создаю документ так:
ЭтотОбъект.Записать();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗаявкаОснование", Объект.Ссылка);
Форма = ПолучитьФорму("Документ.Перевозка.ФормаОбъекта", ПараметрыФормы);
ДанныеФормы = Форма.Объект;
КнСоздатьПеревозкуНаСервере(ДанныеФормы,Объект.Ссылка);
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
Форма.Открыть();
Процедура КнСоздатьПеревозкуНаСервере(ДанныеФормы, ДокЗаявка)
ДокументПеревозка = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.Перевозка"));
//частично заполняю документ
ЗначениеВДанныеФормы(ДокументПеревозка,ДанныеФормы);
КонецПроцедуры
ПоказатьПосле этого пытался ПриСозданииНаСервере отловить ссылку, и добавить туда свежесозданный документ, но ничего не вышло. Я уверен есть более правильное решение. Подскажите пожалуйста, или киньте пример подобной ситуации.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Если я понимаю правильно и у вас на форме документа Заявка есть кнопка, которая создаёт документ Перевозка, ссылку на который вам нужно добавить в табличную часть Перевозки документа Заявка, зачем вам модуль документа Перевозка? У вас есть некая процедура, создающая документ. Если она работает и документ создаётся, значит в этой процедуре есть строка с текстом типа Ключевое слово для поиска "Записать". После этой строки для получения ссылки вам нужно что-то вроде Следует понимать что "НовыйДокументПеревозка" на самом деле может называться как угодно.
НовыйДокументПеревозка.Записать(РежимЗаписиДокумента.Проведение);
НовыйДокументПеревозка.Ссылка
(4) Решил задачу, коряво, но работает.
Модуль форму док Перевозка
Модуль форму док Перевозка
//получаю ссылку из параметра
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(Объект.Ссылка) и ЭтаФорма.Параметры.Свойство("ЗаявкаОснование") Тогда
Объект.ДокументОснование = ЭтаФорма.Параметры.ЗаявкаОснование;
КонецЕсли;
КонецПроцедуры
//добавляю запись в ТЧ_Перевозки
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
//добавляем Перевозку в Заявку
Если ЗначениеЗаполнено(Объект.ДокументОснование) и НЕ Объект.ДобавленВЗаявку Тогда
ЗаявкаОбъект = Объект.ДокументОснование.ПолучитьОбъект();
НовПеревозка = ЗаявкаОбъект.Перевозки.Добавить();
НовПеревозка.Документ = Объект.Ссылка;
Попытка
ЗаявкаОбъект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецПроцедуры
//Ставлю отметку, что запись уже была добавлена в Заявку
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если НЕ Объект.ПовторноеОткрытие Тогда
ТекущийОбъект.ДобавленВЗаявку = Истина;
КонецЕсли;
КонецПроцедуры
//Проверка на повторное открытие, чтобы по многу раз не добавлять запись.
&НаКлиенте
Процедура ПриПовторномОткрытии()
Объект.ПовторноеОткрытие = Истина;
КонецПроцедуры
Показать
(10)
//Создание док. Перевозка
&НаКлиенте
Процедура КнСоздатьПеревозку(Команда)
ЭтотОбъект.Записать();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗаявкаОснование", Объект.Ссылка);
Форма = ПолучитьФорму("Документ.Перевозка.ФормаОбъекта", ПараметрыФормы);
ДанныеФормы = Форма.Объект;
КнСоздатьПеревозкуНаСервере(ДанныеФормы,Объект.Ссылка);
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
Форма.Открыть();
КонецПроцедуры
&НаСервере
Процедура КнСоздатьПеревозкуНаСервере(ДанныеФормы, ДокЗаявка)
ДокументПеревозка = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.Перевозка"));
//заполнение
ЗначениеВДанныеФормы(ДокументПеревозка,ДанныеФормы);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот