Имя: Пароль:
1C
1С v8
Открыть форму нового документа в управляемой форме
0 Мимохожий Однако
 
23.10.15
22:10
Заказ = Документы.ЗаказПоставщику.СоздатьДокумент();
Заказ.Заполнить(ДанныеЗаполнения);
Заказ.ПолучитьФорму("ФормаДокумента").Открыть();

При этом документ открывается заполненным, но на форме всё выглядит криво.Подозреваю, что последняя строка неверная.
..
Подскажите правильный код для управляемой формы.
1 bazvan
 
23.10.15
22:11
(0) а как "выглядит" "криво"
2 Мимохожий Однако
 
23.10.15
22:21
Сверху вниз отображаются все реквизиты шапки, потом две табличные части друг под дружкой. Такое впечатление, что ссылка на форму с именем "ФормаДокумента" бесполезная или не срабатывает. Если документ перед открытием записать и потом открыть, то он открывается нормально. Но нет желания записывать.
В СП есть такая фраза."В управляемом приложении не следует выполнять программное открытие и закрытие одной и той же формы в одном вызове встроенного языка." С этим спорить трудно, но не придумал и не нашёл пока подсказки, как выполнить эту рекомендацию.
3 Мимохожий Однако
 
23.10.15
22:25
Возможно, надо этот код убрать из модуля внешней обработки и переместить в модуль формы.
4 RomanYS
 
23.10.15
22:46
ОткрытьФорму("Документ.Документ1.ФормаОбъекта", Новый Структура("ЗначенияЗаполнения", ДанныеЗаполнения));
5 Мимохожий Однако
 
23.10.15
22:58
В результате получил следующий рабочий код
.&НаКлиенте
Процедура ВыполнитьСейчас(Команда)
    
    ДанныеЗаполнения = ВернутьДанныеЗаполнения();
    СтруктураПараметры = Новый Структура;
    СтруктураПараметры.Вставить("Основание", ДанныеЗаполнения);
    ОткрытьФорму("Документ.ЗаказПоставщику.ФормаОбъекта", СтруктураПараметры);
    
    Закрыть();
    
КонецПроцедуры
(4)Спасибо
6 RomanYS
 
23.10.15
23:05
(5) да перепутал, в обработку заполнения передается Основание.
Вопрос знатокам УФ, зачем там еще ЗначенияЗаполнения?
7 RomanYS
 
23.10.15
23:08
*(6) разобрался, можно заполнять реквизиты ФОРМЫ:
Тип: Структура.
Параметры заполнения нового объекта.
Ключ структуры - имя реквизита формы, значение - заполняемое значение.
8 RomanYS
 
23.10.15
23:22
*(7) только нифига не работает(

ЗначенияЗаполнения = Новый Структура("Реквизит1", "тест");
Форма = ОткрытьФорму("Документ.Документ1.ФормаОбъекта", Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения));

Реквизит1 - пустой
9 Мимохожий Однако
 
24.10.15
08:02
(8)Нюанс в том, что в переменную ЗначениеЗаполнения надо положить всю структуру документа вместе с табличными частями, а в самом документе должна быть процедура обработки заполнения. Именно в ней и начинает работать код.
10 RomanYS
 
24.10.15
09:16
(9) что-то ты меня путаешь: в обработку заполнения документа-объекта передается именно Основание.
А где и как обрабатывается ЗначениеЗаполнения непонятно. Если их надо явно обрабатывать кодом в форме, то зачем вообще нужен предопределенный реквизит: в параметры формы можно засунуть сколько угодно любых параметров и форме кодом их обработать.
11 Мимохожий Однако
 
24.10.15
09:45
Путать не хотел )) Расскажу подробнее.
Конфигурация Розница 2.1.8.9
в модуле объекта документа Заказ поставщику есть следующая процедура:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
.....
    ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("ОбработкаФормированиеЗаказов") Тогда
.....
    
    ИнициализироватьДокумент(ДанныеЗаполнения);
    
    ОбщегоНазначенияРТ.ПроверитьИспользованиеОрганизации(,,Организация);
    
КонецПроцедуры
я в ней ничего не менял.
..
а в моей процедуре в обработке ВернутьДанныеЗаполнения()я заполнил структуру создаваемого документа - и шапку, и табличную часть товары.
..
свою проблему я решил. Для других конфигураций, возможно, надо еще что-то дописывать.
12 RomanYS
 
24.10.15
13:31
(11) так ты в (5) используешь "Основание", а не "ЗначенияЗаполнения". Тут как раз всё понятно.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс