Программный ввод на основании (управляемый интерфейс)

1. juntatalor 63 21.12.11 13:59 Сейчас в теме
Хочу программно вызвать создание нового документа - по логике:

ОткрытьФорму("Документ.ИмяДокумента.Форма.ФормаДокумента");

Но хочется заполнить его по данным заполнения. Столкнулся с тем, что требуемая процедура вызывается только на сервере:

ДокументОбъект.Заполнить(ДанныеЗаполнения);

Как выйти из положения? Как реализованы стандартные команды ввода на основании? Есть иной путь, кроме как явно передавать нужные мне данные на форму параметром и вызывать их анализ уже на форме?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SPID 21.12.11 14:06 Сейчас в теме
При открытии формы можно передать Структуру "ДанныеЗаполнения". А в форме приемнике проставить флаги "Заполнять из данных заполнения" у нужных реквизитов. Можно еще при создании формы на сервере анализировать новый это объект или нет, переданные параметры и выполнять обработку, запустить например процедуру Заполнить объекта.
3. juntatalor 63 21.12.11 14:11 Сейчас в теме
Так, вижу флаг "Заполнять из данных заполнения" для обычных реквизитов, у меня табличная часть, флага нет. Можно с ней что-то сделать, кроме

Можно еще при создании формы на сервере анализировать новый это объект или нет, переданные параметры и выполнять обработку, запустить например процедуру Заполнить объекта.
4. juntatalor 63 21.12.11 14:19 Сейчас в теме
Разобрался. Вызывать форму нужно так:

ОткрытьФорму("Документ.ИмяДокумента.Форма.ФормаДокумента", Новый Структура("ЗначенияЗаполнения", Новый Структура("Пар1", Знач1)));
_Vovik; yoyouser; fortran; 7OH; slights; Semargl; +6 Ответить
9. Alever 4 21.02.18 14:26 Сейчас в теме
(4)Огромное спасибо!
Столкнулся с такой задачей - надо было создать документ Расходная накладная на основании Поступления, но с таким условием что в табличной части поступления присутствуют множество контрагентов, на которых стоит бронь и надо было выводить доп форму со списком контрагентов в которой пользователь выбирал нужного и затем по данному контрагенту отбирались данные для заполнения. В итоге Ваш вариант очень помог:
&НаКлиенте
Процедура ТаблицаКонтрагентовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	ДанныеПоДокументу = ПолучитьСтруктуруЗаполнения();

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

КонецПроцедуры

Функция ПолучитьСтруктуруЗаполнения()
	
	СтруктураЗаполнения = Новый Структура();
	СтруктураЗаполнения.Вставить("ДокументОснованиеПродажа", ДокОснование);
	
	Возврат СтруктураЗаполнения;

КонецФункции
Показать
5. пользователь 21.12.11 14:22
Сообщение было скрыто модератором.
...
6. SPID 21.12.11 14:23 Сейчас в теме
угу.

Таблицу передать в параметрах не получится. Откуда (какими данными) у Вас заполняется таблица? Может передать параметры для заполнения таблицы, а в процедуре ПриСозданииНаСервере открываемой формы заполнять таблицу или вызывать процедуру Заполнить модуля объекта Например вроде так:
Процедура ПриСозданииНаСервере(...)

    Если ЗначениЗаполнено(Объект.Ссылка) И ЗначениеЗаполнено(Параметры.ДанныеЗаполнения) тогда //Это новый Объект и переданы какие то данные заполнения
// так же можно проверить на определенный парамет например: Параметр.ЭтоПрограммыйВводНаОсновании
        ТекОбъект = РеквизитФормыВЗначение(Объект);
        ТекОбъект.Заполнить(ДанныеЗаполнения);

    КонецЕсли;

КонецПроцедуры
Показать
7. juntatalor 63 21.12.11 14:29 Сейчас в теме
У меня для заполнения таблицы передается список значений, поэтому тут все нормально.

В моем случае не принципиально, но если нужно передать именно таблицу, то думаю можно пользоваться функцией стандартных конфиг ТаблицаЗначенийВМассив(ТаблицаЗначений).
8. Dadka_kmv 4 07.04.17 11:34 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот