Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Заполнение ТЧ не записанного документа

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует