Доброе утро.
Цитата с ИТС:
Но что если мне нужно сначала получить форму, потом заполнить некий реквизит, а уже затем заполнить эту форму на основании? (разумеется, в расширении типовой обработки заполнения я внесу правки вида "если ЗначениеЗаполнено(МойРеквизит) тогда..."
Как быть? При этом, конечно, мне нужно обойтись без записи объекта, а просто открыть форму для пользователя, где уже пользователь примет решение, записывать объект или нет.
Или в данном случае решения это обработку заполнения свою писать/редактировать уже заполненную форму как нужно?
Цитата с ИТС:
Скрытый текст |
---|
Обычно, в большинстве случаев когда объект вводится на основании, нужно открыть пользователю форму нового объекта, который введен на основании какого-то объекта. В этом случае достаточно просто открыть форму и передать туда параметр Основание:
ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка); ОткрытьФорму("Документ.ПриходТовара.ФормаОбъекта", ПараметрыФормы); |
Но что если мне нужно сначала получить форму, потом заполнить некий реквизит, а уже затем заполнить эту форму на основании? (разумеется, в расширении типовой обработки заполнения я внесу правки вида "если ЗначениеЗаполнено(МойРеквизит) тогда..."
Как быть? При этом, конечно, мне нужно обойтись без записи объекта, а просто открыть форму для пользователя, где уже пользователь примет решение, записывать объект или нет.
ФормаДокумента = ПолучитьФорму("Документ.ЗаказКлиента.ФормаОбъекта", , ЭтотОбъект, Истина);
ФормаДокумента.Объект.МойРеквизит = ЗначениеМоегоРеквизита;
???
Или в данном случае решения это обработку заполнения свою писать/редактировать уже заполненную форму как нужно?
По теме из базы знаний
- 1С Документооборот: Создание связанных документов по настройкам связей
- Создание нескольких документов на основании одного с открытием созданных документов
- Пример создания документа с движениями в ERP 2.5.7
- Создание платежных поручений по удержаниям (алименты, исполнительные листы) в БП 3.0
- Создание документа Передача сырья в переработку на основании Поступления товаров и услуг
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Но насколько я понимаю, типовой код не предназначен для этого.
Выходит, мне нужно будет в расширении перед данной процедурой обработать мою структуру из данных заполнения и записать значение реквизита в реквизит формы, а сами данные заполнения заполнить уже моим документом?
Но насколько я понимаю, типовой код не предназначен для этого.
Выходит, мне нужно будет в расширении перед данной процедурой обработать мою структуру из данных заполнения и записать значение реквизита в реквизит формы, а сами данные заполнения заполнить уже моим документом?
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
Если ТипДанныхЗаполнения = Тип("Структура") Тогда
ЗаполнитьДокументПоОтбору(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.Партнеры") Тогда
ЗаполнитьДокументНаОснованииПартнера(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СделкиСКлиентами") Тогда
ЗаполнитьДокументНаОснованииСделкиПоПродаже(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.КоммерческоеПредложениеКлиенту") Тогда
ЗаполнитьДокументНаОснованииКоммерческогоПредложенияКлиенту(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
ЗаполнитьДокументНаОснованииИндивидуальногоСоглашенияСКлиент ом(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаданиеТорговомуПредставителю") Тогда
ЗаполнитьДокументНаОснованииЗаданияТорговомуПредставителю(ДанныеЗаполнения);
КонецЕсли;
Показать
(9) Нет, это реквизит объекта. Галку эту поставил.
Написал вот такой код:
Но после исполнения кода значение "ФормаДокумента.Объект.МойРеквизит" не заполнено. Да и в начало процедуры "ОбработкаЗаполнения" у ЭтотОбъект значение моего реквизита пустое. Хотя значение передаю.
Написал вот такой код:
ЭлементыОтбора = Новый Структура("МойРеквизит", ЗначениеМоегоРеквизита);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Основание", Объект.Ссылка);
ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЭлементыОтбора);
ФормаДокумента = ПолучитьФорму("Документ.ЗаказКлиента.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект, Истина);
Но после исполнения кода значение "ФормаДокумента.Объект.МойРеквизит" не заполнено. Да и в начало процедуры "ОбработкаЗаполнения" у ЭтотОбъект значение моего реквизита пустое. Хотя значение передаю.
(10) да. поторопился. в типовых тоже программно обрабатывается. без кода - никак.
причем "Основание" в параметрах процедуры ОбработкаЗаполнения замещает "ЗначенияЗаполнения",
т.е. если передали только "ЗначенияЗаполнения", то в ДанныеЗаполнения будет наша структура, а если и то и другое, то будет "Основание".
И наши "ЗначенияЗаполнения" останутся только в параметрах в ПриСозданииНаСервере.
Был не прав.
причем "Основание" в параметрах процедуры ОбработкаЗаполнения замещает "ЗначенияЗаполнения",
т.е. если передали только "ЗначенияЗаполнения", то в ДанныеЗаполнения будет наша структура, а если и то и другое, то будет "Основание".
И наши "ЗначенияЗаполнения" останутся только в параметрах в ПриСозданииНаСервере.
Был не прав.
(1) Если у реквизита стоит свойство "Заполнять из данных заполнения", то можно через параметры открытия.
с итс
ЭлементыОтбора тут условно названо, смысла не меняет.
с итс
ЭлементыОтбора = Новый Структура("Поставщик, Склад", СсылкаНаПоставщика, СсылкаНаСклад);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);
ОткрытьФорму("Документ.Накладная.ФормаОбъекта", ПараметрыФормы);
(3)
Написал такой код, но значение моего реквизита не передается:
Впрочем, в (2) был подсказан хороший метод, сделаю так.
Спасибо большое за помощь)
Написал такой код, но значение моего реквизита не передается:
ЭлементыОтбора = Новый Структура("МойРеквизит", ЗначениеМоегоРеквизита);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Основание", Объект.Ссылка);
ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЭлементыОтбора);
ФормаДокумента = ПолучитьФорму("Документ.ЗаказКлиента.ФормаОбъекта", ПараметрыФормы, ЭтотОбъект, Истина);
Впрочем, в (2) был подсказан хороший метод, сделаю так.
Спасибо большое за помощь)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот