Имя: Пароль:
1C
1С v8
Заполнение ТЧ не записанного документа
0 Rastaman55
 
07.11.16
18:10
В процессе выполнения обработки есть необходимость открытия формы нового документа с заполненными данными, но документ не должен быть записать изначально.. это уже решит пользователь на свое усмотрение.
Реквизиты смог заполнить таким образом
СтруктураСвойств = Новый Структура("Организация, КонтрагентДебитор, КонтрагентКредитор", Организация, Контрагент, Контрагент);
ФормаЗаписи = ПолучитьФорму("Документ.КорректировкаДолга.ФормаОбъекта");
ЗаполнитьЗначенияСвойств(ФормаЗаписи,СтруктураСвойств,"Организация, КонтрагентДебитор, КонтрагентКредитор",);
ФормаЗаписи.Открыть();
Но не знаю как заполнять табличную часть в этом случае.
1 Cyberhawk
 
07.11.16
18:25
В обработке заполнения (в модуле объекта) для документа предусмотрена инициализация ТЧ из данных заполнения?
2 Rastaman55
 
07.11.16
18:30
кажется получилось, попробовал сделать как при создании документа
НоваяСтрока = ФормаЗаписи.СуммыДолга.Добавить();
НоваяСтрока.Сумма = ...
НоваяСтрока.ДоговорКонтрагента= ...
и так для каждой строки.
На форме появились данные.
3 Rastaman55
 
07.11.16
18:39
Процедура ОбработкаЗаполнения(Основание)
    
    Если ТипЗнч(Основание) = Тип("ДокументСсылка.КорректировкаДолга") Тогда
        ОрганизацияДебитор = ЗаполнениеДокументов.ПолучитьОрганизациюПоКонтрагенту(Основание.КонтрагентДебитор);
        Если НЕ ЗначениеЗаполнено(ОрганизацияДебитор) Тогда
            ОрганизацияКредитор = ЗаполнениеДокументов.ПолучитьОрганизациюПоКонтрагенту(Основание.КонтрагентКредитор);
            Если ЗначениеЗаполнено(ОрганизацияКредитор) Тогда
                Организация        = ОрганизацияКредитор;
                КонтрагентДебитор  = ЗаполнениеДокументов.ПолучитьКонтрагентаПоОрганизации(Основание.Организация);
                КонтрагентКредитор = Основание.КонтрагентДебитор;  
            Иначе
                Возврат;
            КонецЕсли;
        Иначе
            Организация = ОрганизацияДебитор;
            КонтрагентКредитор = ЗаполнениеДокументов.ПолучитьКонтрагентаПоОрганизации(Основание.Организация);
            КонтрагентДебитор  = Основание.КонтрагентКредитор;  
        КонецЕсли;
        
        Для каждого СтрокаОснования Из Основание.СуммыДолга Цикл
            НоваяСтрока = СуммыДолга.Добавить();
            НоваяСтрока.ВидЗадолженности        = ?(СтрокаОснования.ВидЗадолженности = Перечисления.ВидыЗадолженности.Дебиторская, Перечисления.ВидыЗадолженности.Кредиторская, Перечисления.ВидыЗадолженности.Дебиторская);            
            
            ТекКонтрагент =  ?(НоваяСтрока.ВидЗадолженности = Перечисления.ВидыЗадолженности.Дебиторская, КонтрагентДебитор, КонтрагентКредитор);
            
            Запрос = Новый Запрос;
            Запрос.УстановитьПараметр("Контрагент",   ТекКонтрагент);
            Запрос.УстановитьПараметр("Организация", Организация);
                
            Запрос.Текст = "
            |ВЫБРАТЬ
            |    Ссылка
            |ИЗ Справочник.ДоговорыКонтрагентов
            |ГДЕ Справочник.ДоговорыКонтрагентов.Владелец = &Контрагент
            |     И Справочник.ДоговорыКонтрагентов.Организация = &Организация";
                
            Выборка = Запрос.Выполнить().Выбрать();
            Если Выборка.Следующий() Тогда
                НоваяСтрока.ДоговорКонтрагента = Выборка.Ссылка;
            Иначе
                ОбщегоНазначения.СообщитьОбОшибке("У контрагента " + ТекКонтрагент + " отсутствует договор на поставку с организацией " + Организация + ".");
            КонецЕсли;
            
            НоваяСтрока.КурсВзаиморасчетов      = СтрокаОснования.КурсВзаиморасчетов;
            НоваяСтрока.КратностьВзаиморасчетов = СтрокаОснования.КратностьВзаиморасчетов;
            НоваяСтрока.Сумма                   = СтрокаОснования.Сумма;
            
        КонецЦикла;
            
    КонецЕсли;

КонецПроцедуры
Это в модуле документа, имеется код который обходит все строки Основание.СуммыДолга, с заполнением документа то проблем нету, но ведь я заполнял именно форму так что думаю не имеет значения есть инциализация в модуле объекта или нет.
4 Мимохожий Однако
 
07.11.16
19:29
Ответь на (1). Какая конфигурация?
5 Cyberhawk
 
07.11.16
19:32
(3) Ну вот, код поддерживает заполнение ТЧ. Если ты правильно сформируешь массив структур, то код в (3) штатно отработает и форму ты сможешь открывать через "ОткрытьФорму"
Ошибка? Это не ошибка, это системная функция.