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