Создать СФ на основании РТиУ

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. arshanskiyav 32 21.06.15 13:20 Сейчас в теме
Доброго времени!

Есть внешняя обработка, она должна создавать СФ на основе РТиУ, и создает.
Но если открыть созданную СФ, то 1С вносит в нее какие-то изменения, какие, мне не понятно.

//Основание - ДокументСсылка.РеализацияТоваровИУслуг
//Номер - номер документа РеализацияТоваровИУслуг (они должны быть идентичны)
Процедура СоздатьНаОснованииСчетФактура(Основание,Номер)
    СсылкаСчетФактура=Документы.СчетФактураВыданный.ПолучитьСсылку(Новый УникальныйИдентификатор);
    
    НовыйДокументСчетФактура=Документы.СчетФактураВыданный.СоздатьДокумент();
    НовыйДокументСчетФактура.УстановитьСсылкуНового(СсылкаСчетФактура);
    НовыйДокументСчетФактура.Заполнить(Основание);
    НовыйДокументСчетФактура.Дата=ТекущаяДата();
    //НовыйДокументСчетФактура.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним,Истина);
    НовыйДокументСчетФактура.Номер=Номер;
    НовыйДокументСчетФактура.Проведен=Истина;
    
    Попытка
        НовыйДокументСчетФактура.Записать(РежимЗаписиДокумента.Проведение,);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    РекСФСсылка=СсылкаСчетФактура;
    Сообщить(СсылкаСчетФактура.ВидСчетаФактуры);
КонецПроцедуры

Показать


Собственно вопрос, что я упустил?
Спасибо.

ПыСы
На каком-то форуме пару лет назад сказали что ВидСФ не устанавливается, проверил, здесь устанавливается.
1С:Предприятие 8.2 (8.2.19.116)
"Управление торговлей", редакция 10.3 (10.3.31.3)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. E_Johnny 21.06.15 17:24 Сейчас в теме
попробуйте так:

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

                Попытка
                    ОбъектСчетаФактуры.Записать(РежимЗаписиДокумента.Проведение);
                Исключение
                    Сообщить(" - Документ не проведен " + ОбъектСчетаФактуры.Номер + " " + ОбъектСчетаФактуры.Дата + " " + ОбъектСчетаФактуры.Метаданные().Синоним, СтатусСообщения.Внимание);
                КонецПопытки;
Показать


пысы

зачем " НовыйДокументСчетФактура.Проведен=Истина;" ?
3. arshanskiyav 32 21.06.15 18:06 Сейчас в теме

попробуйте так:


Да, проблема оказалась в ДатаНомерДокументовОплаты, я вышел на это "анализом" процедуры "ПриОткрытии" формы документа "Счет-фактура выданный".

Добавил строки:
Если НовыйДокументСчетФактура.ДатаНомерДокументовОплаты.Количество() = 0 Тогда
    НовыйДокументСчетФактура.ДатаНомерДокументовОплаты.Добавить();
КонецЕсли;


И вроде нормально.

В Вашем варианте я не понимаю зачем эти строки:
ОбъектСчетаФактуры.ДатаНомерДокументовОплаты[0].ДатаПлатежноРасчетногоДокумента = ОбъектСчетаФактуры.ДатаПлатежноРасчетногоДокумента;
ОбъектСчетаФактуры.ДатаНомерДокументовОплаты[0].НомерПлатежноРасчетногоДокумента = ОбъектСчетаФактуры.НомерПлатежноРасчетногоДокумента;



Значение "ОбъектСчетаФактуры.ДатаПлатежноРасчетногоДокумента" и "ОбъектСчетаФактуры.НомерПлатежноРасчетногоДокумента" - Неопределенно же, или я не прав?

пысы

зачем " НовыйДокументСчетФактура.Проведен=Истина;" ?

Согласен, не надо.
4. E_Johnny 22.06.15 05:27 Сейчас в теме
ОбъектСчетаФактуры.ДатаНомерДокументовОплаты[0].ДатаПлатежноРасчетногоДокумента = ОбъектСчетаФактуры.ДатаПлатежноРасчетногоДокумента; ОбъектСчетаФактуры.ДатаНомерДокументовОплаты[0].НомерПлатежноРасчетногоДокумента = ОбъектСчетаФактуры.НомерПлатежноРасчетногоДокумента; 


эти реквизиты могут быть заполнены в СФ и соответственно их и надо перенести в табличную часть

посмотрите алгоритм
Процедура ОбработкаЗаполнения(Основание)

в СФ и поймете

в любом случае это не будет лишним.
Оставьте свое сообщение

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